Commit | Line | Data |
---|---|---|
00b3ed16 GKH |
1 | /* p80211conv.h |
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 | */ | |
52 | ||
53 | #ifndef _LINUX_P80211CONV_H | |
54 | #define _LINUX_P80211CONV_H | |
55 | ||
00b3ed16 GKH |
56 | #define WLAN_ETHADDR_LEN 6 |
57 | #define WLAN_IEEE_OUI_LEN 3 | |
58 | ||
59 | #define WLAN_ETHCONV_ENCAP 1 | |
00b3ed16 GKH |
60 | #define WLAN_ETHCONV_8021h 3 |
61 | ||
00b3ed16 GKH |
62 | #define WLAN_ETHHDR_LEN 14 |
63 | ||
64 | #define P80211CAPTURE_VERSION 0x80211001 | |
65 | ||
00b3ed16 GKH |
66 | #define P80211_FRMMETA_MAGIC 0x802110 |
67 | ||
68 | #define P80211SKB_FRMMETA(s) \ | |
c979aec7 MM |
69 | (((((p80211_frmmeta_t *)((s)->cb))->magic) == P80211_FRMMETA_MAGIC) ? \ |
70 | ((p80211_frmmeta_t *)((s)->cb)) : \ | |
00b3ed16 GKH |
71 | (NULL)) |
72 | ||
73 | #define P80211SKB_RXMETA(s) \ | |
c979aec7 | 74 | (P80211SKB_FRMMETA((s)) ? P80211SKB_FRMMETA((s))->rx : ((p80211_rxmeta_t *)(NULL))) |
00b3ed16 | 75 | |
c979aec7 MM |
76 | typedef struct p80211_rxmeta { |
77 | struct wlandevice *wlandev; | |
00b3ed16 | 78 | |
c979aec7 MM |
79 | u64 mactime; /* Hi-rez MAC-supplied time value */ |
80 | u64 hosttime; /* Best-rez host supplied time value */ | |
00b3ed16 | 81 | |
c979aec7 MM |
82 | unsigned int rxrate; /* Receive data rate in 100kbps */ |
83 | unsigned int priority; /* 0-15, 0=contention, 6=CF */ | |
84 | int signal; /* An SSI, see p80211netdev.h */ | |
85 | int noise; /* An SSI, see p80211netdev.h */ | |
86 | unsigned int channel; /* Receive channel (mostly for snifs) */ | |
87 | unsigned int preamble; /* P80211ENUM_preambletype_* */ | |
88 | unsigned int encoding; /* P80211ENUM_encoding_* */ | |
00b3ed16 GKH |
89 | |
90 | } p80211_rxmeta_t; | |
91 | ||
c979aec7 MM |
92 | typedef struct p80211_frmmeta { |
93 | unsigned int magic; | |
94 | p80211_rxmeta_t *rx; | |
00b3ed16 GKH |
95 | } p80211_frmmeta_t; |
96 | ||
97 | void p80211skb_free(struct wlandevice *wlandev, struct sk_buff *skb); | |
98 | int p80211skb_rxmeta_attach(struct wlandevice *wlandev, struct sk_buff *skb); | |
99 | void p80211skb_rxmeta_detach(struct sk_buff *skb); | |
100 | ||
00b3ed16 GKH |
101 | /* |
102 | * Frame capture header. (See doc/capturefrm.txt) | |
103 | */ | |
c979aec7 MM |
104 | typedef struct p80211_caphdr { |
105 | u32 version; | |
106 | u32 length; | |
107 | u64 mactime; | |
108 | u64 hosttime; | |
109 | u32 phytype; | |
110 | u32 channel; | |
111 | u32 datarate; | |
112 | u32 antenna; | |
113 | u32 priority; | |
114 | u32 ssi_type; | |
115 | s32 ssi_signal; | |
116 | s32 ssi_noise; | |
117 | u32 preamble; | |
118 | u32 encoding; | |
00b3ed16 GKH |
119 | } p80211_caphdr_t; |
120 | ||
121 | /* buffer free method pointer type */ | |
c979aec7 | 122 | typedef void (*freebuf_method_t) (void *buf, int size); |
00b3ed16 GKH |
123 | |
124 | typedef struct p80211_metawep { | |
c979aec7 | 125 | void *data; |
aaad4303 SP |
126 | u8 iv[4]; |
127 | u8 icv[4]; | |
00b3ed16 GKH |
128 | } p80211_metawep_t; |
129 | ||
130 | /* local ether header type */ | |
c979aec7 MM |
131 | typedef struct wlan_ethhdr { |
132 | u8 daddr[WLAN_ETHADDR_LEN]; | |
133 | u8 saddr[WLAN_ETHADDR_LEN]; | |
134 | u16 type; | |
135 | } __attribute__ ((packed)) wlan_ethhdr_t; | |
00b3ed16 GKH |
136 | |
137 | /* local llc header type */ | |
c979aec7 MM |
138 | typedef struct wlan_llc { |
139 | u8 dsap; | |
140 | u8 ssap; | |
141 | u8 ctl; | |
142 | } __attribute__ ((packed)) wlan_llc_t; | |
00b3ed16 GKH |
143 | |
144 | /* local snap header type */ | |
c979aec7 MM |
145 | typedef struct wlan_snap { |
146 | u8 oui[WLAN_IEEE_OUI_LEN]; | |
147 | u16 type; | |
148 | } __attribute__ ((packed)) wlan_snap_t; | |
00b3ed16 GKH |
149 | |
150 | /* Circular include trick */ | |
151 | struct wlandevice; | |
152 | ||
c979aec7 MM |
153 | int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, |
154 | struct sk_buff *skb); | |
155 | int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, | |
75f49e07 MT |
156 | struct sk_buff *skb, p80211_hdr_t * p80211_hdr, |
157 | p80211_metawep_t * p80211_wep); | |
00b3ed16 | 158 | |
aaad4303 | 159 | int p80211_stt_findproto(u16 proto); |
00b3ed16 GKH |
160 | |
161 | #endif |