diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 79 |
1 files changed, 43 insertions, 36 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index d47e8c110b16..74594f012cd3 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -280,10 +280,6 @@ struct mesh_preq_queue { | |||
280 | 280 | ||
281 | enum ieee80211_work_type { | 281 | enum ieee80211_work_type { |
282 | IEEE80211_WORK_ABORT, | 282 | IEEE80211_WORK_ABORT, |
283 | IEEE80211_WORK_DIRECT_PROBE, | ||
284 | IEEE80211_WORK_AUTH, | ||
285 | IEEE80211_WORK_ASSOC_BEACON_WAIT, | ||
286 | IEEE80211_WORK_ASSOC, | ||
287 | IEEE80211_WORK_REMAIN_ON_CHANNEL, | 283 | IEEE80211_WORK_REMAIN_ON_CHANNEL, |
288 | IEEE80211_WORK_OFFCHANNEL_TX, | 284 | IEEE80211_WORK_OFFCHANNEL_TX, |
289 | }; | 285 | }; |
@@ -316,36 +312,10 @@ struct ieee80211_work { | |||
316 | unsigned long timeout; | 312 | unsigned long timeout; |
317 | enum ieee80211_work_type type; | 313 | enum ieee80211_work_type type; |
318 | 314 | ||
319 | u8 filter_ta[ETH_ALEN]; | ||
320 | |||
321 | bool started; | 315 | bool started; |
322 | 316 | ||
323 | union { | 317 | union { |
324 | struct { | 318 | struct { |
325 | int tries; | ||
326 | u16 algorithm, transaction; | ||
327 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
328 | u8 ssid_len; | ||
329 | u8 key[WLAN_KEY_LEN_WEP104]; | ||
330 | u8 key_len, key_idx; | ||
331 | bool privacy; | ||
332 | bool synced; | ||
333 | } probe_auth; | ||
334 | struct { | ||
335 | struct cfg80211_bss *bss; | ||
336 | const u8 *supp_rates; | ||
337 | const u8 *ht_information_ie; | ||
338 | enum ieee80211_smps_mode smps; | ||
339 | int tries; | ||
340 | u16 capability; | ||
341 | u8 prev_bssid[ETH_ALEN]; | ||
342 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
343 | u8 ssid_len; | ||
344 | u8 supp_rates_len; | ||
345 | bool wmm_used, use_11n, uapsd_used; | ||
346 | bool synced; | ||
347 | } assoc; | ||
348 | struct { | ||
349 | u32 duration; | 319 | u32 duration; |
350 | } remain; | 320 | } remain; |
351 | struct { | 321 | struct { |
@@ -355,9 +325,8 @@ struct ieee80211_work { | |||
355 | } offchan_tx; | 325 | } offchan_tx; |
356 | }; | 326 | }; |
357 | 327 | ||
358 | int ie_len; | 328 | size_t data_len; |
359 | /* must be last */ | 329 | u8 data[]; |
360 | u8 ie[0]; | ||
361 | }; | 330 | }; |
362 | 331 | ||
363 | /* flags used in struct ieee80211_if_managed.flags */ | 332 | /* flags used in struct ieee80211_if_managed.flags */ |
@@ -373,6 +342,43 @@ enum ieee80211_sta_flags { | |||
373 | IEEE80211_STA_RESET_SIGNAL_AVE = BIT(9), | 342 | IEEE80211_STA_RESET_SIGNAL_AVE = BIT(9), |
374 | }; | 343 | }; |
375 | 344 | ||
345 | struct ieee80211_mgd_auth_data { | ||
346 | struct cfg80211_bss *bss; | ||
347 | unsigned long timeout; | ||
348 | int tries; | ||
349 | u16 algorithm, expected_transaction; | ||
350 | |||
351 | u8 key[WLAN_KEY_LEN_WEP104]; | ||
352 | u8 key_len, key_idx; | ||
353 | bool synced; | ||
354 | bool done; | ||
355 | |||
356 | size_t ie_len; | ||
357 | u8 ie[]; | ||
358 | }; | ||
359 | |||
360 | struct ieee80211_mgd_assoc_data { | ||
361 | struct cfg80211_bss *bss; | ||
362 | const u8 *supp_rates; | ||
363 | const u8 *ht_information_ie; | ||
364 | |||
365 | unsigned long timeout; | ||
366 | int tries; | ||
367 | |||
368 | u16 capability; | ||
369 | u8 prev_bssid[ETH_ALEN]; | ||
370 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | ||
371 | u8 ssid_len; | ||
372 | u8 supp_rates_len; | ||
373 | bool wmm_used, uapsd_used; | ||
374 | bool have_beacon; | ||
375 | bool sent_assoc; | ||
376 | bool synced; | ||
377 | |||
378 | size_t ie_len; | ||
379 | u8 ie[]; | ||
380 | }; | ||
381 | |||
376 | struct ieee80211_if_managed { | 382 | struct ieee80211_if_managed { |
377 | struct timer_list timer; | 383 | struct timer_list timer; |
378 | struct timer_list conn_mon_timer; | 384 | struct timer_list conn_mon_timer; |
@@ -389,6 +395,8 @@ struct ieee80211_if_managed { | |||
389 | 395 | ||
390 | struct mutex mtx; | 396 | struct mutex mtx; |
391 | struct cfg80211_bss *associated; | 397 | struct cfg80211_bss *associated; |
398 | struct ieee80211_mgd_auth_data *auth_data; | ||
399 | struct ieee80211_mgd_assoc_data *assoc_data; | ||
392 | 400 | ||
393 | u8 bssid[ETH_ALEN]; | 401 | u8 bssid[ETH_ALEN]; |
394 | 402 | ||
@@ -470,6 +478,8 @@ struct ieee80211_if_ibss { | |||
470 | bool fixed_channel; | 478 | bool fixed_channel; |
471 | bool privacy; | 479 | bool privacy; |
472 | 480 | ||
481 | bool control_port; | ||
482 | |||
473 | u8 bssid[ETH_ALEN]; | 483 | u8 bssid[ETH_ALEN]; |
474 | u8 ssid[IEEE80211_MAX_SSID_LEN]; | 484 | u8 ssid[IEEE80211_MAX_SSID_LEN]; |
475 | u8 ssid_len, ie_len; | 485 | u8 ssid_len, ie_len; |
@@ -770,7 +780,6 @@ struct ieee80211_local { | |||
770 | struct list_head work_list; | 780 | struct list_head work_list; |
771 | struct timer_list work_timer; | 781 | struct timer_list work_timer; |
772 | struct work_struct work_work; | 782 | struct work_struct work_work; |
773 | struct sk_buff_head work_skb_queue; | ||
774 | 783 | ||
775 | /* | 784 | /* |
776 | * private workqueue to mac80211. mac80211 makes this accessible | 785 | * private workqueue to mac80211. mac80211 makes this accessible |
@@ -1437,8 +1446,6 @@ void ieee80211_work_init(struct ieee80211_local *local); | |||
1437 | void ieee80211_add_work(struct ieee80211_work *wk); | 1446 | void ieee80211_add_work(struct ieee80211_work *wk); |
1438 | void free_work(struct ieee80211_work *wk); | 1447 | void free_work(struct ieee80211_work *wk); |
1439 | void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata); | 1448 | void ieee80211_work_purge(struct ieee80211_sub_if_data *sdata); |
1440 | ieee80211_rx_result ieee80211_work_rx_mgmt(struct ieee80211_sub_if_data *sdata, | ||
1441 | struct sk_buff *skb); | ||
1442 | int ieee80211_wk_remain_on_channel(struct ieee80211_sub_if_data *sdata, | 1449 | int ieee80211_wk_remain_on_channel(struct ieee80211_sub_if_data *sdata, |
1443 | struct ieee80211_channel *chan, | 1450 | struct ieee80211_channel *chan, |
1444 | enum nl80211_channel_type channel_type, | 1451 | enum nl80211_channel_type channel_type, |