diff options
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_80211.h')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_80211.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/drivers/net/wireless/hostap/hostap_80211.h b/drivers/net/wireless/hostap/hostap_80211.h new file mode 100644 index 000000000000..bf506f50d722 --- /dev/null +++ b/drivers/net/wireless/hostap/hostap_80211.h | |||
@@ -0,0 +1,96 @@ | |||
1 | #ifndef HOSTAP_80211_H | ||
2 | #define HOSTAP_80211_H | ||
3 | |||
4 | struct hostap_ieee80211_mgmt { | ||
5 | u16 frame_control; | ||
6 | u16 duration; | ||
7 | u8 da[6]; | ||
8 | u8 sa[6]; | ||
9 | u8 bssid[6]; | ||
10 | u16 seq_ctrl; | ||
11 | union { | ||
12 | struct { | ||
13 | u16 auth_alg; | ||
14 | u16 auth_transaction; | ||
15 | u16 status_code; | ||
16 | /* possibly followed by Challenge text */ | ||
17 | u8 variable[0]; | ||
18 | } __attribute__ ((packed)) auth; | ||
19 | struct { | ||
20 | u16 reason_code; | ||
21 | } __attribute__ ((packed)) deauth; | ||
22 | struct { | ||
23 | u16 capab_info; | ||
24 | u16 listen_interval; | ||
25 | /* followed by SSID and Supported rates */ | ||
26 | u8 variable[0]; | ||
27 | } __attribute__ ((packed)) assoc_req; | ||
28 | struct { | ||
29 | u16 capab_info; | ||
30 | u16 status_code; | ||
31 | u16 aid; | ||
32 | /* followed by Supported rates */ | ||
33 | u8 variable[0]; | ||
34 | } __attribute__ ((packed)) assoc_resp, reassoc_resp; | ||
35 | struct { | ||
36 | u16 capab_info; | ||
37 | u16 listen_interval; | ||
38 | u8 current_ap[6]; | ||
39 | /* followed by SSID and Supported rates */ | ||
40 | u8 variable[0]; | ||
41 | } __attribute__ ((packed)) reassoc_req; | ||
42 | struct { | ||
43 | u16 reason_code; | ||
44 | } __attribute__ ((packed)) disassoc; | ||
45 | struct { | ||
46 | } __attribute__ ((packed)) probe_req; | ||
47 | struct { | ||
48 | u8 timestamp[8]; | ||
49 | u16 beacon_int; | ||
50 | u16 capab_info; | ||
51 | /* followed by some of SSID, Supported rates, | ||
52 | * FH Params, DS Params, CF Params, IBSS Params, TIM */ | ||
53 | u8 variable[0]; | ||
54 | } __attribute__ ((packed)) beacon, probe_resp; | ||
55 | } u; | ||
56 | } __attribute__ ((packed)); | ||
57 | |||
58 | |||
59 | #define IEEE80211_MGMT_HDR_LEN 24 | ||
60 | #define IEEE80211_DATA_HDR3_LEN 24 | ||
61 | #define IEEE80211_DATA_HDR4_LEN 30 | ||
62 | |||
63 | |||
64 | struct hostap_80211_rx_status { | ||
65 | u32 mac_time; | ||
66 | u8 signal; | ||
67 | u8 noise; | ||
68 | u16 rate; /* in 100 kbps */ | ||
69 | }; | ||
70 | |||
71 | |||
72 | void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | ||
73 | struct hostap_80211_rx_status *rx_stats); | ||
74 | |||
75 | |||
76 | /* prism2_rx_80211 'type' argument */ | ||
77 | enum { | ||
78 | PRISM2_RX_MONITOR, PRISM2_RX_MGMT, PRISM2_RX_NON_ASSOC, | ||
79 | PRISM2_RX_NULLFUNC_ACK | ||
80 | }; | ||
81 | |||
82 | int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb, | ||
83 | struct hostap_80211_rx_status *rx_stats, int type); | ||
84 | void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | ||
85 | struct hostap_80211_rx_status *rx_stats); | ||
86 | void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, | ||
87 | struct hostap_80211_rx_status *rx_stats); | ||
88 | |||
89 | void hostap_dump_tx_80211(const char *name, struct sk_buff *skb); | ||
90 | int hostap_data_start_xmit(struct sk_buff *skb, struct net_device *dev); | ||
91 | int hostap_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev); | ||
92 | struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | ||
93 | struct ieee80211_crypt_data *crypt); | ||
94 | int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev); | ||
95 | |||
96 | #endif /* HOSTAP_80211_H */ | ||