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