1 #ifndef HOSTAP_80211_H 2 #define HOSTAP_80211_H 3 4 #include <linux/types.h> 5 #include <linux/skbuff.h> 6 #include <linux/netdevice.h> 7 8 struct hostap_ieee80211_mgmt { 9 __le16 frame_control; 10 __le16 duration; 11 u8 da[6]; 12 u8 sa[6]; 13 u8 bssid[6]; 14 __le16 seq_ctrl; 15 union { 16 struct { 17 __le16 auth_alg; 18 __le16 auth_transaction; 19 __le16 status_code; 20 /* possibly followed by Challenge text */ 21 u8 variable[0]; 22 } __packed auth; 23 struct { 24 __le16 reason_code; 25 } __packed deauth; 26 struct { 27 __le16 capab_info; 28 __le16 listen_interval; 29 /* followed by SSID and Supported rates */ 30 u8 variable[0]; 31 } __packed assoc_req; 32 struct { 33 __le16 capab_info; 34 __le16 status_code; 35 __le16 aid; 36 /* followed by Supported rates */ 37 u8 variable[0]; 38 } __packed assoc_resp, reassoc_resp; 39 struct { 40 __le16 capab_info; 41 __le16 listen_interval; 42 u8 current_ap[6]; 43 /* followed by SSID and Supported rates */ 44 u8 variable[0]; 45 } __packed reassoc_req; 46 struct { 47 __le16 reason_code; 48 } __packed disassoc; 49 struct { 50 } __packed probe_req; 51 struct { 52 u8 timestamp[8]; 53 __le16 beacon_int; 54 __le16 capab_info; 55 /* followed by some of SSID, Supported rates, 56 * FH Params, DS Params, CF Params, IBSS Params, TIM */ 57 u8 variable[0]; 58 } __packed beacon, probe_resp; 59 } u; 60 } __packed; 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 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); 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); 95 96 #endif /* HOSTAP_80211_H */ 97