HTC Vision (and others) have a Broadcom BCM4329 chip-set for WiFi/Bluetooth/FM-rx...
[bootloader-ap.git] / drivers / net / wireless / bcm4329 / include / proto / ethernet.h
diff --git a/drivers/net/wireless/bcm4329/include/proto/ethernet.h b/drivers/net/wireless/bcm4329/include/proto/ethernet.h
new file mode 100644 (file)
index 0000000..05530d5
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * From FreeBSD 2.2.7: Fundamental constants relating to ethernet.
+ *
+ * Copyright (C) 1999-2009, Broadcom Corporation
+ * 
+ *      Unless you and Broadcom execute a separate written software license
+ * agreement governing use of this software, this software is licensed to you
+ * under the terms of the GNU General Public License version 2 (the "GPL"),
+ * available at http://www.broadcom.com/licenses/GPLv2.php, with the
+ * following added to such license:
+ * 
+ *      As a special exception, the copyright holders of this software give you
+ * permission to link this software with independent modules, and to copy and
+ * distribute the resulting executable under terms of your choice, provided that
+ * you also meet, for each linked independent module, the terms and conditions of
+ * the license of that module.  An independent module is a module which is not
+ * derived from this software.  The special exception does not apply to any
+ * modifications of the software.
+ * 
+ *      Notwithstanding the above, under no circumstances may you combine this
+ * software in any way with any other Broadcom software provided under a license
+ * other than the GPL, without Broadcom's express prior written consent.
+ *
+ * $Id: ethernet.h,v 9.45.56.3 2009/08/15 00:51:27 Exp $
+ */
+
+
+#ifndef _NET_ETHERNET_H_             
+#define _NET_ETHERNET_H_
+
+#ifndef _TYPEDEFS_H_
+#include "typedefs.h"
+#endif
+
+
+#include <packed_section_start.h>
+
+
+
+#define        ETHER_ADDR_LEN          6
+
+
+#define        ETHER_TYPE_LEN          2
+
+
+#define        ETHER_CRC_LEN           4
+
+
+#define        ETHER_HDR_LEN           (ETHER_ADDR_LEN * 2 + ETHER_TYPE_LEN)
+
+
+#define        ETHER_MIN_LEN           64
+
+
+#define        ETHER_MIN_DATA          46
+
+
+#define        ETHER_MAX_LEN           1518
+
+
+#define        ETHER_MAX_DATA          1500
+
+
+#define ETHER_TYPE_MIN         0x0600          
+#define        ETHER_TYPE_IP           0x0800          
+#define ETHER_TYPE_ARP         0x0806          
+#define ETHER_TYPE_8021Q       0x8100          
+#define        ETHER_TYPE_BRCM         0x886c          
+#define        ETHER_TYPE_802_1X       0x888e          
+#ifdef BCMWPA2
+#define        ETHER_TYPE_802_1X_PREAUTH 0x88c7        
+#endif
+
+
+#define        ETHER_BRCM_SUBTYPE_LEN  4       
+#define        ETHER_BRCM_CRAM         1       
+
+
+#define ETHER_DEST_OFFSET      (0 * ETHER_ADDR_LEN)    
+#define ETHER_SRC_OFFSET       (1 * ETHER_ADDR_LEN)    
+#define ETHER_TYPE_OFFSET      (2 * ETHER_ADDR_LEN)    
+
+
+#define        ETHER_IS_VALID_LEN(foo) \
+       ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
+
+
+#ifndef __INCif_etherh       
+
+BWL_PRE_PACKED_STRUCT struct ether_header {
+       uint8   ether_dhost[ETHER_ADDR_LEN];
+       uint8   ether_shost[ETHER_ADDR_LEN];
+       uint16  ether_type;
+} BWL_POST_PACKED_STRUCT;
+
+
+BWL_PRE_PACKED_STRUCT struct   ether_addr {
+       uint8 octet[ETHER_ADDR_LEN];
+} BWL_POST_PACKED_STRUCT;
+#endif 
+
+
+#define ETHER_SET_LOCALADDR(ea)        (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] | 2))
+#define ETHER_IS_LOCALADDR(ea)         (((uint8 *)(ea))[0] & 2)
+#define ETHER_CLR_LOCALADDR(ea)        (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & 0xd))
+#define ETHER_TOGGLE_LOCALADDR(ea)     (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] ^ 2))
+
+
+#define ETHER_SET_UNICAST(ea)  (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & ~1))
+
+
+#define ETHER_ISMULTI(ea) (((const uint8 *)(ea))[0] & 1)
+
+
+
+#define        ether_cmp(a, b) (!(((short*)a)[0] == ((short*)b)[0]) | \
+                        !(((short*)a)[1] == ((short*)b)[1]) | \
+                        !(((short*)a)[2] == ((short*)b)[2]))
+
+
+#define        ether_copy(s, d) { \
+               ((short*)d)[0] = ((short*)s)[0]; \
+               ((short*)d)[1] = ((short*)s)[1]; \
+               ((short*)d)[2] = ((short*)s)[2]; }
+
+
+static const struct ether_addr ether_bcast = {{255, 255, 255, 255, 255, 255}};
+static const struct ether_addr ether_null = {{0, 0, 0, 0, 0, 0}};
+
+#define ETHER_ISBCAST(ea)      ((((uint8 *)(ea))[0] &          \
+                                 ((uint8 *)(ea))[1] &          \
+                                 ((uint8 *)(ea))[2] &          \
+                                 ((uint8 *)(ea))[3] &          \
+                                 ((uint8 *)(ea))[4] &          \
+                                 ((uint8 *)(ea))[5]) == 0xff)
+#define ETHER_ISNULLADDR(ea)   ((((uint8 *)(ea))[0] |          \
+                                 ((uint8 *)(ea))[1] |          \
+                                 ((uint8 *)(ea))[2] |          \
+                                 ((uint8 *)(ea))[3] |          \
+                                 ((uint8 *)(ea))[4] |          \
+                                 ((uint8 *)(ea))[5]) == 0)
+
+
+
+#include <packed_section_end.h>
+
+#endif