diff options
Diffstat (limited to 'drivers/net/wireless/bcmdhd/include/proto/ethernet.h')
-rw-r--r-- | drivers/net/wireless/bcmdhd/include/proto/ethernet.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcmdhd/include/proto/ethernet.h b/drivers/net/wireless/bcmdhd/include/proto/ethernet.h new file mode 100644 index 00000000000..6a6dd14c1bb --- /dev/null +++ b/drivers/net/wireless/bcmdhd/include/proto/ethernet.h | |||
@@ -0,0 +1,162 @@ | |||
1 | /* | ||
2 | * From FreeBSD 2.2.7: Fundamental constants relating to ethernet. | ||
3 | * | ||
4 | * Copyright (C) 1999-2011, 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.56 2009-10-15 22:54:58 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_802_1X_PREAUTH 0x88c7 | ||
71 | #define ETHER_TYPE_WAI 0x88b4 | ||
72 | |||
73 | |||
74 | |||
75 | #define ETHER_BRCM_SUBTYPE_LEN 4 | ||
76 | #define ETHER_BRCM_CRAM 1 | ||
77 | |||
78 | |||
79 | #define ETHER_DEST_OFFSET (0 * ETHER_ADDR_LEN) | ||
80 | #define ETHER_SRC_OFFSET (1 * ETHER_ADDR_LEN) | ||
81 | #define ETHER_TYPE_OFFSET (2 * ETHER_ADDR_LEN) | ||
82 | |||
83 | |||
84 | #define ETHER_IS_VALID_LEN(foo) \ | ||
85 | ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) | ||
86 | |||
87 | #define ETHER_FILL_MCAST_ADDR_FROM_IP(ea, mgrp_ip) { \ | ||
88 | ((uint8 *)ea)[0] = 0x01; \ | ||
89 | ((uint8 *)ea)[1] = 0x00; \ | ||
90 | ((uint8 *)ea)[2] = 0x5e; \ | ||
91 | ((uint8 *)ea)[3] = ((mgrp_ip) >> 16) & 0x7f; \ | ||
92 | ((uint8 *)ea)[4] = ((mgrp_ip) >> 8) & 0xff; \ | ||
93 | ((uint8 *)ea)[5] = ((mgrp_ip) >> 0) & 0xff; \ | ||
94 | } | ||
95 | |||
96 | #ifndef __INCif_etherh | ||
97 | |||
98 | BWL_PRE_PACKED_STRUCT struct ether_header { | ||
99 | uint8 ether_dhost[ETHER_ADDR_LEN]; | ||
100 | uint8 ether_shost[ETHER_ADDR_LEN]; | ||
101 | uint16 ether_type; | ||
102 | } BWL_POST_PACKED_STRUCT; | ||
103 | |||
104 | |||
105 | BWL_PRE_PACKED_STRUCT struct ether_addr { | ||
106 | uint8 octet[ETHER_ADDR_LEN]; | ||
107 | } BWL_POST_PACKED_STRUCT; | ||
108 | #endif | ||
109 | |||
110 | |||
111 | #define ETHER_SET_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] | 2)) | ||
112 | #define ETHER_IS_LOCALADDR(ea) (((uint8 *)(ea))[0] & 2) | ||
113 | #define ETHER_CLR_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & 0xd)) | ||
114 | #define ETHER_TOGGLE_LOCALADDR(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] ^ 2)) | ||
115 | |||
116 | |||
117 | #define ETHER_SET_UNICAST(ea) (((uint8 *)(ea))[0] = (((uint8 *)(ea))[0] & ~1)) | ||
118 | |||
119 | |||
120 | #define ETHER_ISMULTI(ea) (((const uint8 *)(ea))[0] & 1) | ||
121 | |||
122 | |||
123 | |||
124 | #define ether_cmp(a, b) (!(((short*)a)[0] == ((short*)b)[0]) | \ | ||
125 | !(((short*)a)[1] == ((short*)b)[1]) | \ | ||
126 | !(((short*)a)[2] == ((short*)b)[2])) | ||
127 | |||
128 | |||
129 | #define ether_copy(s, d) { \ | ||
130 | ((short*)d)[0] = ((short*)s)[0]; \ | ||
131 | ((short*)d)[1] = ((short*)s)[1]; \ | ||
132 | ((short*)d)[2] = ((short*)s)[2]; } | ||
133 | |||
134 | |||
135 | static const struct ether_addr ether_bcast = {{255, 255, 255, 255, 255, 255}}; | ||
136 | static const struct ether_addr ether_null = {{0, 0, 0, 0, 0, 0}}; | ||
137 | |||
138 | #define ETHER_ISBCAST(ea) ((((uint8 *)(ea))[0] & \ | ||
139 | ((uint8 *)(ea))[1] & \ | ||
140 | ((uint8 *)(ea))[2] & \ | ||
141 | ((uint8 *)(ea))[3] & \ | ||
142 | ((uint8 *)(ea))[4] & \ | ||
143 | ((uint8 *)(ea))[5]) == 0xff) | ||
144 | #define ETHER_ISNULLADDR(ea) ((((uint8 *)(ea))[0] | \ | ||
145 | ((uint8 *)(ea))[1] | \ | ||
146 | ((uint8 *)(ea))[2] | \ | ||
147 | ((uint8 *)(ea))[3] | \ | ||
148 | ((uint8 *)(ea))[4] | \ | ||
149 | ((uint8 *)(ea))[5]) == 0) | ||
150 | |||
151 | |||
152 | #define ETHER_MOVE_HDR(d, s) \ | ||
153 | do { \ | ||
154 | struct ether_header t; \ | ||
155 | t = *(struct ether_header *)(s); \ | ||
156 | *(struct ether_header *)(d) = t; \ | ||
157 | } while (0) | ||
158 | |||
159 | |||
160 | #include <packed_section_end.h> | ||
161 | |||
162 | #endif | ||