| Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 1 | #ifndef HOSTAP_80211_H |
| 2 | #define HOSTAP_80211_H |
| 3 | |
| Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 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, |
| Jouni Malinen | 62fe7e3 | 2005-07-30 20:43:20 -0700 | [diff] [blame] | 93 | struct ieee80211_crypt_data *crypt); |
| Jouni Malinen | ff1d276 | 2005-05-12 22:54:16 -0400 | [diff] [blame] | 94 | int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev); |
| 95 | |
| 96 | #endif /* HOSTAP_80211_H */ |