]>
Commit | Line | Data |
---|---|---|
00b3ed16 | 1 | /* p80211conv.h |
3ae3a747 SP |
2 | * |
3 | * Ether/802.11 conversions and packet buffer routines | |
4 | * | |
5 | * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. | |
6 | * -------------------------------------------------------------------- | |
7 | * | |
8 | * linux-wlan | |
9 | * | |
10 | * The contents of this file are subject to the Mozilla Public | |
11 | * License Version 1.1 (the "License"); you may not use this file | |
12 | * except in compliance with the License. You may obtain a copy of | |
13 | * the License at http://www.mozilla.org/MPL/ | |
14 | * | |
15 | * Software distributed under the License is distributed on an "AS | |
16 | * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | |
17 | * implied. See the License for the specific language governing | |
18 | * rights and limitations under the License. | |
19 | * | |
20 | * Alternatively, the contents of this file may be used under the | |
21 | * terms of the GNU Public License version 2 (the "GPL"), in which | |
22 | * case the provisions of the GPL are applicable instead of the | |
23 | * above. If you wish to allow the use of your version of this file | |
24 | * only under the terms of the GPL and not to allow others to use | |
25 | * your version of this file under the MPL, indicate your decision | |
26 | * by deleting the provisions above and replace them with the notice | |
27 | * and other provisions required by the GPL. If you do not delete | |
28 | * the provisions above, a recipient may use your version of this | |
29 | * file under either the MPL or the GPL. | |
30 | * | |
31 | * -------------------------------------------------------------------- | |
32 | * | |
33 | * Inquiries regarding the linux-wlan Open Source project can be | |
34 | * made directly to: | |
35 | * | |
36 | * AbsoluteValue Systems Inc. | |
37 | * info@linux-wlan.com | |
38 | * http://www.linux-wlan.com | |
39 | * | |
40 | * -------------------------------------------------------------------- | |
41 | * | |
42 | * Portions of the development of this software were funded by | |
43 | * Intersil Corporation as part of PRISM(R) chipset product development. | |
44 | * | |
45 | * -------------------------------------------------------------------- | |
46 | * | |
47 | * This file declares the functions, types and macros that perform | |
48 | * Ethernet to/from 802.11 frame conversions. | |
49 | * | |
50 | * -------------------------------------------------------------------- | |
51 | */ | |
00b3ed16 GKH |
52 | |
53 | #ifndef _LINUX_P80211CONV_H | |
54 | #define _LINUX_P80211CONV_H | |
55 | ||
00b3ed16 GKH |
56 | #define WLAN_IEEE_OUI_LEN 3 |
57 | ||
58 | #define WLAN_ETHCONV_ENCAP 1 | |
00b3ed16 GKH |
59 | #define WLAN_ETHCONV_8021h 3 |
60 | ||
00b3ed16 GKH |
61 | #define P80211CAPTURE_VERSION 0x80211001 |
62 | ||
51e4896a | 63 | #define P80211_FRMMETA_MAGIC 0x802110 |
00b3ed16 GKH |
64 | |
65 | #define P80211SKB_FRMMETA(s) \ | |
869c4b4a JM |
66 | (((((struct p80211_frmmeta *)((s)->cb))->magic) == \ |
67 | P80211_FRMMETA_MAGIC) ? \ | |
51e4896a | 68 | ((struct p80211_frmmeta *)((s)->cb)) : \ |
00b3ed16 GKH |
69 | (NULL)) |
70 | ||
71 | #define P80211SKB_RXMETA(s) \ | |
869c4b4a JM |
72 | (P80211SKB_FRMMETA((s)) ? P80211SKB_FRMMETA((s))->rx : \ |
73 | ((struct p80211_rxmeta *)(NULL))) | |
00b3ed16 | 74 | |
51e4896a | 75 | struct p80211_rxmeta { |
c979aec7 | 76 | struct wlandevice *wlandev; |
00b3ed16 | 77 | |
c979aec7 MM |
78 | u64 mactime; /* Hi-rez MAC-supplied time value */ |
79 | u64 hosttime; /* Best-rez host supplied time value */ | |
00b3ed16 | 80 | |
c979aec7 MM |
81 | unsigned int rxrate; /* Receive data rate in 100kbps */ |
82 | unsigned int priority; /* 0-15, 0=contention, 6=CF */ | |
83 | int signal; /* An SSI, see p80211netdev.h */ | |
84 | int noise; /* An SSI, see p80211netdev.h */ | |
85 | unsigned int channel; /* Receive channel (mostly for snifs) */ | |
86 | unsigned int preamble; /* P80211ENUM_preambletype_* */ | |
87 | unsigned int encoding; /* P80211ENUM_encoding_* */ | |
00b3ed16 | 88 | |
51e4896a | 89 | }; |
00b3ed16 | 90 | |
51e4896a | 91 | struct p80211_frmmeta { |
c979aec7 | 92 | unsigned int magic; |
51e4896a EH |
93 | struct p80211_rxmeta *rx; |
94 | }; | |
00b3ed16 GKH |
95 | |
96 | void p80211skb_free(struct wlandevice *wlandev, struct sk_buff *skb); | |
97 | int p80211skb_rxmeta_attach(struct wlandevice *wlandev, struct sk_buff *skb); | |
98 | void p80211skb_rxmeta_detach(struct sk_buff *skb); | |
99 | ||
00b3ed16 GKH |
100 | /* |
101 | * Frame capture header. (See doc/capturefrm.txt) | |
102 | */ | |
51e4896a | 103 | struct p80211_caphdr { |
c979aec7 MM |
104 | u32 version; |
105 | u32 length; | |
106 | u64 mactime; | |
107 | u64 hosttime; | |
108 | u32 phytype; | |
109 | u32 channel; | |
110 | u32 datarate; | |
111 | u32 antenna; | |
112 | u32 priority; | |
113 | u32 ssi_type; | |
114 | s32 ssi_signal; | |
115 | s32 ssi_noise; | |
116 | u32 preamble; | |
117 | u32 encoding; | |
51e4896a | 118 | }; |
00b3ed16 GKH |
119 | |
120 | /* buffer free method pointer type */ | |
c979aec7 | 121 | typedef void (*freebuf_method_t) (void *buf, int size); |
00b3ed16 | 122 | |
51e4896a | 123 | struct p80211_metawep { |
c979aec7 | 124 | void *data; |
aaad4303 SP |
125 | u8 iv[4]; |
126 | u8 icv[4]; | |
51e4896a | 127 | }; |
00b3ed16 GKH |
128 | |
129 | /* local ether header type */ | |
51e4896a | 130 | struct wlan_ethhdr { |
242850f4 AB |
131 | u8 daddr[ETH_ALEN]; |
132 | u8 saddr[ETH_ALEN]; | |
606ea2bd | 133 | __be16 type; |
7d3864d1 | 134 | } __packed; |
00b3ed16 GKH |
135 | |
136 | /* local llc header type */ | |
51e4896a | 137 | struct wlan_llc { |
c979aec7 MM |
138 | u8 dsap; |
139 | u8 ssap; | |
140 | u8 ctl; | |
7d3864d1 | 141 | } __packed; |
00b3ed16 GKH |
142 | |
143 | /* local snap header type */ | |
51e4896a | 144 | struct wlan_snap { |
c979aec7 | 145 | u8 oui[WLAN_IEEE_OUI_LEN]; |
606ea2bd | 146 | __be16 type; |
7d3864d1 | 147 | } __packed; |
00b3ed16 GKH |
148 | |
149 | /* Circular include trick */ | |
150 | struct wlandevice; | |
151 | ||
c979aec7 MM |
152 | int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, |
153 | struct sk_buff *skb); | |
154 | int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, | |
93df38e5 | 155 | struct sk_buff *skb, union p80211_hdr *p80211_hdr, |
51e4896a | 156 | struct p80211_metawep *p80211_wep); |
00b3ed16 | 157 | |
aaad4303 | 158 | int p80211_stt_findproto(u16 proto); |
00b3ed16 GKH |
159 | |
160 | #endif |