Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / net / wireless / hostap / hostap_80211.h
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 */