diff options
Diffstat (limited to 'drivers/net/wireless/bcm4329/include/proto/ethernet.h')
-rw-r--r-- | drivers/net/wireless/bcm4329/include/proto/ethernet.h | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcm4329/include/proto/ethernet.h b/drivers/net/wireless/bcm4329/include/proto/ethernet.h new file mode 100644 index 00000000000..9ad2ea0c70f --- /dev/null +++ b/drivers/net/wireless/bcm4329/include/proto/ethernet.h | |||
@@ -0,0 +1,148 @@ | |||
1 | /* | ||
2 | * From FreeBSD 2.2.7: Fundamental constants relating to ethernet. | ||
3 | * | ||
4 | * Copyright (C) 1999-2010, Broadcom Corporation | ||
5 | * | ||
6 | * Unless you and Broadcom execute a separate written software license | ||
7 | * agreement governing use of this software, this software is licensed to you | ||
8 | * under the terms of the GNU General Public License version 2 (the "GPL"), | ||
9 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | ||
10 | * following added to such license: | ||
11 | * | ||
12 | * As a special exception, the copyright holders of this software give you | ||
13 | * permission to link this software with independent modules, and to copy and | ||
14 | * distribute the resulting executable under terms of your choice, provided that | ||
15 | * you also meet, for each linked independent module, the terms and conditions of | ||
16 | * the license of that module. An independent module is a module which is not | ||
17 | * derived from this software. The special exception does not apply to any | ||
18 | * modifications of the software. | ||
19 | * | ||
20 | * Notwithstanding the above, under no circumstances may you combine this | ||
21 | * software in any way with any other Broadcom software provided under a license | ||
22 | * other than the GPL, without Broadcom's express prior written consent. | ||
23 | * | ||
24 | * $Id: ethernet.h,v 9.45.56.5 2010/02/22 22:04:36 Exp $ | ||
25 | */ | ||
26 | |||
27 | |||
28 | #ifndef _NET_ETHERNET_H_ | ||
29 | #define _NET_ETHERNET_H_ | ||
30 | |||
31 | #ifndef _TYPEDEFS_H_ | ||
32 | #include "typedefs.h" | ||
33 | #endif | ||
34 | |||
35 | |||
36 | #include <packed_section_start.h> | ||
37 | |||
38 | |||
39 | |||
40 | #define ETHER_ADDR_LEN 6 | ||
41 | |||
42 | |||
43 | #define ETHER_TYPE_LEN 2 | ||
44 | |||
45 | |||
46 | #define ETHER_CRC_LEN 4 | ||
47 | |||
48 | |||
49 | #define ETHER_HDR_LEN (ETHER_ADDR_LEN * 2 + ETHER_TYPE_LEN) | ||
50 | |||
51 | |||
52 | #define ETHER_MIN_LEN 64 | ||
53 | |||
54 | |||
55 | #define ETHER_MIN_DATA 46 | ||
56 | |||
57 | |||
58 | #define ETHER_MAX_LEN 1518 | ||
59 | |||
60 | |||
61 | #define ETHER_MAX_DATA 1500 | ||
62 | |||
63 | |||
64 | #define ETHER_TYPE_MIN 0x0600 | ||
65 | #define ETHER_TYPE_IP 0x0800 | ||
66 | #define ETHER_TYPE_ARP 0x0806 | ||
67 | #define ETHER_TYPE_8021Q 0x8100 | ||
68 | #define ETHER_TYPE_BRCM 0x886c | ||
69 | #define ETHER_TYPE_802_1X 0x888e | ||
70 | #define ETHER_TYPE_WAI 0x88b4 | ||
71 | #ifdef BCMWPA2 | ||
72 | #define ETHER_TYPE_802_1X_PREAUTH 0x88c7 | ||
73 | #endif | ||
74 | |||
75 | |||
76 | #define ETHER_BRCM_SUBTYPE_LEN 4 | ||
77 | #define ETHER_BRCM_CRAM 1 | ||
78 | |||
79 | |||
80 | #define ETHER_DEST_OFFSET (0 * ETHER_ADDR_LEN) | ||
81 | #define ETHER_SRC_OFFSET (1 * ETHER_ADDR_LEN) | ||
82 | #define ETHER_TYPE_OFFSET (2 * ETHER_ADDR_LEN) | ||
83 | |||
84 | |||
85 | #define ETHER_IS_VALID_LEN(foo) \ | ||
86 | ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) | ||
87 | |||
88 | |||
89 | #ifndef __INCif_etherh | ||
90 | |||
91 | BWL_PRE_PACKED_STRUCT struct ether_header { | ||
92 | uint8 ether_dhost[ETHER_ADDR_LEN]; | ||
93 | uint8 ether_shost[ETHER_ADDR_LEN]; | ||
94 | uint16 ether_type; | ||
95 | } BWL_POST_PACKED_STRUCT; | ||
96 | |||
97 | |||
98 | BWL_PRE_PACKED_STRUCT struct ether_addr { | ||
99 | uint8 octet[ETHER_ADDR_LEN]; | ||
100 | } BWL_POST_PACKED_STRUCT; | ||
101 | #endif | ||
102 | |||
103 | |||
104 | #define ETHER_SET_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] | 2)) | ||
105 | #define ETHER_IS_LOCALADDR(ea) (((uint8 *)(ea))[0] & 2) | ||
106 | #define ETHER_CLR_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & 0xd)) | ||
107 | #define ETHER_TOGGLE_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] ^ 2)) | ||
108 | |||
109 | |||
110 | #define ETHER_SET_UNICAST(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & ~1)) | ||
111 | |||
112 | |||
113 | #define ETHER_ISMULTI(ea) (((const uint8 *)(ea))[0] & 1) | ||
114 | |||
115 | |||
116 | |||
117 | #define ether_cmp(a, b) (!(((short*)a)[0] == ((short*)b)[0]) | \ | ||
118 | !(((short*)a)[1] == ((short*)b)[1]) | \ | ||
119 | !(((short*)a)[2] == ((short*)b)[2])) | ||
120 | |||
121 | |||
122 | #define ether_copy(s, d) { \ | ||
123 | ((short*)d)[0] = ((short*)s)[0]; \ | ||
124 | ((short*)d)[1] = ((short*)s)[1]; \ | ||
125 | ((short*)d)[2] = ((short*)s)[2]; } | ||
126 | |||
127 | |||
128 | static const struct ether_addr ether_bcast = {{255, 255, 255, 255, 255, 255}}; | ||
129 | static const struct ether_addr ether_null = {{0, 0, 0, 0, 0, 0}}; | ||
130 | |||
131 | #define ETHER_ISBCAST(ea) ((((uint8 *)(ea))[0] & \ | ||
132 | ((uint8 *)(ea))[1] & \ | ||
133 | ((uint8 *)(ea))[2] & \ | ||
134 | ((uint8 *)(ea))[3] & \ | ||
135 | ((uint8 *)(ea))[4] & \ | ||
136 | ((uint8 *)(ea))[5]) == 0xff) | ||
137 | #define ETHER_ISNULLADDR(ea) ((((uint8 *)(ea))[0] | \ | ||
138 | ((uint8 *)(ea))[1] | \ | ||
139 | ((uint8 *)(ea))[2] | \ | ||
140 | ((uint8 *)(ea))[3] | \ | ||
141 | ((uint8 *)(ea))[4] | \ | ||
142 | ((uint8 *)(ea))[5]) == 0) | ||
143 | |||
144 | |||
145 | |||
146 | #include <packed_section_end.h> | ||
147 | |||
148 | #endif | ||