Lines Matching refs:ifmgd

126 	struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;  in ieee80211_sta_reset_conn_monitor()  local
128 if (unlikely(!ifmgd->associated)) in ieee80211_sta_reset_conn_monitor()
131 if (ifmgd->probe_send_count) in ieee80211_sta_reset_conn_monitor()
132 ifmgd->probe_send_count = 0; in ieee80211_sta_reset_conn_monitor()
137 mod_timer(&ifmgd->conn_mon_timer, in ieee80211_sta_reset_conn_monitor()
155 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_determine_chantype() local
211 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE) && he_oper && in ieee80211_determine_chantype()
225 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) in ieee80211_determine_chantype()
232 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
240 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
253 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
328 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_config_bw() local
339 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT || !ht_oper) in ieee80211_config_bw()
343 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) in ieee80211_config_bw()
347 if (ifmgd->flags & IEEE80211_STA_DISABLE_HE || in ieee80211_config_bw()
376 if (ifmgd->flags & IEEE80211_STA_DISABLE_80P80MHZ && in ieee80211_config_bw()
379 if (ifmgd->flags & IEEE80211_STA_DISABLE_160MHZ && in ieee80211_config_bw()
382 if (ifmgd->flags & IEEE80211_STA_DISABLE_40MHZ && in ieee80211_config_bw()
391 ifmgd->bssid, chandef.chan->center_freq, chandef.width, in ieee80211_config_bw()
394 if (flags != (ifmgd->flags & (IEEE80211_STA_DISABLE_HT | in ieee80211_config_bw()
402 ifmgd->bssid); in ieee80211_config_bw()
438 ifmgd->bssid); in ieee80211_config_bw()
641 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_send_assoc() local
642 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_send_assoc()
725 if (ifmgd->flags & IEEE80211_STA_ENABLE_RRM) in ieee80211_send_assoc()
855 if (WARN_ON_ONCE((ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_send_assoc()
856 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))) in ieee80211_send_assoc()
857 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_send_assoc()
859 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) in ieee80211_send_assoc()
913 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_send_assoc()
917 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) in ieee80211_send_assoc()
931 qos_info = ifmgd->uapsd_queues; in ieee80211_send_assoc()
932 qos_info |= (ifmgd->uapsd_max_sp_len << in ieee80211_send_assoc()
985 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_send_nullfunc() local
989 !(ifmgd->flags & IEEE80211_STA_DISABLE_HE)) in ieee80211_send_nullfunc()
1007 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) in ieee80211_send_nullfunc()
1052 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_work() local
1062 if (!ifmgd->associated) in ieee80211_chswitch_work()
1118 mgd_sta = sta_info_get(sdata, ifmgd->bssid); in ieee80211_chswitch_work()
1136 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_work()
1155 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_work()
1160 ifmgd->associated->channel = sdata->csa_chandef.chan; in ieee80211_chswitch_work()
1162 ifmgd->csa_waiting_bcn = true; in ieee80211_chswitch_work()
1176 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_post_beacon() local
1190 ifmgd->csa_waiting_bcn = false; in ieee80211_chswitch_post_beacon()
1197 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_post_beacon()
1207 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_done() local
1214 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_done()
1216 ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work); in ieee80211_chswitch_done()
1236 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_process_chanswitch() local
1237 struct cfg80211_bss *cbss = ifmgd->associated; in ieee80211_sta_process_chanswitch()
1259 ifmgd->flags, in ieee80211_sta_process_chanswitch()
1260 ifmgd->associated->bssid, &csa_ie); in ieee80211_sta_process_chanswitch()
1263 &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1271 ifmgd->associated->bssid, in ieee80211_sta_process_chanswitch()
1276 &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1282 if (ifmgd->csa_ignored_same_chan) in ieee80211_sta_process_chanswitch()
1286 ifmgd->associated->bssid); in ieee80211_sta_process_chanswitch()
1287 ifmgd->csa_ignored_same_chan = true; in ieee80211_sta_process_chanswitch()
1343 ifmgd->csa_ignored_same_chan = false; in ieee80211_sta_process_chanswitch()
1361 ieee80211_queue_work(&local->hw, &ifmgd->chswitch_work); in ieee80211_sta_process_chanswitch()
1363 mod_timer(&ifmgd->chswitch_timer, in ieee80211_sta_process_chanswitch()
1378 ieee80211_queue_work(&local->hw, &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1679 struct ieee80211_if_managed *ifmgd; in ieee80211_dynamic_ps_enable_work() local
1687 ifmgd = &sdata->u.mgd; in ieee80211_dynamic_ps_enable_work()
1721 !(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { in ieee80211_dynamic_ps_enable_work()
1735 (ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { in ieee80211_dynamic_ps_enable_work()
1736 ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED; in ieee80211_dynamic_ps_enable_work()
1771 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in __ieee80211_sta_handle_tspec_ac_params() local
1779 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; in __ieee80211_sta_handle_tspec_ac_params()
1833 schedule_delayed_work(&ifmgd->tx_tspec_wk, in __ieee80211_sta_handle_tspec_ac_params()
1868 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_wmm_params() local
1886 if (ifmgd->flags & IEEE80211_STA_UAPSD_ENABLED) in ieee80211_sta_wmm_params()
1887 uapsd_queues = ifmgd->uapsd_queues; in ieee80211_sta_wmm_params()
1890 if (count == ifmgd->wmm_last_param_set) in ieee80211_sta_wmm_params()
1892 ifmgd->wmm_last_param_set = count; in ieee80211_sta_wmm_params()
1979 ifmgd->tx_tspec[ac].downgraded); in ieee80211_sta_wmm_params()
1981 if (!ifmgd->tx_tspec[ac].downgraded && in ieee80211_sta_wmm_params()
2144 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_set_disassoc() local
2153 if (WARN_ON(!ifmgd->associated)) in ieee80211_set_disassoc()
2158 ifmgd->associated = NULL; in ieee80211_set_disassoc()
2196 !ifmgd->have_beacon) in ieee80211_set_disassoc()
2199 ieee80211_send_deauth_disassoc(sdata, ifmgd->bssid, stype, in ieee80211_set_disassoc()
2208 eth_zero_addr(ifmgd->bssid); in ieee80211_set_disassoc()
2220 ifmgd->p2p_noa_index = -1; in ieee80211_set_disassoc()
2225 memset(&ifmgd->ht_capa, 0, sizeof(ifmgd->ht_capa)); in ieee80211_set_disassoc()
2226 memset(&ifmgd->ht_capa_mask, 0, sizeof(ifmgd->ht_capa_mask)); in ieee80211_set_disassoc()
2227 memset(&ifmgd->vht_capa, 0, sizeof(ifmgd->vht_capa)); in ieee80211_set_disassoc()
2228 memset(&ifmgd->vht_capa_mask, 0, sizeof(ifmgd->vht_capa_mask)); in ieee80211_set_disassoc()
2265 ifmgd->have_beacon = false; in ieee80211_set_disassoc()
2267 ifmgd->flags = 0; in ieee80211_set_disassoc()
2272 ifmgd->csa_waiting_bcn = false; in ieee80211_set_disassoc()
2273 ifmgd->csa_ignored_same_chan = false; in ieee80211_set_disassoc()
2282 memset(ifmgd->tx_tspec, 0, sizeof(ifmgd->tx_tspec)); in ieee80211_set_disassoc()
2283 cancel_delayed_work_sync(&ifmgd->tx_tspec_wk); in ieee80211_set_disassoc()
2307 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_reset_ap_probe() local
2311 if (!(ifmgd->flags & IEEE80211_STA_CONNECTION_POLL)) in ieee80211_reset_ap_probe()
2330 mod_timer(&ifmgd->conn_mon_timer, in ieee80211_reset_ap_probe()
2341 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_tx_wmm_ac_notify() local
2344 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; in ieee80211_sta_tx_wmm_ac_notify()
2356 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); in ieee80211_sta_tx_wmm_ac_notify()
2368 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); in ieee80211_sta_tx_wmm_ac_notify()
2410 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_probe_ap_send() local
2412 u8 *dst = ifmgd->associated->bssid; in ieee80211_mgd_probe_ap_send()
2421 if (ifmgd->probe_send_count >= unicast_limit) in ieee80211_mgd_probe_ap_send()
2431 ifmgd->probe_send_count++; in ieee80211_mgd_probe_ap_send()
2442 ifmgd->nullfunc_failed = false; in ieee80211_mgd_probe_ap_send()
2448 ssid = ieee80211_bss_get_ie(ifmgd->associated, WLAN_EID_SSID); in ieee80211_mgd_probe_ap_send()
2456 ifmgd->associated->channel); in ieee80211_mgd_probe_ap_send()
2460 ifmgd->probe_timeout = jiffies + msecs_to_jiffies(probe_wait_ms); in ieee80211_mgd_probe_ap_send()
2461 run_again(sdata, ifmgd->probe_timeout); in ieee80211_mgd_probe_ap_send()
2467 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_probe_ap() local
2475 if (!ifmgd->associated) in ieee80211_mgd_probe_ap()
2504 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) in ieee80211_mgd_probe_ap()
2507 ifmgd->flags |= IEEE80211_STA_CONNECTION_POLL; in ieee80211_mgd_probe_ap()
2518 ifmgd->probe_send_count = 0; in ieee80211_mgd_probe_ap()
2528 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ap_probereq_get() local
2539 if (ifmgd->associated) in ieee80211_ap_probereq_get()
2540 cbss = ifmgd->associated; in ieee80211_ap_probereq_get()
2541 else if (ifmgd->auth_data) in ieee80211_ap_probereq_get()
2542 cbss = ifmgd->auth_data->bss; in ieee80211_ap_probereq_get()
2543 else if (ifmgd->assoc_data) in ieee80211_ap_probereq_get()
2544 cbss = ifmgd->assoc_data->bss; in ieee80211_ap_probereq_get()
2586 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in __ieee80211_disconnect() local
2591 if (!ifmgd->associated) { in __ieee80211_disconnect()
2601 cfg80211_unlink_bss(local->hw.wiphy, ifmgd->associated); in __ieee80211_disconnect()
2608 ifmgd->csa_waiting_bcn = false; in __ieee80211_disconnect()
2627 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_beacon_connection_loss_work() local
2629 if (ifmgd->associated) in ieee80211_beacon_connection_loss_work()
2630 ifmgd->beacon_loss_count++; in ieee80211_beacon_connection_loss_work()
2632 if (ifmgd->connection_loss) { in ieee80211_beacon_connection_loss_work()
2634 ifmgd->bssid); in ieee80211_beacon_connection_loss_work()
2765 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_auth() local
2779 if (!ifmgd->auth_data || ifmgd->auth_data->done) in ieee80211_rx_mgmt_auth()
2782 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); in ieee80211_rx_mgmt_auth()
2791 if (auth_alg != ifmgd->auth_data->algorithm || in ieee80211_rx_mgmt_auth()
2792 auth_transaction != ifmgd->auth_data->expected_transaction) { in ieee80211_rx_mgmt_auth()
2794 mgmt->sa, auth_alg, ifmgd->auth_data->algorithm, in ieee80211_rx_mgmt_auth()
2796 ifmgd->auth_data->expected_transaction); in ieee80211_rx_mgmt_auth()
2811 switch (ifmgd->auth_data->algorithm) { in ieee80211_rx_mgmt_auth()
2821 if (ifmgd->auth_data->expected_transaction != 4) { in ieee80211_rx_mgmt_auth()
2829 ifmgd->auth_data->algorithm); in ieee80211_rx_mgmt_auth()
2836 ifmgd->auth_data->done = true; in ieee80211_rx_mgmt_auth()
2837 ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC; in ieee80211_rx_mgmt_auth()
2838 ifmgd->auth_data->timeout_started = true; in ieee80211_rx_mgmt_auth()
2839 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_rx_mgmt_auth()
2841 if (ifmgd->auth_data->algorithm == WLAN_AUTH_SAE && in ieee80211_rx_mgmt_auth()
2842 ifmgd->auth_data->expected_transaction != 2) { in ieee80211_rx_mgmt_auth()
2931 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_deauth() local
2939 if (ifmgd->associated && in ieee80211_rx_mgmt_deauth()
2940 ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) { in ieee80211_rx_mgmt_deauth()
2941 const u8 *bssid = ifmgd->associated->bssid; in ieee80211_rx_mgmt_deauth()
2954 if (ifmgd->assoc_data && in ieee80211_rx_mgmt_deauth()
2955 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->bss->bssid)) { in ieee80211_rx_mgmt_deauth()
2956 const u8 *bssid = ifmgd->assoc_data->bss->bssid; in ieee80211_rx_mgmt_deauth()
2974 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_disassoc() local
2982 if (!ifmgd->associated || in ieee80211_rx_mgmt_disassoc()
2983 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_disassoc()
3050 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_assoc_success() local
3059 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_success()
3075 ifmgd->broken_ap = false; in ieee80211_assoc_success()
3081 ifmgd->broken_ap = true; in ieee80211_assoc_success()
3092 ifmgd->aid = aid; in ieee80211_assoc_success()
3093 ifmgd->tdls_chan_switch_prohibited = in ieee80211_assoc_success()
3105 (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_assoc_success()
3107 (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_assoc_success()
3135 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { in ieee80211_assoc_success()
3141 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { in ieee80211_assoc_success()
3147 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { in ieee80211_assoc_success()
3153 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { in ieee80211_assoc_success()
3164 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_assoc_success()
3172 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_assoc_success()
3203 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT || in ieee80211_assoc_success()
3205 ifmgd->flags & IEEE80211_STA_DISABLE_VHT) || in ieee80211_assoc_success()
3207 ifmgd->flags |= IEEE80211_STA_DISABLE_HE; in ieee80211_assoc_success()
3209 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE) && in ieee80211_assoc_success()
3219 if (elems.ht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) in ieee80211_assoc_success()
3223 if (elems.vht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_assoc_success()
3227 if (elems.he_operation && !(ifmgd->flags & IEEE80211_STA_DISABLE_HE) && in ieee80211_assoc_success()
3293 if (ifmgd->flags & IEEE80211_STA_MFP_ENABLED) { in ieee80211_assoc_success()
3303 if (!err && !(ifmgd->flags & IEEE80211_STA_CONTROL_PORT)) in ieee80211_assoc_success()
3323 ifmgd->wmm_last_param_set = -1; in ieee80211_assoc_success()
3325 if (ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { in ieee80211_assoc_success()
3339 ifmgd->flags |= IEEE80211_STA_DISABLE_WMM; in ieee80211_assoc_success()
3365 if (ifmgd->use_4addr) in ieee80211_assoc_success()
3385 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_assoc_resp() local
3386 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_rx_mgmt_assoc_resp()
3511 struct ieee80211_if_managed *ifmgd; in ieee80211_rx_mgmt_probe_resp() local
3516 ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_probe_resp()
3532 if (ifmgd->associated && in ieee80211_rx_mgmt_probe_resp()
3533 ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_probe_resp()
3562 struct ieee80211_if_managed *ifmgd, in ieee80211_handle_beacon_sig() argument
3569 if (ifmgd->flags & IEEE80211_STA_RESET_SIGNAL_AVE) { in ieee80211_handle_beacon_sig()
3570 ifmgd->flags &= ~IEEE80211_STA_RESET_SIGNAL_AVE; in ieee80211_handle_beacon_sig()
3571 ewma_beacon_signal_init(&ifmgd->ave_beacon_signal); in ieee80211_handle_beacon_sig()
3572 ifmgd->last_cqm_event_signal = 0; in ieee80211_handle_beacon_sig()
3573 ifmgd->count_beacon_signal = 1; in ieee80211_handle_beacon_sig()
3574 ifmgd->last_ave_beacon_signal = 0; in ieee80211_handle_beacon_sig()
3576 ifmgd->count_beacon_signal++; in ieee80211_handle_beacon_sig()
3579 ewma_beacon_signal_add(&ifmgd->ave_beacon_signal, -rx_status->signal); in ieee80211_handle_beacon_sig()
3581 if (ifmgd->rssi_min_thold != ifmgd->rssi_max_thold && in ieee80211_handle_beacon_sig()
3582 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) { in ieee80211_handle_beacon_sig()
3583 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal); in ieee80211_handle_beacon_sig()
3584 int last_sig = ifmgd->last_ave_beacon_signal; in ieee80211_handle_beacon_sig()
3593 if (sig > ifmgd->rssi_max_thold && in ieee80211_handle_beacon_sig()
3594 (last_sig <= ifmgd->rssi_min_thold || last_sig == 0)) { in ieee80211_handle_beacon_sig()
3595 ifmgd->last_ave_beacon_signal = sig; in ieee80211_handle_beacon_sig()
3598 } else if (sig < ifmgd->rssi_min_thold && in ieee80211_handle_beacon_sig()
3599 (last_sig >= ifmgd->rssi_max_thold || in ieee80211_handle_beacon_sig()
3601 ifmgd->last_ave_beacon_signal = sig; in ieee80211_handle_beacon_sig()
3608 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT && in ieee80211_handle_beacon_sig()
3610 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal); in ieee80211_handle_beacon_sig()
3611 int last_event = ifmgd->last_cqm_event_signal; in ieee80211_handle_beacon_sig()
3617 ifmgd->last_cqm_event_signal = sig; in ieee80211_handle_beacon_sig()
3624 ifmgd->last_cqm_event_signal = sig; in ieee80211_handle_beacon_sig()
3633 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) { in ieee80211_handle_beacon_sig()
3634 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal); in ieee80211_handle_beacon_sig()
3635 int last_event = ifmgd->last_cqm_event_signal; in ieee80211_handle_beacon_sig()
3641 ifmgd->last_cqm_event_signal = sig; in ieee80211_handle_beacon_sig()
3648 ifmgd->last_cqm_event_signal = sig; in ieee80211_handle_beacon_sig()
3661 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_beacon() local
3697 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && in ieee80211_rx_mgmt_beacon()
3698 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->bss->bssid)) { in ieee80211_rx_mgmt_beacon()
3705 ifmgd->dtim_period = tim_ie->dtim_period; in ieee80211_rx_mgmt_beacon()
3707 ifmgd->have_beacon = true; in ieee80211_rx_mgmt_beacon()
3708 ifmgd->assoc_data->need_beacon = false; in ieee80211_rx_mgmt_beacon()
3721 ifmgd->assoc_data->timeout = jiffies; in ieee80211_rx_mgmt_beacon()
3722 ifmgd->assoc_data->timeout_started = true; in ieee80211_rx_mgmt_beacon()
3723 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_rx_mgmt_beacon()
3727 if (!ifmgd->associated || in ieee80211_rx_mgmt_beacon()
3728 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_beacon()
3730 bssid = ifmgd->associated->bssid; in ieee80211_rx_mgmt_beacon()
3733 ieee80211_handle_beacon_sig(sdata, ifmgd, bss_conf, in ieee80211_rx_mgmt_beacon()
3736 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) { in ieee80211_rx_mgmt_beacon()
3754 ieee80211_check_tim(elems.tim, elems.tim_len, ifmgd->aid)) { in ieee80211_rx_mgmt_beacon()
3796 ifmgd->beacon_crc_valid = false; in ieee80211_rx_mgmt_beacon()
3803 ifmgd->beacon_crc_valid = false; in ieee80211_rx_mgmt_beacon()
3807 if (ifmgd->csa_waiting_bcn) in ieee80211_rx_mgmt_beacon()
3830 if (ncrc == ifmgd->beacon_crc && ifmgd->beacon_crc_valid) in ieee80211_rx_mgmt_beacon()
3832 ifmgd->beacon_crc = ncrc; in ieee80211_rx_mgmt_beacon()
3833 ifmgd->beacon_crc_valid = true; in ieee80211_rx_mgmt_beacon()
3841 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_WMM) && in ieee80211_rx_mgmt_beacon()
3851 if (!ifmgd->have_beacon) { in ieee80211_rx_mgmt_beacon()
3859 ifmgd->have_beacon = true; in ieee80211_rx_mgmt_beacon()
4019 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_auth() local
4020 struct ieee80211_mgd_auth_data *auth_data = ifmgd->auth_data; in ieee80211_auth()
4147 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_work() local
4151 if (ifmgd->status_received) { in ieee80211_sta_work()
4152 __le16 fc = ifmgd->status_fc; in ieee80211_sta_work()
4153 bool status_acked = ifmgd->status_acked; in ieee80211_sta_work()
4155 ifmgd->status_received = false; in ieee80211_sta_work()
4156 if (ifmgd->auth_data && ieee80211_is_auth(fc)) { in ieee80211_sta_work()
4158 if (ifmgd->auth_data->algorithm == in ieee80211_sta_work()
4160 ifmgd->auth_data->timeout = in ieee80211_sta_work()
4164 ifmgd->auth_data->timeout = in ieee80211_sta_work()
4167 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_sta_work()
4169 ifmgd->auth_data->timeout = jiffies - 1; in ieee80211_sta_work()
4171 ifmgd->auth_data->timeout_started = true; in ieee80211_sta_work()
4172 } else if (ifmgd->assoc_data && in ieee80211_sta_work()
4176 ifmgd->assoc_data->timeout = in ieee80211_sta_work()
4178 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
4180 ifmgd->assoc_data->timeout = jiffies - 1; in ieee80211_sta_work()
4182 ifmgd->assoc_data->timeout_started = true; in ieee80211_sta_work()
4186 if (ifmgd->auth_data && ifmgd->auth_data->timeout_started && in ieee80211_sta_work()
4187 time_after(jiffies, ifmgd->auth_data->timeout)) { in ieee80211_sta_work()
4188 if (ifmgd->auth_data->done) { in ieee80211_sta_work()
4202 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); in ieee80211_sta_work()
4209 } else if (ifmgd->auth_data && ifmgd->auth_data->timeout_started) in ieee80211_sta_work()
4210 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_sta_work()
4212 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && in ieee80211_sta_work()
4213 time_after(jiffies, ifmgd->assoc_data->timeout)) { in ieee80211_sta_work()
4214 if ((ifmgd->assoc_data->need_beacon && !ifmgd->have_beacon) || in ieee80211_sta_work()
4216 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; in ieee80211_sta_work()
4227 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) in ieee80211_sta_work()
4228 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
4230 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL && in ieee80211_sta_work()
4231 ifmgd->associated) { in ieee80211_sta_work()
4235 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); in ieee80211_sta_work()
4243 if (!ifmgd->probe_send_count) in ieee80211_sta_work()
4245 else if (ifmgd->nullfunc_failed) { in ieee80211_sta_work()
4246 if (ifmgd->probe_send_count < max_tries) { in ieee80211_sta_work()
4249 bssid, ifmgd->probe_send_count, in ieee80211_sta_work()
4260 } else if (time_is_after_jiffies(ifmgd->probe_timeout)) in ieee80211_sta_work()
4261 run_again(sdata, ifmgd->probe_timeout); in ieee80211_sta_work()
4268 } else if (ifmgd->probe_send_count < max_tries) { in ieee80211_sta_work()
4272 ifmgd->probe_send_count, max_tries); in ieee80211_sta_work()
4295 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_bcn_mon_timer() local
4297 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) in ieee80211_sta_bcn_mon_timer()
4309 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_conn_mon_timer() local
4312 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) in ieee80211_sta_conn_mon_timer()
4315 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work); in ieee80211_sta_conn_mon_timer()
4342 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_quiesce() local
4347 if (ifmgd->auth_data || ifmgd->assoc_data) { in ieee80211_mgd_quiesce()
4348 const u8 *bssid = ifmgd->auth_data ? in ieee80211_mgd_quiesce()
4349 ifmgd->auth_data->bss->bssid : in ieee80211_mgd_quiesce()
4350 ifmgd->assoc_data->bss->bssid; in ieee80211_mgd_quiesce()
4361 if (ifmgd->assoc_data) in ieee80211_mgd_quiesce()
4363 if (ifmgd->auth_data) in ieee80211_mgd_quiesce()
4386 if (ifmgd->associated && !sdata->local->wowlan) { in ieee80211_mgd_quiesce()
4393 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); in ieee80211_mgd_quiesce()
4402 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_restart() local
4405 if (!ifmgd->associated) { in ieee80211_sta_restart()
4414 ifmgd->associated->bssid, in ieee80211_sta_restart()
4427 struct ieee80211_if_managed *ifmgd; in ieee80211_sta_setup_sdata() local
4429 ifmgd = &sdata->u.mgd; in ieee80211_sta_setup_sdata()
4430 INIT_WORK(&ifmgd->monitor_work, ieee80211_sta_monitor_work); in ieee80211_sta_setup_sdata()
4431 INIT_WORK(&ifmgd->chswitch_work, ieee80211_chswitch_work); in ieee80211_sta_setup_sdata()
4432 INIT_WORK(&ifmgd->beacon_connection_loss_work, in ieee80211_sta_setup_sdata()
4434 INIT_WORK(&ifmgd->csa_connection_drop_work, in ieee80211_sta_setup_sdata()
4436 INIT_WORK(&ifmgd->request_smps_work, ieee80211_request_smps_mgd_work); in ieee80211_sta_setup_sdata()
4437 INIT_DELAYED_WORK(&ifmgd->tdls_peer_del_work, in ieee80211_sta_setup_sdata()
4439 timer_setup(&ifmgd->timer, ieee80211_sta_timer, 0); in ieee80211_sta_setup_sdata()
4440 timer_setup(&ifmgd->bcn_mon_timer, ieee80211_sta_bcn_mon_timer, 0); in ieee80211_sta_setup_sdata()
4441 timer_setup(&ifmgd->conn_mon_timer, ieee80211_sta_conn_mon_timer, 0); in ieee80211_sta_setup_sdata()
4442 timer_setup(&ifmgd->chswitch_timer, ieee80211_chswitch_timer, 0); in ieee80211_sta_setup_sdata()
4443 INIT_DELAYED_WORK(&ifmgd->tx_tspec_wk, in ieee80211_sta_setup_sdata()
4446 ifmgd->flags = 0; in ieee80211_sta_setup_sdata()
4447 ifmgd->powersave = sdata->wdev.ps; in ieee80211_sta_setup_sdata()
4448 ifmgd->uapsd_queues = sdata->local->hw.uapsd_queues; in ieee80211_sta_setup_sdata()
4449 ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len; in ieee80211_sta_setup_sdata()
4450 ifmgd->p2p_noa_index = -1; in ieee80211_sta_setup_sdata()
4453 ifmgd->req_smps = IEEE80211_SMPS_AUTOMATIC; in ieee80211_sta_setup_sdata()
4455 ifmgd->req_smps = IEEE80211_SMPS_OFF; in ieee80211_sta_setup_sdata()
4458 spin_lock_init(&ifmgd->teardown_lock); in ieee80211_sta_setup_sdata()
4459 ifmgd->teardown_skb = NULL; in ieee80211_sta_setup_sdata()
4460 ifmgd->orig_teardown_skb = NULL; in ieee80211_sta_setup_sdata()
4480 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ht_vht_rx_chains() local
4486 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT) in ieee80211_ht_vht_rx_chains()
4499 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) in ieee80211_ht_vht_rx_chains()
4587 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_prep_channel() local
4600 ifmgd->flags &= ~(IEEE80211_STA_DISABLE_40MHZ | in ieee80211_prep_channel()
4606 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_prep_channel()
4619 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_prep_channel()
4624 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_prep_channel()
4636 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_prep_channel()
4637 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_prep_channel()
4642 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_prep_channel()
4647 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE) && in ieee80211_prep_channel()
4662 ifmgd->flags |= IEEE80211_STA_DISABLE_HE; in ieee80211_prep_channel()
4677 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_prep_channel()
4679 ifmgd->flags |= ieee80211_determine_chantype(sdata, sband, in ieee80211_prep_channel()
4707 ifmgd->flags |= ieee80211_chandef_downgrade(&chandef); in ieee80211_prep_channel()
4721 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_prep_connection() local
4730 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) in ieee80211_prep_connection()
4800 memcpy(ifmgd->bssid, cbss->bssid, ETH_ALEN); in ieee80211_prep_connection()
4864 WARN_ON_ONCE(!ether_addr_equal(ifmgd->bssid, cbss->bssid)); in ieee80211_prep_connection()
4878 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_auth() local
4951 if ((ifmgd->auth_data && !ifmgd->auth_data->done) || in ieee80211_mgd_auth()
4952 ifmgd->assoc_data) { in ieee80211_mgd_auth()
4957 if (ifmgd->auth_data) in ieee80211_mgd_auth()
4961 ifmgd->auth_data = auth_data; in ieee80211_mgd_auth()
4963 if (ifmgd->associated) { in ieee80211_mgd_auth()
4968 ifmgd->associated->bssid, req->bss->bssid); in ieee80211_mgd_auth()
4995 eth_zero_addr(ifmgd->bssid); in ieee80211_mgd_auth()
4997 ifmgd->auth_data = NULL; in ieee80211_mgd_auth()
5010 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_assoc() local
5034 if (ifmgd->associated) { in ieee80211_mgd_assoc()
5039 ifmgd->associated->bssid, req->bss->bssid); in ieee80211_mgd_assoc()
5049 if (ifmgd->auth_data && !ifmgd->auth_data->done) { in ieee80211_mgd_assoc()
5054 if (ifmgd->assoc_data) { in ieee80211_mgd_assoc()
5059 if (ifmgd->auth_data) { in ieee80211_mgd_assoc()
5063 match = ether_addr_equal(ifmgd->bssid, req->bss->bssid); in ieee80211_mgd_assoc()
5069 ifmgd->beacon_crc_valid = false; in ieee80211_mgd_assoc()
5085 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
5086 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
5087 ifmgd->flags |= IEEE80211_STA_DISABLE_HE; in ieee80211_mgd_assoc()
5097 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { in ieee80211_mgd_assoc()
5098 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
5100 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) in ieee80211_mgd_assoc()
5108 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { in ieee80211_mgd_assoc()
5109 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
5111 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) in ieee80211_mgd_assoc()
5116 memcpy(&ifmgd->ht_capa, &req->ht_capa, sizeof(ifmgd->ht_capa)); in ieee80211_mgd_assoc()
5117 memcpy(&ifmgd->ht_capa_mask, &req->ht_capa_mask, in ieee80211_mgd_assoc()
5118 sizeof(ifmgd->ht_capa_mask)); in ieee80211_mgd_assoc()
5120 memcpy(&ifmgd->vht_capa, &req->vht_capa, sizeof(ifmgd->vht_capa)); in ieee80211_mgd_assoc()
5121 memcpy(&ifmgd->vht_capa_mask, &req->vht_capa_mask, in ieee80211_mgd_assoc()
5122 sizeof(ifmgd->vht_capa_mask)); in ieee80211_mgd_assoc()
5146 if (ifmgd->req_smps == IEEE80211_SMPS_AUTOMATIC) { in ieee80211_mgd_assoc()
5147 if (ifmgd->powersave) in ieee80211_mgd_assoc()
5152 sdata->smps_mode = ifmgd->req_smps; in ieee80211_mgd_assoc()
5164 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
5170 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
5181 ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED; in ieee80211_mgd_assoc()
5184 ifmgd->flags &= ~IEEE80211_STA_UAPSD_ENABLED; in ieee80211_mgd_assoc()
5191 ifmgd->mfp = IEEE80211_MFP_REQUIRED; in ieee80211_mgd_assoc()
5192 ifmgd->flags |= IEEE80211_STA_MFP_ENABLED; in ieee80211_mgd_assoc()
5194 ifmgd->mfp = IEEE80211_MFP_DISABLED; in ieee80211_mgd_assoc()
5195 ifmgd->flags &= ~IEEE80211_STA_MFP_ENABLED; in ieee80211_mgd_assoc()
5199 ifmgd->flags |= IEEE80211_STA_ENABLE_RRM; in ieee80211_mgd_assoc()
5201 ifmgd->flags &= ~IEEE80211_STA_ENABLE_RRM; in ieee80211_mgd_assoc()
5204 ifmgd->flags |= IEEE80211_STA_CONTROL_PORT; in ieee80211_mgd_assoc()
5206 ifmgd->flags &= ~IEEE80211_STA_CONTROL_PORT; in ieee80211_mgd_assoc()
5217 ifmgd->assoc_data = assoc_data; in ieee80211_mgd_assoc()
5218 ifmgd->dtim_period = 0; in ieee80211_mgd_assoc()
5219 ifmgd->have_beacon = false; in ieee80211_mgd_assoc()
5222 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { in ieee80211_mgd_assoc()
5232 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_40MHZ) && in ieee80211_mgd_assoc()
5237 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_mgd_assoc()
5243 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
5244 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
5248 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
5264 ifmgd->bssid); in ieee80211_mgd_assoc()
5277 ifmgd->dtim_period = tim->dtim_period; in ieee80211_mgd_assoc()
5280 ifmgd->have_beacon = true; in ieee80211_mgd_assoc()
5314 eth_zero_addr(ifmgd->bssid); in ieee80211_mgd_assoc()
5316 ifmgd->assoc_data = NULL; in ieee80211_mgd_assoc()
5325 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_deauth() local
5329 if (ifmgd->auth_data && in ieee80211_mgd_deauth()
5330 ether_addr_equal(ifmgd->auth_data->bss->bssid, req->bssid)) { in ieee80211_mgd_deauth()
5349 if (ifmgd->assoc_data && in ieee80211_mgd_deauth()
5350 ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) { in ieee80211_mgd_deauth()
5368 if (ifmgd->associated && in ieee80211_mgd_deauth()
5369 ether_addr_equal(ifmgd->associated->bssid, req->bssid)) { in ieee80211_mgd_deauth()
5389 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_disassoc() local
5399 if (ifmgd->associated != req->bss) in ieee80211_mgd_disassoc()
5419 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_stop() local
5426 cancel_work_sync(&ifmgd->monitor_work); in ieee80211_mgd_stop()
5427 cancel_work_sync(&ifmgd->beacon_connection_loss_work); in ieee80211_mgd_stop()
5428 cancel_work_sync(&ifmgd->request_smps_work); in ieee80211_mgd_stop()
5429 cancel_work_sync(&ifmgd->csa_connection_drop_work); in ieee80211_mgd_stop()
5430 cancel_work_sync(&ifmgd->chswitch_work); in ieee80211_mgd_stop()
5431 cancel_delayed_work_sync(&ifmgd->tdls_peer_del_work); in ieee80211_mgd_stop()
5434 if (ifmgd->assoc_data) { in ieee80211_mgd_stop()
5435 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; in ieee80211_mgd_stop()
5439 if (ifmgd->auth_data) in ieee80211_mgd_stop()
5441 spin_lock_bh(&ifmgd->teardown_lock); in ieee80211_mgd_stop()
5442 if (ifmgd->teardown_skb) { in ieee80211_mgd_stop()
5443 kfree_skb(ifmgd->teardown_skb); in ieee80211_mgd_stop()
5444 ifmgd->teardown_skb = NULL; in ieee80211_mgd_stop()
5445 ifmgd->orig_teardown_skb = NULL; in ieee80211_mgd_stop()
5447 spin_unlock_bh(&ifmgd->teardown_lock); in ieee80211_mgd_stop()
5448 del_timer_sync(&ifmgd->timer); in ieee80211_mgd_stop()