Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 1 | #ifndef HOSTAP_80211_H |
| 2 | #define HOSTAP_80211_H |
| 3 | |
Adrian Bunk | 5fad5a2 | 2006-01-14 03:09:34 +0100 | [diff] [blame] | 4 | #include <linux/types.h> |
Dan Williams | 1ea893f | 2009-02-11 17:17:10 -0500 | [diff] [blame] | 5 | #include <linux/skbuff.h> |
Stephen Hemminger | d0cf9c0 | 2009-08-31 19:50:57 +0000 | [diff] [blame] | 6 | #include <linux/netdevice.h> |
Adrian Bunk | 5fad5a2 | 2006-01-14 03:09:34 +0100 | [diff] [blame] | 7 | |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 8 | struct hostap_ieee80211_mgmt { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 9 | __le16 frame_control; |
| 10 | __le16 duration; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 11 | u8 da[6]; |
| 12 | u8 sa[6]; |
| 13 | u8 bssid[6]; |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 14 | __le16 seq_ctrl; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 15 | union { |
| 16 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 17 | __le16 auth_alg; |
| 18 | __le16 auth_transaction; |
| 19 | __le16 status_code; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 20 | /* possibly followed by Challenge text */ |
| 21 | u8 variable[0]; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 22 | } __packed auth; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 23 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 24 | __le16 reason_code; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 25 | } __packed deauth; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 26 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 27 | __le16 capab_info; |
| 28 | __le16 listen_interval; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 29 | /* followed by SSID and Supported rates */ |
| 30 | u8 variable[0]; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 31 | } __packed assoc_req; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 32 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 33 | __le16 capab_info; |
| 34 | __le16 status_code; |
| 35 | __le16 aid; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 36 | /* followed by Supported rates */ |
| 37 | u8 variable[0]; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 38 | } __packed assoc_resp, reassoc_resp; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 39 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 40 | __le16 capab_info; |
| 41 | __le16 listen_interval; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 42 | u8 current_ap[6]; |
| 43 | /* followed by SSID and Supported rates */ |
| 44 | u8 variable[0]; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 45 | } __packed reassoc_req; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 46 | struct { |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 47 | __le16 reason_code; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 48 | } __packed disassoc; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 49 | struct { |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 50 | } __packed probe_req; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 51 | struct { |
| 52 | u8 timestamp[8]; |
Al Viro | 8a9faf3 | 2007-12-21 03:30:16 -0500 | [diff] [blame] | 53 | __le16 beacon_int; |
| 54 | __le16 capab_info; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 55 | /* followed by some of SSID, Supported rates, |
| 56 | * FH Params, DS Params, CF Params, IBSS Params, TIM */ |
| 57 | u8 variable[0]; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 58 | } __packed beacon, probe_resp; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 59 | } u; |
Eric Dumazet | ba2d358 | 2010-06-02 18:10:09 +0000 | [diff] [blame] | 60 | } __packed; |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 61 | |
| 62 | |
| 63 | #define IEEE80211_MGMT_HDR_LEN 24 |
| 64 | #define IEEE80211_DATA_HDR3_LEN 24 |
| 65 | #define IEEE80211_DATA_HDR4_LEN 30 |
| 66 | |
| 67 | |
| 68 | struct hostap_80211_rx_status { |
| 69 | u32 mac_time; |
| 70 | u8 signal; |
| 71 | u8 noise; |
| 72 | u16 rate; /* in 100 kbps */ |
| 73 | }; |
| 74 | |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 75 | /* prism2_rx_80211 'type' argument */ |
| 76 | enum { |
| 77 | PRISM2_RX_MONITOR, PRISM2_RX_MGMT, PRISM2_RX_NON_ASSOC, |
| 78 | PRISM2_RX_NULLFUNC_ACK |
| 79 | }; |
| 80 | |
| 81 | int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb, |
| 82 | struct hostap_80211_rx_status *rx_stats, int type); |
| 83 | void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, |
| 84 | struct hostap_80211_rx_status *rx_stats); |
| 85 | void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, |
| 86 | struct hostap_80211_rx_status *rx_stats); |
| 87 | |
| 88 | void hostap_dump_tx_80211(const char *name, struct sk_buff *skb); |
Stephen Hemminger | d0cf9c0 | 2009-08-31 19:50:57 +0000 | [diff] [blame] | 89 | netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb, |
| 90 | struct net_device *dev); |
| 91 | netdev_tx_t hostap_mgmt_start_xmit(struct sk_buff *skb, |
| 92 | struct net_device *dev); |
| 93 | netdev_tx_t hostap_master_start_xmit(struct sk_buff *skb, |
| 94 | struct net_device *dev); |
Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 95 | |
| 96 | #endif /* HOSTAP_80211_H */ |