diff options
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 241533e1bc03..1a9e2da37a93 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -317,6 +317,7 @@ enum ieee80211_sta_flags { | |||
317 | IEEE80211_STA_MFP_ENABLED = BIT(6), | 317 | IEEE80211_STA_MFP_ENABLED = BIT(6), |
318 | IEEE80211_STA_UAPSD_ENABLED = BIT(7), | 318 | IEEE80211_STA_UAPSD_ENABLED = BIT(7), |
319 | IEEE80211_STA_NULLFUNC_ACKED = BIT(8), | 319 | IEEE80211_STA_NULLFUNC_ACKED = BIT(8), |
320 | IEEE80211_STA_RESET_SIGNAL_AVE = BIT(9), | ||
320 | }; | 321 | }; |
321 | 322 | ||
322 | struct ieee80211_if_managed { | 323 | struct ieee80211_if_managed { |
@@ -327,7 +328,7 @@ struct ieee80211_if_managed { | |||
327 | struct work_struct work; | 328 | struct work_struct work; |
328 | struct work_struct monitor_work; | 329 | struct work_struct monitor_work; |
329 | struct work_struct chswitch_work; | 330 | struct work_struct chswitch_work; |
330 | struct work_struct beacon_loss_work; | 331 | struct work_struct beacon_connection_loss_work; |
331 | 332 | ||
332 | unsigned long probe_timeout; | 333 | unsigned long probe_timeout; |
333 | int probe_send_count; | 334 | int probe_send_count; |
@@ -359,6 +360,24 @@ struct ieee80211_if_managed { | |||
359 | int wmm_last_param_set; | 360 | int wmm_last_param_set; |
360 | 361 | ||
361 | u8 use_4addr; | 362 | u8 use_4addr; |
363 | |||
364 | /* Signal strength from the last Beacon frame in the current BSS. */ | ||
365 | int last_beacon_signal; | ||
366 | |||
367 | /* | ||
368 | * Weighted average of the signal strength from Beacon frames in the | ||
369 | * current BSS. This is in units of 1/16 of the signal unit to maintain | ||
370 | * accuracy and to speed up calculations, i.e., the value need to be | ||
371 | * divided by 16 to get the actual value. | ||
372 | */ | ||
373 | int ave_beacon_signal; | ||
374 | |||
375 | /* | ||
376 | * Last Beacon frame signal strength average (ave_beacon_signal / 16) | ||
377 | * that triggered a cqm event. 0 indicates that no event has been | ||
378 | * generated for the current association. | ||
379 | */ | ||
380 | int last_cqm_event_signal; | ||
362 | }; | 381 | }; |
363 | 382 | ||
364 | enum ieee80211_ibss_request { | 383 | enum ieee80211_ibss_request { |
@@ -646,8 +665,7 @@ struct ieee80211_local { | |||
646 | struct work_struct recalc_smps; | 665 | struct work_struct recalc_smps; |
647 | 666 | ||
648 | /* aggregated multicast list */ | 667 | /* aggregated multicast list */ |
649 | struct dev_addr_list *mc_list; | 668 | struct netdev_hw_addr_list mc_list; |
650 | int mc_count; | ||
651 | 669 | ||
652 | bool tim_in_locked_section; /* see ieee80211_beacon_get() */ | 670 | bool tim_in_locked_section; /* see ieee80211_beacon_get() */ |
653 | 671 | ||
@@ -745,10 +763,11 @@ struct ieee80211_local { | |||
745 | int scan_channel_idx; | 763 | int scan_channel_idx; |
746 | int scan_ies_len; | 764 | int scan_ies_len; |
747 | 765 | ||
766 | unsigned long leave_oper_channel_time; | ||
748 | enum mac80211_scan_state next_scan_state; | 767 | enum mac80211_scan_state next_scan_state; |
749 | struct delayed_work scan_work; | 768 | struct delayed_work scan_work; |
750 | struct ieee80211_sub_if_data *scan_sdata; | 769 | struct ieee80211_sub_if_data *scan_sdata; |
751 | enum nl80211_channel_type oper_channel_type; | 770 | enum nl80211_channel_type _oper_channel_type; |
752 | struct ieee80211_channel *oper_channel, *csa_channel; | 771 | struct ieee80211_channel *oper_channel, *csa_channel; |
753 | 772 | ||
754 | /* Temporary remain-on-channel for off-channel operations */ | 773 | /* Temporary remain-on-channel for off-channel operations */ |
@@ -979,7 +998,8 @@ int ieee80211_max_network_latency(struct notifier_block *nb, | |||
979 | unsigned long data, void *dummy); | 998 | unsigned long data, void *dummy); |
980 | void ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata, | 999 | void ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata, |
981 | struct ieee80211_channel_sw_ie *sw_elem, | 1000 | struct ieee80211_channel_sw_ie *sw_elem, |
982 | struct ieee80211_bss *bss); | 1001 | struct ieee80211_bss *bss, |
1002 | u64 timestamp); | ||
983 | void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata); | 1003 | void ieee80211_sta_quiesce(struct ieee80211_sub_if_data *sdata); |
984 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); | 1004 | void ieee80211_sta_restart(struct ieee80211_sub_if_data *sdata); |
985 | 1005 | ||
@@ -1000,7 +1020,8 @@ void ieee80211_ibss_restart(struct ieee80211_sub_if_data *sdata); | |||
1000 | /* scan/BSS handling */ | 1020 | /* scan/BSS handling */ |
1001 | void ieee80211_scan_work(struct work_struct *work); | 1021 | void ieee80211_scan_work(struct work_struct *work); |
1002 | int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, | 1022 | int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, |
1003 | const u8 *ssid, u8 ssid_len); | 1023 | const u8 *ssid, u8 ssid_len, |
1024 | struct ieee80211_channel *chan); | ||
1004 | int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, | 1025 | int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, |
1005 | struct cfg80211_scan_request *req); | 1026 | struct cfg80211_scan_request *req); |
1006 | void ieee80211_scan_cancel(struct ieee80211_local *local); | 1027 | void ieee80211_scan_cancel(struct ieee80211_local *local); |
@@ -1078,8 +1099,6 @@ int ieee80211_send_smps_action(struct ieee80211_sub_if_data *sdata, | |||
1078 | enum ieee80211_smps_mode smps, const u8 *da, | 1099 | enum ieee80211_smps_mode smps, const u8 *da, |
1079 | const u8 *bssid); | 1100 | const u8 *bssid); |
1080 | 1101 | ||
1081 | void ieee80211_sta_stop_rx_ba_session(struct ieee80211_sub_if_data *sdata, u8 *da, | ||
1082 | u16 tid, u16 initiator, u16 reason); | ||
1083 | void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, | 1102 | void __ieee80211_stop_rx_ba_session(struct sta_info *sta, u16 tid, |
1084 | u16 initiator, u16 reason); | 1103 | u16 initiator, u16 reason); |
1085 | void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta); | 1104 | void ieee80211_sta_tear_down_BA_sessions(struct sta_info *sta); |
@@ -1155,7 +1174,7 @@ void ieee80211_send_nullfunc(struct ieee80211_local *local, | |||
1155 | int powersave); | 1174 | int powersave); |
1156 | void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata, | 1175 | void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata, |
1157 | struct ieee80211_hdr *hdr); | 1176 | struct ieee80211_hdr *hdr); |
1158 | void ieee80211_beacon_loss_work(struct work_struct *work); | 1177 | void ieee80211_beacon_connection_loss_work(struct work_struct *work); |
1159 | 1178 | ||
1160 | void ieee80211_wake_queues_by_reason(struct ieee80211_hw *hw, | 1179 | void ieee80211_wake_queues_by_reason(struct ieee80211_hw *hw, |
1161 | enum queue_stop_reason reason); | 1180 | enum queue_stop_reason reason); |
@@ -1210,6 +1229,20 @@ int ieee80211_wk_remain_on_channel(struct ieee80211_sub_if_data *sdata, | |||
1210 | int ieee80211_wk_cancel_remain_on_channel( | 1229 | int ieee80211_wk_cancel_remain_on_channel( |
1211 | struct ieee80211_sub_if_data *sdata, u64 cookie); | 1230 | struct ieee80211_sub_if_data *sdata, u64 cookie); |
1212 | 1231 | ||
1232 | /* channel management */ | ||
1233 | enum ieee80211_chan_mode { | ||
1234 | CHAN_MODE_UNDEFINED, | ||
1235 | CHAN_MODE_HOPPING, | ||
1236 | CHAN_MODE_FIXED, | ||
1237 | }; | ||
1238 | |||
1239 | enum ieee80211_chan_mode | ||
1240 | ieee80211_get_channel_mode(struct ieee80211_local *local, | ||
1241 | struct ieee80211_sub_if_data *ignore); | ||
1242 | bool ieee80211_set_channel_type(struct ieee80211_local *local, | ||
1243 | struct ieee80211_sub_if_data *sdata, | ||
1244 | enum nl80211_channel_type chantype); | ||
1245 | |||
1213 | #ifdef CONFIG_MAC80211_NOINLINE | 1246 | #ifdef CONFIG_MAC80211_NOINLINE |
1214 | #define debug_noinline noinline | 1247 | #define debug_noinline noinline |
1215 | #else | 1248 | #else |