diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 43 |
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 | ||
422 | struct ieee80211_if_ibss { | 449 | struct 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 | */ |
519 | enum ieee80211_sub_if_data_flags { | 547 | enum 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); |
1350 | struct sk_buff *ieee80211_build_probe_req(struct ieee80211_sub_if_data *sdata, | 1383 | struct 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); | ||
1354 | void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst, | 1388 | void 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 | ||
1358 | void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata, | 1393 | void 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, |