2005-05-12 22:54:16 -04:00
# ifndef HOSTAP_80211_H
# define HOSTAP_80211_H
2006-01-14 03:09:34 +01:00
# include <linux/types.h>
2009-02-11 17:17:10 -05:00
# include <linux/skbuff.h>
2009-08-31 19:50:57 +00:00
# include <linux/netdevice.h>
2006-01-14 03:09:34 +01:00
2005-05-12 22:54:16 -04:00
struct hostap_ieee80211_mgmt {
2007-12-21 03:30:16 -05:00
__le16 frame_control ;
__le16 duration ;
2005-05-12 22:54:16 -04:00
u8 da [ 6 ] ;
u8 sa [ 6 ] ;
u8 bssid [ 6 ] ;
2007-12-21 03:30:16 -05:00
__le16 seq_ctrl ;
2005-05-12 22:54:16 -04:00
union {
struct {
2007-12-21 03:30:16 -05:00
__le16 auth_alg ;
__le16 auth_transaction ;
__le16 status_code ;
2005-05-12 22:54:16 -04:00
/* possibly followed by Challenge text */
u8 variable [ 0 ] ;
2010-06-02 18:10:09 +00:00
} __packed auth ;
2005-05-12 22:54:16 -04:00
struct {
2007-12-21 03:30:16 -05:00
__le16 reason_code ;
2010-06-02 18:10:09 +00:00
} __packed deauth ;
2005-05-12 22:54:16 -04:00
struct {
2007-12-21 03:30:16 -05:00
__le16 capab_info ;
__le16 listen_interval ;
2005-05-12 22:54:16 -04:00
/* followed by SSID and Supported rates */
u8 variable [ 0 ] ;
2010-06-02 18:10:09 +00:00
} __packed assoc_req ;
2005-05-12 22:54:16 -04:00
struct {
2007-12-21 03:30:16 -05:00
__le16 capab_info ;
__le16 status_code ;
__le16 aid ;
2005-05-12 22:54:16 -04:00
/* followed by Supported rates */
u8 variable [ 0 ] ;
2010-06-02 18:10:09 +00:00
} __packed assoc_resp , reassoc_resp ;
2005-05-12 22:54:16 -04:00
struct {
2007-12-21 03:30:16 -05:00
__le16 capab_info ;
__le16 listen_interval ;
2005-05-12 22:54:16 -04:00
u8 current_ap [ 6 ] ;
/* followed by SSID and Supported rates */
u8 variable [ 0 ] ;
2010-06-02 18:10:09 +00:00
} __packed reassoc_req ;
2005-05-12 22:54:16 -04:00
struct {
2007-12-21 03:30:16 -05:00
__le16 reason_code ;
2010-06-02 18:10:09 +00:00
} __packed disassoc ;
2005-05-12 22:54:16 -04:00
struct {
2010-06-02 18:10:09 +00:00
} __packed probe_req ;
2005-05-12 22:54:16 -04:00
struct {
u8 timestamp [ 8 ] ;
2007-12-21 03:30:16 -05:00
__le16 beacon_int ;
__le16 capab_info ;
2005-05-12 22:54:16 -04:00
/* followed by some of SSID, Supported rates,
* FH Params , DS Params , CF Params , IBSS Params , TIM */
u8 variable [ 0 ] ;
2010-06-02 18:10:09 +00:00
} __packed beacon , probe_resp ;
2005-05-12 22:54:16 -04:00
} u ;
2010-06-02 18:10:09 +00:00
} __packed ;
2005-05-12 22:54:16 -04:00
# define IEEE80211_MGMT_HDR_LEN 24
# define IEEE80211_DATA_HDR3_LEN 24
# define IEEE80211_DATA_HDR4_LEN 30
struct hostap_80211_rx_status {
u32 mac_time ;
u8 signal ;
u8 noise ;
u16 rate ; /* in 100 kbps */
} ;
/* prism2_rx_80211 'type' argument */
enum {
PRISM2_RX_MONITOR , PRISM2_RX_MGMT , PRISM2_RX_NON_ASSOC ,
PRISM2_RX_NULLFUNC_ACK
} ;
int prism2_rx_80211 ( struct net_device * dev , struct sk_buff * skb ,
struct hostap_80211_rx_status * rx_stats , int type ) ;
void hostap_80211_rx ( struct net_device * dev , struct sk_buff * skb ,
struct hostap_80211_rx_status * rx_stats ) ;
void hostap_dump_rx_80211 ( const char * name , struct sk_buff * skb ,
struct hostap_80211_rx_status * rx_stats ) ;
void hostap_dump_tx_80211 ( const char * name , struct sk_buff * skb ) ;
2009-08-31 19:50:57 +00:00
netdev_tx_t hostap_data_start_xmit ( struct sk_buff * skb ,
struct net_device * dev ) ;
netdev_tx_t hostap_mgmt_start_xmit ( struct sk_buff * skb ,
struct net_device * dev ) ;
netdev_tx_t hostap_master_start_xmit ( struct sk_buff * skb ,
struct net_device * dev ) ;
2005-05-12 22:54:16 -04:00
# endif /* HOSTAP_80211_H */