diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 104 |
1 files changed, 18 insertions, 86 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 400c09bea639..4c3d1f591bec 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -136,7 +136,6 @@ typedef unsigned __bitwise__ ieee80211_tx_result; | |||
136 | #define TX_DROP ((__force ieee80211_tx_result) 1u) | 136 | #define TX_DROP ((__force ieee80211_tx_result) 1u) |
137 | #define TX_QUEUED ((__force ieee80211_tx_result) 2u) | 137 | #define TX_QUEUED ((__force ieee80211_tx_result) 2u) |
138 | 138 | ||
139 | #define IEEE80211_TX_FRAGMENTED BIT(0) | ||
140 | #define IEEE80211_TX_UNICAST BIT(1) | 139 | #define IEEE80211_TX_UNICAST BIT(1) |
141 | #define IEEE80211_TX_PS_BUFFERED BIT(2) | 140 | #define IEEE80211_TX_PS_BUFFERED BIT(2) |
142 | 141 | ||
@@ -149,7 +148,6 @@ struct ieee80211_tx_data { | |||
149 | 148 | ||
150 | struct ieee80211_channel *channel; | 149 | struct ieee80211_channel *channel; |
151 | 150 | ||
152 | u16 ethertype; | ||
153 | unsigned int flags; | 151 | unsigned int flags; |
154 | }; | 152 | }; |
155 | 153 | ||
@@ -261,6 +259,7 @@ struct mesh_stats { | |||
261 | __u32 fwded_frames; /* Mesh total forwarded frames */ | 259 | __u32 fwded_frames; /* Mesh total forwarded frames */ |
262 | __u32 dropped_frames_ttl; /* Not transmitted since mesh_ttl == 0*/ | 260 | __u32 dropped_frames_ttl; /* Not transmitted since mesh_ttl == 0*/ |
263 | __u32 dropped_frames_no_route; /* Not transmitted, no route found */ | 261 | __u32 dropped_frames_no_route; /* Not transmitted, no route found */ |
262 | __u32 dropped_frames_congestion;/* Not forwarded due to congestion */ | ||
264 | atomic_t estab_plinks; | 263 | atomic_t estab_plinks; |
265 | }; | 264 | }; |
266 | 265 | ||
@@ -345,6 +344,7 @@ struct ieee80211_work { | |||
345 | struct { | 344 | struct { |
346 | struct sk_buff *frame; | 345 | struct sk_buff *frame; |
347 | u32 wait; | 346 | u32 wait; |
347 | bool status; | ||
348 | } offchan_tx; | 348 | } offchan_tx; |
349 | }; | 349 | }; |
350 | 350 | ||
@@ -514,6 +514,7 @@ struct ieee80211_if_mesh { | |||
514 | struct mesh_config mshcfg; | 514 | struct mesh_config mshcfg; |
515 | u32 mesh_seqnum; | 515 | u32 mesh_seqnum; |
516 | bool accepting_plinks; | 516 | bool accepting_plinks; |
517 | int num_gates; | ||
517 | const u8 *ie; | 518 | const u8 *ie; |
518 | u8 ie_len; | 519 | u8 ie_len; |
519 | enum { | 520 | enum { |
@@ -607,6 +608,8 @@ struct ieee80211_sub_if_data { | |||
607 | __be16 control_port_protocol; | 608 | __be16 control_port_protocol; |
608 | bool control_port_no_encrypt; | 609 | bool control_port_no_encrypt; |
609 | 610 | ||
611 | struct ieee80211_tx_queue_params tx_conf[IEEE80211_MAX_QUEUES]; | ||
612 | |||
610 | struct work_struct work; | 613 | struct work_struct work; |
611 | struct sk_buff_head skb_queue; | 614 | struct sk_buff_head skb_queue; |
612 | 615 | ||
@@ -660,6 +663,11 @@ enum sdata_queue_type { | |||
660 | enum { | 663 | enum { |
661 | IEEE80211_RX_MSG = 1, | 664 | IEEE80211_RX_MSG = 1, |
662 | IEEE80211_TX_STATUS_MSG = 2, | 665 | IEEE80211_TX_STATUS_MSG = 2, |
666 | IEEE80211_EOSP_MSG = 3, | ||
667 | }; | ||
668 | |||
669 | struct skb_eosp_msg_data { | ||
670 | u8 sta[ETH_ALEN], iface[ETH_ALEN]; | ||
663 | }; | 671 | }; |
664 | 672 | ||
665 | enum queue_stop_reason { | 673 | enum queue_stop_reason { |
@@ -669,6 +677,7 @@ enum queue_stop_reason { | |||
669 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION, | 677 | IEEE80211_QUEUE_STOP_REASON_AGGREGATION, |
670 | IEEE80211_QUEUE_STOP_REASON_SUSPEND, | 678 | IEEE80211_QUEUE_STOP_REASON_SUSPEND, |
671 | IEEE80211_QUEUE_STOP_REASON_SKB_ADD, | 679 | IEEE80211_QUEUE_STOP_REASON_SKB_ADD, |
680 | IEEE80211_QUEUE_STOP_REASON_CHTYPE_CHANGE, | ||
672 | }; | 681 | }; |
673 | 682 | ||
674 | #ifdef CONFIG_MAC80211_LEDS | 683 | #ifdef CONFIG_MAC80211_LEDS |
@@ -748,7 +757,6 @@ struct ieee80211_local { | |||
748 | struct workqueue_struct *workqueue; | 757 | struct workqueue_struct *workqueue; |
749 | 758 | ||
750 | unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES]; | 759 | unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES]; |
751 | struct ieee80211_tx_queue_params tx_conf[IEEE80211_MAX_QUEUES]; | ||
752 | /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ | 760 | /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ |
753 | spinlock_t queue_stop_reason_lock; | 761 | spinlock_t queue_stop_reason_lock; |
754 | 762 | ||
@@ -1002,7 +1010,6 @@ struct ieee80211_local { | |||
1002 | unsigned int hw_roc_duration; | 1010 | unsigned int hw_roc_duration; |
1003 | u32 hw_roc_cookie; | 1011 | u32 hw_roc_cookie; |
1004 | bool hw_roc_for_tx; | 1012 | bool hw_roc_for_tx; |
1005 | unsigned long hw_offchan_tx_cookie; | ||
1006 | 1013 | ||
1007 | /* dummy netdev for use w/ NAPI */ | 1014 | /* dummy netdev for use w/ NAPI */ |
1008 | struct net_device napi_dev; | 1015 | struct net_device napi_dev; |
@@ -1022,69 +1029,6 @@ struct ieee80211_ra_tid { | |||
1022 | u16 tid; | 1029 | u16 tid; |
1023 | }; | 1030 | }; |
1024 | 1031 | ||
1025 | /* Parsed Information Elements */ | ||
1026 | struct ieee802_11_elems { | ||
1027 | u8 *ie_start; | ||
1028 | size_t total_len; | ||
1029 | |||
1030 | /* pointers to IEs */ | ||
1031 | u8 *ssid; | ||
1032 | u8 *supp_rates; | ||
1033 | u8 *fh_params; | ||
1034 | u8 *ds_params; | ||
1035 | u8 *cf_params; | ||
1036 | struct ieee80211_tim_ie *tim; | ||
1037 | u8 *ibss_params; | ||
1038 | u8 *challenge; | ||
1039 | u8 *wpa; | ||
1040 | u8 *rsn; | ||
1041 | u8 *erp_info; | ||
1042 | u8 *ext_supp_rates; | ||
1043 | u8 *wmm_info; | ||
1044 | u8 *wmm_param; | ||
1045 | struct ieee80211_ht_cap *ht_cap_elem; | ||
1046 | struct ieee80211_ht_info *ht_info_elem; | ||
1047 | struct ieee80211_meshconf_ie *mesh_config; | ||
1048 | u8 *mesh_id; | ||
1049 | u8 *peer_link; | ||
1050 | u8 *preq; | ||
1051 | u8 *prep; | ||
1052 | u8 *perr; | ||
1053 | struct ieee80211_rann_ie *rann; | ||
1054 | u8 *ch_switch_elem; | ||
1055 | u8 *country_elem; | ||
1056 | u8 *pwr_constr_elem; | ||
1057 | u8 *quiet_elem; /* first quite element */ | ||
1058 | u8 *timeout_int; | ||
1059 | |||
1060 | /* length of them, respectively */ | ||
1061 | u8 ssid_len; | ||
1062 | u8 supp_rates_len; | ||
1063 | u8 fh_params_len; | ||
1064 | u8 ds_params_len; | ||
1065 | u8 cf_params_len; | ||
1066 | u8 tim_len; | ||
1067 | u8 ibss_params_len; | ||
1068 | u8 challenge_len; | ||
1069 | u8 wpa_len; | ||
1070 | u8 rsn_len; | ||
1071 | u8 erp_info_len; | ||
1072 | u8 ext_supp_rates_len; | ||
1073 | u8 wmm_info_len; | ||
1074 | u8 wmm_param_len; | ||
1075 | u8 mesh_id_len; | ||
1076 | u8 peer_link_len; | ||
1077 | u8 preq_len; | ||
1078 | u8 prep_len; | ||
1079 | u8 perr_len; | ||
1080 | u8 ch_switch_elem_len; | ||
1081 | u8 country_elem_len; | ||
1082 | u8 pwr_constr_elem_len; | ||
1083 | u8 quiet_elem_len; | ||
1084 | u8 num_of_quiet_elem; /* can be more the one */ | ||
1085 | u8 timeout_int_len; | ||
1086 | }; | ||
1087 | |||
1088 | static inline struct ieee80211_local *hw_to_local( | 1032 | static inline struct ieee80211_local *hw_to_local( |
1089 | struct ieee80211_hw *hw) | 1033 | struct ieee80211_hw *hw) |
1090 | { | 1034 | { |
@@ -1233,23 +1177,10 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb, | |||
1233 | netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, | 1177 | netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, |
1234 | struct net_device *dev); | 1178 | struct net_device *dev); |
1235 | 1179 | ||
1236 | /* | ||
1237 | * radiotap header for status frames | ||
1238 | */ | ||
1239 | struct ieee80211_tx_status_rtap_hdr { | ||
1240 | struct ieee80211_radiotap_header hdr; | ||
1241 | u8 rate; | ||
1242 | u8 padding_for_rate; | ||
1243 | __le16 tx_flags; | ||
1244 | u8 data_retries; | ||
1245 | } __packed; | ||
1246 | |||
1247 | |||
1248 | /* HT */ | 1180 | /* HT */ |
1249 | void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband, | 1181 | void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband, |
1250 | struct ieee80211_ht_cap *ht_cap_ie, | 1182 | struct ieee80211_ht_cap *ht_cap_ie, |
1251 | struct ieee80211_sta_ht_cap *ht_cap); | 1183 | struct ieee80211_sta_ht_cap *ht_cap); |
1252 | void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn); | ||
1253 | void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, | 1184 | void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, |
1254 | const u8 *da, u16 tid, | 1185 | const u8 *da, u16 tid, |
1255 | u16 initiator, u16 reason_code); | 1186 | u16 initiator, u16 reason_code); |
@@ -1333,6 +1264,7 @@ void mac80211_ev_michael_mic_failure(struct ieee80211_sub_if_data *sdata, int ke | |||
1333 | struct ieee80211_hdr *hdr, const u8 *tsc, | 1264 | struct ieee80211_hdr *hdr, const u8 *tsc, |
1334 | gfp_t gfp); | 1265 | gfp_t gfp); |
1335 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata); | 1266 | void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata); |
1267 | void ieee80211_xmit(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); | ||
1336 | void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); | 1268 | void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb); |
1337 | void ieee802_11_parse_elems(u8 *start, size_t len, | 1269 | void ieee802_11_parse_elems(u8 *start, size_t len, |
1338 | struct ieee802_11_elems *elems); | 1270 | struct ieee802_11_elems *elems); |
@@ -1364,11 +1296,11 @@ void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue, | |||
1364 | enum queue_stop_reason reason); | 1296 | enum queue_stop_reason reason); |
1365 | void ieee80211_add_pending_skb(struct ieee80211_local *local, | 1297 | void ieee80211_add_pending_skb(struct ieee80211_local *local, |
1366 | struct sk_buff *skb); | 1298 | struct sk_buff *skb); |
1367 | int ieee80211_add_pending_skbs(struct ieee80211_local *local, | 1299 | void ieee80211_add_pending_skbs(struct ieee80211_local *local, |
1368 | struct sk_buff_head *skbs); | 1300 | struct sk_buff_head *skbs); |
1369 | int ieee80211_add_pending_skbs_fn(struct ieee80211_local *local, | 1301 | void ieee80211_add_pending_skbs_fn(struct ieee80211_local *local, |
1370 | struct sk_buff_head *skbs, | 1302 | struct sk_buff_head *skbs, |
1371 | void (*fn)(void *data), void *data); | 1303 | void (*fn)(void *data), void *data); |
1372 | 1304 | ||
1373 | void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, | 1305 | void ieee80211_send_auth(struct ieee80211_sub_if_data *sdata, |
1374 | u16 transaction, u16 auth_alg, | 1306 | u16 transaction, u16 auth_alg, |
@@ -1386,7 +1318,7 @@ struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, | |||
1386 | void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, | 1318 | void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, |
1387 | const u8 *ssid, size_t ssid_len, | 1319 | const u8 *ssid, size_t ssid_len, |
1388 | const u8 *ie, size_t ie_len, | 1320 | const u8 *ie, size_t ie_len, |
1389 | u32 ratemask, bool directed); | 1321 | u32 ratemask, bool directed, bool no_cck); |
1390 | 1322 | ||
1391 | void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, | 1323 | void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, |
1392 | const size_t supp_rates_len, | 1324 | const size_t supp_rates_len, |