aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h43
1 files changed, 39 insertions, 4 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 090b0ec1e05..9fab144cc9f 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -202,7 +202,22 @@ struct ieee80211_rx_data {
202 struct ieee80211_key *key; 202 struct ieee80211_key *key;
203 203
204 unsigned int flags; 204 unsigned int flags;
205 int queue; 205
206 /*
207 * Index into sequence numbers array, 0..16
208 * since the last (16) is used for non-QoS,
209 * will be 16 on non-QoS frames.
210 */
211 int seqno_idx;
212
213 /*
214 * Index into the security IV/PN arrays, 0..16
215 * since the last (16) is used for CCMP-encrypted
216 * management frames, will be set to 16 on mgmt
217 * frames and 0 on non-QoS frames.
218 */
219 int security_idx;
220
206 u32 tkip_iv32; 221 u32 tkip_iv32;
207 u16 tkip_iv16; 222 u16 tkip_iv16;
208}; 223};
@@ -308,6 +323,7 @@ struct ieee80211_work {
308 u8 key[WLAN_KEY_LEN_WEP104]; 323 u8 key[WLAN_KEY_LEN_WEP104];
309 u8 key_len, key_idx; 324 u8 key_len, key_idx;
310 bool privacy; 325 bool privacy;
326 bool synced;
311 } probe_auth; 327 } probe_auth;
312 struct { 328 struct {
313 struct cfg80211_bss *bss; 329 struct cfg80211_bss *bss;
@@ -321,6 +337,7 @@ struct ieee80211_work {
321 u8 ssid_len; 337 u8 ssid_len;
322 u8 supp_rates_len; 338 u8 supp_rates_len;
323 bool wmm_used, use_11n, uapsd_used; 339 bool wmm_used, use_11n, uapsd_used;
340 bool synced;
324 } assoc; 341 } assoc;
325 struct { 342 struct {
326 u32 duration; 343 u32 duration;
@@ -328,6 +345,7 @@ struct ieee80211_work {
328 struct { 345 struct {
329 struct sk_buff *frame; 346 struct sk_buff *frame;
330 u32 wait; 347 u32 wait;
348 bool status;
331 } offchan_tx; 349 } offchan_tx;
332 }; 350 };
333 351
@@ -372,6 +390,7 @@ struct ieee80211_if_managed {
372 390
373 unsigned long timers_running; /* used for quiesce/restart */ 391 unsigned long timers_running; /* used for quiesce/restart */
374 bool powersave; /* powersave requested for this iface */ 392 bool powersave; /* powersave requested for this iface */
393 bool broken_ap; /* AP is broken -- turn off powersave */
375 enum ieee80211_smps_mode req_smps, /* requested smps mode */ 394 enum ieee80211_smps_mode req_smps, /* requested smps mode */
376 ap_smps, /* smps mode AP thinks we're in */ 395 ap_smps, /* smps mode AP thinks we're in */
377 driver_smps_mode; /* smps mode request */ 396 driver_smps_mode; /* smps mode request */
@@ -417,6 +436,14 @@ struct ieee80211_if_managed {
417 * generated for the current association. 436 * generated for the current association.
418 */ 437 */
419 int last_cqm_event_signal; 438 int last_cqm_event_signal;
439
440 /*
441 * State variables for keeping track of RSSI of the AP currently
442 * connected to and informing driver when RSSI has gone
443 * below/above a certain threshold.
444 */
445 int rssi_min_thold, rssi_max_thold;
446 int last_ave_beacon_signal;
420}; 447};
421 448
422struct ieee80211_if_ibss { 449struct ieee80211_if_ibss {
@@ -515,12 +542,14 @@ struct ieee80211_if_mesh {
515 * @IEEE80211_SDATA_DONT_BRIDGE_PACKETS: bridge packets between 542 * @IEEE80211_SDATA_DONT_BRIDGE_PACKETS: bridge packets between
516 * associated stations and deliver multicast frames both 543 * associated stations and deliver multicast frames both
517 * back to wireless media and to the local net stack. 544 * back to wireless media and to the local net stack.
545 * @IEEE80211_SDATA_DISCONNECT_RESUME: Disconnect after resume.
518 */ 546 */
519enum ieee80211_sub_if_data_flags { 547enum ieee80211_sub_if_data_flags {
520 IEEE80211_SDATA_ALLMULTI = BIT(0), 548 IEEE80211_SDATA_ALLMULTI = BIT(0),
521 IEEE80211_SDATA_PROMISC = BIT(1), 549 IEEE80211_SDATA_PROMISC = BIT(1),
522 IEEE80211_SDATA_OPERATING_GMODE = BIT(2), 550 IEEE80211_SDATA_OPERATING_GMODE = BIT(2),
523 IEEE80211_SDATA_DONT_BRIDGE_PACKETS = BIT(3), 551 IEEE80211_SDATA_DONT_BRIDGE_PACKETS = BIT(3),
552 IEEE80211_SDATA_DISCONNECT_RESUME = BIT(4),
524}; 553};
525 554
526/** 555/**
@@ -544,6 +573,9 @@ struct ieee80211_sub_if_data {
544 /* keys */ 573 /* keys */
545 struct list_head key_list; 574 struct list_head key_list;
546 575
576 /* count for keys needing tailroom space allocation */
577 int crypto_tx_tailroom_needed_cnt;
578
547 struct net_device *dev; 579 struct net_device *dev;
548 struct ieee80211_local *local; 580 struct ieee80211_local *local;
549 581
@@ -718,6 +750,7 @@ struct ieee80211_local {
718 struct workqueue_struct *workqueue; 750 struct workqueue_struct *workqueue;
719 751
720 unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES]; 752 unsigned long queue_stop_reasons[IEEE80211_MAX_QUEUES];
753 struct ieee80211_tx_queue_params tx_conf[IEEE80211_MAX_QUEUES];
721 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */ 754 /* also used to protect ampdu_ac_queue and amdpu_ac_stop_refcnt */
722 spinlock_t queue_stop_reason_lock; 755 spinlock_t queue_stop_reason_lock;
723 756
@@ -1348,12 +1381,14 @@ int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
1348 enum ieee80211_band band, u32 rate_mask, 1381 enum ieee80211_band band, u32 rate_mask,
1349 u8 channel); 1382 u8 channel);
1350struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, 1383struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata,
1351 u8 *dst, 1384 u8 *dst, u32 ratemask,
1352 const u8 *ssid, size_t ssid_len, 1385 const u8 *ssid, size_t ssid_len,
1353 const u8 *ie, size_t ie_len); 1386 const u8 *ie, size_t ie_len,
1387 bool directed);
1354void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, 1388void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
1355 const u8 *ssid, size_t ssid_len, 1389 const u8 *ssid, size_t ssid_len,
1356 const u8 *ie, size_t ie_len); 1390 const u8 *ie, size_t ie_len,
1391 u32 ratemask, bool directed);
1357 1392
1358void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, 1393void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata,
1359 const size_t supp_rates_len, 1394 const size_t supp_rates_len,