]> pilppa.org Git - linux-2.6-omap-h63xx.git/blob - drivers/net/wireless/hostap/hostap_80211.h
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
[linux-2.6-omap-h63xx.git] / drivers / net / wireless / hostap / hostap_80211.h
1 #ifndef HOSTAP_80211_H
2 #define HOSTAP_80211_H
3
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,
93                                    struct ieee80211_crypt_data *crypt);
94 int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev);
95
96 #endif /* HOSTAP_80211_H */