Lines Matching refs:ifmgd
130 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_reset_conn_monitor() local
135 ifmgd->probe_send_count = 0; in ieee80211_sta_reset_conn_monitor()
158 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_determine_chantype() local
254 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
263 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
276 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_determine_chantype()
350 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_config_bw() local
360 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT || !ht_oper) in ieee80211_config_bw()
364 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) in ieee80211_config_bw()
395 if (ifmgd->flags & IEEE80211_STA_DISABLE_80P80MHZ && in ieee80211_config_bw()
398 if (ifmgd->flags & IEEE80211_STA_DISABLE_160MHZ && in ieee80211_config_bw()
401 if (ifmgd->flags & IEEE80211_STA_DISABLE_40MHZ && in ieee80211_config_bw()
410 ifmgd->bssid, chandef.chan->center_freq, chandef.width, in ieee80211_config_bw()
413 if (flags != (ifmgd->flags & (IEEE80211_STA_DISABLE_HT | in ieee80211_config_bw()
421 ifmgd->bssid); in ieee80211_config_bw()
457 ifmgd->bssid); in ieee80211_config_bw()
599 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_send_assoc() local
600 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_send_assoc()
685 if (ifmgd->flags & IEEE80211_STA_ENABLE_RRM) in ieee80211_send_assoc()
816 if (WARN_ON_ONCE((ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_send_assoc()
817 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))) in ieee80211_send_assoc()
818 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_send_assoc()
820 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) in ieee80211_send_assoc()
854 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_send_assoc()
870 qos_info = ifmgd->uapsd_queues; in ieee80211_send_assoc()
871 qos_info |= (ifmgd->uapsd_max_sp_len << in ieee80211_send_assoc()
919 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_send_nullfunc() local
935 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) in ieee80211_send_nullfunc()
977 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_work() local
987 if (!ifmgd->associated) in ieee80211_chswitch_work()
1015 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_work()
1027 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_work()
1032 ifmgd->associated->channel = sdata->csa_chandef.chan; in ieee80211_chswitch_work()
1034 ifmgd->csa_waiting_bcn = true; in ieee80211_chswitch_work()
1048 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_post_beacon() local
1062 ifmgd->csa_waiting_bcn = false; in ieee80211_chswitch_post_beacon()
1069 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_post_beacon()
1079 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_chswitch_done() local
1086 &ifmgd->csa_connection_drop_work); in ieee80211_chswitch_done()
1088 ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work); in ieee80211_chswitch_done()
1108 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_process_chanswitch() local
1109 struct cfg80211_bss *cbss = ifmgd->associated; in ieee80211_sta_process_chanswitch()
1132 ifmgd->flags, in ieee80211_sta_process_chanswitch()
1133 ifmgd->associated->bssid, &csa_ie); in ieee80211_sta_process_chanswitch()
1136 &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1144 ifmgd->associated->bssid, in ieee80211_sta_process_chanswitch()
1149 &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1155 if (ifmgd->csa_ignored_same_chan) in ieee80211_sta_process_chanswitch()
1159 ifmgd->associated->bssid); in ieee80211_sta_process_chanswitch()
1160 ifmgd->csa_ignored_same_chan = true; in ieee80211_sta_process_chanswitch()
1208 ifmgd->csa_ignored_same_chan = false; in ieee80211_sta_process_chanswitch()
1226 ieee80211_queue_work(&local->hw, &ifmgd->chswitch_work); in ieee80211_sta_process_chanswitch()
1228 mod_timer(&ifmgd->chswitch_timer, in ieee80211_sta_process_chanswitch()
1233 ieee80211_queue_work(&local->hw, &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1558 struct ieee80211_if_managed *ifmgd; in ieee80211_dynamic_ps_enable_work() local
1566 ifmgd = &sdata->u.mgd; in ieee80211_dynamic_ps_enable_work()
1600 !(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { in ieee80211_dynamic_ps_enable_work()
1614 (ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { in ieee80211_dynamic_ps_enable_work()
1615 ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED; in ieee80211_dynamic_ps_enable_work()
1651 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in __ieee80211_sta_handle_tspec_ac_params() local
1659 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; in __ieee80211_sta_handle_tspec_ac_params()
1709 schedule_delayed_work(&ifmgd->tx_tspec_wk, in __ieee80211_sta_handle_tspec_ac_params()
1742 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_wmm_params() local
1760 if (ifmgd->flags & IEEE80211_STA_UAPSD_ENABLED) in ieee80211_sta_wmm_params()
1761 uapsd_queues = ifmgd->uapsd_queues; in ieee80211_sta_wmm_params()
1764 if (count == ifmgd->wmm_last_param_set) in ieee80211_sta_wmm_params()
1766 ifmgd->wmm_last_param_set = count; in ieee80211_sta_wmm_params()
1824 ifmgd->tx_tspec[queue].downgraded); in ieee80211_sta_wmm_params()
1826 if (!ifmgd->tx_tspec[queue].downgraded && in ieee80211_sta_wmm_params()
1981 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_set_disassoc() local
1990 if (WARN_ON(!ifmgd->associated)) in ieee80211_set_disassoc()
1995 ifmgd->associated = NULL; in ieee80211_set_disassoc()
2026 ieee80211_send_deauth_disassoc(sdata, ifmgd->bssid, stype, in ieee80211_set_disassoc()
2034 eth_zero_addr(ifmgd->bssid); in ieee80211_set_disassoc()
2046 ifmgd->p2p_noa_index = -1; in ieee80211_set_disassoc()
2051 memset(&ifmgd->ht_capa, 0, sizeof(ifmgd->ht_capa)); in ieee80211_set_disassoc()
2052 memset(&ifmgd->ht_capa_mask, 0, sizeof(ifmgd->ht_capa_mask)); in ieee80211_set_disassoc()
2053 memset(&ifmgd->vht_capa, 0, sizeof(ifmgd->vht_capa)); in ieee80211_set_disassoc()
2054 memset(&ifmgd->vht_capa_mask, 0, sizeof(ifmgd->vht_capa_mask)); in ieee80211_set_disassoc()
2083 ifmgd->have_beacon = false; in ieee80211_set_disassoc()
2085 ifmgd->flags = 0; in ieee80211_set_disassoc()
2090 ifmgd->csa_waiting_bcn = false; in ieee80211_set_disassoc()
2091 ifmgd->csa_ignored_same_chan = false; in ieee80211_set_disassoc()
2100 memset(ifmgd->tx_tspec, 0, sizeof(ifmgd->tx_tspec)); in ieee80211_set_disassoc()
2101 cancel_delayed_work_sync(&ifmgd->tx_tspec_wk); in ieee80211_set_disassoc()
2125 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_reset_ap_probe() local
2129 if (!(ifmgd->flags & IEEE80211_STA_CONNECTION_POLL)) in ieee80211_reset_ap_probe()
2148 mod_timer(&ifmgd->conn_mon_timer, in ieee80211_reset_ap_probe()
2159 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_tx_wmm_ac_notify() local
2162 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; in ieee80211_sta_tx_wmm_ac_notify()
2174 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); in ieee80211_sta_tx_wmm_ac_notify()
2186 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); in ieee80211_sta_tx_wmm_ac_notify()
2214 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_probe_ap_send() local
2216 u8 *dst = ifmgd->associated->bssid; in ieee80211_mgd_probe_ap_send()
2224 if (ifmgd->probe_send_count >= unicast_limit) in ieee80211_mgd_probe_ap_send()
2234 ifmgd->probe_send_count++; in ieee80211_mgd_probe_ap_send()
2237 ifmgd->nullfunc_failed = false; in ieee80211_mgd_probe_ap_send()
2243 ssid = ieee80211_bss_get_ie(ifmgd->associated, WLAN_EID_SSID); in ieee80211_mgd_probe_ap_send()
2252 ifmgd->associated->channel, false); in ieee80211_mgd_probe_ap_send()
2256 ifmgd->probe_timeout = jiffies + msecs_to_jiffies(probe_wait_ms); in ieee80211_mgd_probe_ap_send()
2257 run_again(sdata, ifmgd->probe_timeout); in ieee80211_mgd_probe_ap_send()
2263 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_probe_ap() local
2271 if (!ifmgd->associated) in ieee80211_mgd_probe_ap()
2300 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) in ieee80211_mgd_probe_ap()
2303 ifmgd->flags |= IEEE80211_STA_CONNECTION_POLL; in ieee80211_mgd_probe_ap()
2314 ifmgd->probe_send_count = 0; in ieee80211_mgd_probe_ap()
2324 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ap_probereq_get() local
2335 if (ifmgd->associated) in ieee80211_ap_probereq_get()
2336 cbss = ifmgd->associated; in ieee80211_ap_probereq_get()
2337 else if (ifmgd->auth_data) in ieee80211_ap_probereq_get()
2338 cbss = ifmgd->auth_data->bss; in ieee80211_ap_probereq_get()
2339 else if (ifmgd->assoc_data) in ieee80211_ap_probereq_get()
2340 cbss = ifmgd->assoc_data->bss; in ieee80211_ap_probereq_get()
2382 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in __ieee80211_disconnect() local
2386 if (!ifmgd->associated) { in __ieee80211_disconnect()
2396 ifmgd->csa_waiting_bcn = false; in __ieee80211_disconnect()
2415 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_beacon_connection_loss_work() local
2418 if (ifmgd->associated) { in ieee80211_beacon_connection_loss_work()
2420 sta = sta_info_get(sdata, ifmgd->bssid); in ieee80211_beacon_connection_loss_work()
2426 if (ifmgd->connection_loss) { in ieee80211_beacon_connection_loss_work()
2428 ifmgd->bssid); in ieee80211_beacon_connection_loss_work()
2526 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_auth() local
2540 if (!ifmgd->auth_data || ifmgd->auth_data->done) in ieee80211_rx_mgmt_auth()
2543 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); in ieee80211_rx_mgmt_auth()
2552 if (auth_alg != ifmgd->auth_data->algorithm || in ieee80211_rx_mgmt_auth()
2553 auth_transaction != ifmgd->auth_data->expected_transaction) { in ieee80211_rx_mgmt_auth()
2555 mgmt->sa, auth_alg, ifmgd->auth_data->algorithm, in ieee80211_rx_mgmt_auth()
2557 ifmgd->auth_data->expected_transaction); in ieee80211_rx_mgmt_auth()
2572 switch (ifmgd->auth_data->algorithm) { in ieee80211_rx_mgmt_auth()
2579 if (ifmgd->auth_data->expected_transaction != 4) { in ieee80211_rx_mgmt_auth()
2587 ifmgd->auth_data->algorithm); in ieee80211_rx_mgmt_auth()
2594 ifmgd->auth_data->done = true; in ieee80211_rx_mgmt_auth()
2595 ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC; in ieee80211_rx_mgmt_auth()
2596 ifmgd->auth_data->timeout_started = true; in ieee80211_rx_mgmt_auth()
2597 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_rx_mgmt_auth()
2599 if (ifmgd->auth_data->algorithm == WLAN_AUTH_SAE && in ieee80211_rx_mgmt_auth()
2600 ifmgd->auth_data->expected_transaction != 2) { in ieee80211_rx_mgmt_auth()
2689 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_deauth() local
2698 if (!ifmgd->associated || in ieee80211_rx_mgmt_deauth()
2699 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_deauth()
2702 bssid = ifmgd->associated->bssid; in ieee80211_rx_mgmt_deauth()
2718 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_disassoc() local
2726 if (!ifmgd->associated || in ieee80211_rx_mgmt_disassoc()
2727 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_disassoc()
2823 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_assoc_success() local
2832 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_assoc_success()
2847 ifmgd->broken_ap = false; in ieee80211_assoc_success()
2853 ifmgd->broken_ap = true; in ieee80211_assoc_success()
2864 ifmgd->aid = aid; in ieee80211_assoc_success()
2865 ifmgd->tdls_chan_switch_prohibited = in ieee80211_assoc_success()
2877 (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_assoc_success()
2879 (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_assoc_success()
2907 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { in ieee80211_assoc_success()
2913 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { in ieee80211_assoc_success()
2919 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { in ieee80211_assoc_success()
2925 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { in ieee80211_assoc_success()
2936 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_assoc_success()
2944 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_assoc_success()
2967 if (elems.ht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) in ieee80211_assoc_success()
2971 if (elems.vht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) in ieee80211_assoc_success()
2999 if (ifmgd->flags & IEEE80211_STA_MFP_ENABLED) { in ieee80211_assoc_success()
3009 if (!err && !(ifmgd->flags & IEEE80211_STA_CONTROL_PORT)) in ieee80211_assoc_success()
3029 ifmgd->wmm_last_param_set = -1; in ieee80211_assoc_success()
3031 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_WMM) && elems.wmm_param) in ieee80211_assoc_success()
3048 if (ifmgd->use_4addr) in ieee80211_assoc_success()
3068 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_assoc_resp() local
3069 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; in ieee80211_rx_mgmt_assoc_resp()
3190 struct ieee80211_if_managed *ifmgd; in ieee80211_rx_mgmt_probe_resp() local
3195 ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_probe_resp()
3211 if (ifmgd->associated && in ieee80211_rx_mgmt_probe_resp()
3212 ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_probe_resp()
3215 if (ifmgd->auth_data && !ifmgd->auth_data->bss->proberesp_ies && in ieee80211_rx_mgmt_probe_resp()
3216 ether_addr_equal(mgmt->bssid, ifmgd->auth_data->bss->bssid)) { in ieee80211_rx_mgmt_probe_resp()
3219 ifmgd->auth_data->tries = 0; in ieee80211_rx_mgmt_probe_resp()
3220 ifmgd->auth_data->timeout = jiffies; in ieee80211_rx_mgmt_probe_resp()
3221 ifmgd->auth_data->timeout_started = true; in ieee80211_rx_mgmt_probe_resp()
3222 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_rx_mgmt_probe_resp()
3254 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_rx_mgmt_beacon() local
3290 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && in ieee80211_rx_mgmt_beacon()
3291 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->bss->bssid)) { in ieee80211_rx_mgmt_beacon()
3298 ifmgd->dtim_period = tim_ie->dtim_period; in ieee80211_rx_mgmt_beacon()
3300 ifmgd->have_beacon = true; in ieee80211_rx_mgmt_beacon()
3301 ifmgd->assoc_data->need_beacon = false; in ieee80211_rx_mgmt_beacon()
3314 ifmgd->assoc_data->timeout = jiffies; in ieee80211_rx_mgmt_beacon()
3315 ifmgd->assoc_data->timeout_started = true; in ieee80211_rx_mgmt_beacon()
3316 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_rx_mgmt_beacon()
3320 if (!ifmgd->associated || in ieee80211_rx_mgmt_beacon()
3321 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) in ieee80211_rx_mgmt_beacon()
3323 bssid = ifmgd->associated->bssid; in ieee80211_rx_mgmt_beacon()
3326 ifmgd->last_beacon_signal = rx_status->signal; in ieee80211_rx_mgmt_beacon()
3327 if (ifmgd->flags & IEEE80211_STA_RESET_SIGNAL_AVE) { in ieee80211_rx_mgmt_beacon()
3328 ifmgd->flags &= ~IEEE80211_STA_RESET_SIGNAL_AVE; in ieee80211_rx_mgmt_beacon()
3329 ifmgd->ave_beacon_signal = rx_status->signal * 16; in ieee80211_rx_mgmt_beacon()
3330 ifmgd->last_cqm_event_signal = 0; in ieee80211_rx_mgmt_beacon()
3331 ifmgd->count_beacon_signal = 1; in ieee80211_rx_mgmt_beacon()
3332 ifmgd->last_ave_beacon_signal = 0; in ieee80211_rx_mgmt_beacon()
3334 ifmgd->ave_beacon_signal = in ieee80211_rx_mgmt_beacon()
3337 ifmgd->ave_beacon_signal) / 16; in ieee80211_rx_mgmt_beacon()
3338 ifmgd->count_beacon_signal++; in ieee80211_rx_mgmt_beacon()
3341 if (ifmgd->rssi_min_thold != ifmgd->rssi_max_thold && in ieee80211_rx_mgmt_beacon()
3342 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) { in ieee80211_rx_mgmt_beacon()
3343 int sig = ifmgd->ave_beacon_signal / 16; in ieee80211_rx_mgmt_beacon()
3344 int last_sig = ifmgd->last_ave_beacon_signal; in ieee80211_rx_mgmt_beacon()
3353 if (sig > ifmgd->rssi_max_thold && in ieee80211_rx_mgmt_beacon()
3354 (last_sig <= ifmgd->rssi_min_thold || last_sig == 0)) { in ieee80211_rx_mgmt_beacon()
3355 ifmgd->last_ave_beacon_signal = sig; in ieee80211_rx_mgmt_beacon()
3358 } else if (sig < ifmgd->rssi_min_thold && in ieee80211_rx_mgmt_beacon()
3359 (last_sig >= ifmgd->rssi_max_thold || in ieee80211_rx_mgmt_beacon()
3361 ifmgd->last_ave_beacon_signal = sig; in ieee80211_rx_mgmt_beacon()
3368 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT && in ieee80211_rx_mgmt_beacon()
3370 int sig = ifmgd->ave_beacon_signal / 16; in ieee80211_rx_mgmt_beacon()
3371 int last_event = ifmgd->last_cqm_event_signal; in ieee80211_rx_mgmt_beacon()
3376 ifmgd->last_cqm_event_signal = sig; in ieee80211_rx_mgmt_beacon()
3383 ifmgd->last_cqm_event_signal = sig; in ieee80211_rx_mgmt_beacon()
3391 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) { in ieee80211_rx_mgmt_beacon()
3411 ifmgd->aid); in ieee80211_rx_mgmt_beacon()
3454 ifmgd->beacon_crc_valid = false; in ieee80211_rx_mgmt_beacon()
3461 ifmgd->beacon_crc_valid = false; in ieee80211_rx_mgmt_beacon()
3465 if (ifmgd->csa_waiting_bcn) in ieee80211_rx_mgmt_beacon()
3488 if (ncrc == ifmgd->beacon_crc && ifmgd->beacon_crc_valid) in ieee80211_rx_mgmt_beacon()
3490 ifmgd->beacon_crc = ncrc; in ieee80211_rx_mgmt_beacon()
3491 ifmgd->beacon_crc_valid = true; in ieee80211_rx_mgmt_beacon()
3499 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_WMM) && in ieee80211_rx_mgmt_beacon()
3508 if (!ifmgd->have_beacon) { in ieee80211_rx_mgmt_beacon()
3516 ifmgd->have_beacon = true; in ieee80211_rx_mgmt_beacon()
3672 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_probe_auth() local
3673 struct ieee80211_mgd_auth_data *auth_data = ifmgd->auth_data; in ieee80211_probe_auth()
3817 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_work() local
3821 if (ifmgd->status_received) { in ieee80211_sta_work()
3822 __le16 fc = ifmgd->status_fc; in ieee80211_sta_work()
3823 bool status_acked = ifmgd->status_acked; in ieee80211_sta_work()
3825 ifmgd->status_received = false; in ieee80211_sta_work()
3826 if (ifmgd->auth_data && in ieee80211_sta_work()
3829 ifmgd->auth_data->timeout = in ieee80211_sta_work()
3831 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_sta_work()
3833 ifmgd->auth_data->timeout = jiffies - 1; in ieee80211_sta_work()
3835 ifmgd->auth_data->timeout_started = true; in ieee80211_sta_work()
3836 } else if (ifmgd->assoc_data && in ieee80211_sta_work()
3840 ifmgd->assoc_data->timeout = in ieee80211_sta_work()
3842 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
3844 ifmgd->assoc_data->timeout = jiffies - 1; in ieee80211_sta_work()
3846 ifmgd->assoc_data->timeout_started = true; in ieee80211_sta_work()
3850 if (ifmgd->auth_data && ifmgd->auth_data->timeout_started && in ieee80211_sta_work()
3851 time_after(jiffies, ifmgd->auth_data->timeout)) { in ieee80211_sta_work()
3852 if (ifmgd->auth_data->done) { in ieee80211_sta_work()
3866 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); in ieee80211_sta_work()
3873 } else if (ifmgd->auth_data && ifmgd->auth_data->timeout_started) in ieee80211_sta_work()
3874 run_again(sdata, ifmgd->auth_data->timeout); in ieee80211_sta_work()
3876 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && in ieee80211_sta_work()
3877 time_after(jiffies, ifmgd->assoc_data->timeout)) { in ieee80211_sta_work()
3878 if ((ifmgd->assoc_data->need_beacon && !ifmgd->have_beacon) || in ieee80211_sta_work()
3880 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; in ieee80211_sta_work()
3891 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) in ieee80211_sta_work()
3892 run_again(sdata, ifmgd->assoc_data->timeout); in ieee80211_sta_work()
3894 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL && in ieee80211_sta_work()
3895 ifmgd->associated) { in ieee80211_sta_work()
3899 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); in ieee80211_sta_work()
3907 if (!ifmgd->probe_send_count) in ieee80211_sta_work()
3909 else if (ifmgd->nullfunc_failed) { in ieee80211_sta_work()
3910 if (ifmgd->probe_send_count < max_tries) { in ieee80211_sta_work()
3913 bssid, ifmgd->probe_send_count, in ieee80211_sta_work()
3924 } else if (time_is_after_jiffies(ifmgd->probe_timeout)) in ieee80211_sta_work()
3925 run_again(sdata, ifmgd->probe_timeout); in ieee80211_sta_work()
3932 } else if (ifmgd->probe_send_count < max_tries) { in ieee80211_sta_work()
3936 ifmgd->probe_send_count, max_tries); in ieee80211_sta_work()
3961 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_bcn_mon_timer() local
3963 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) in ieee80211_sta_bcn_mon_timer()
3975 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_conn_mon_timer() local
3978 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) in ieee80211_sta_conn_mon_timer()
3981 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work); in ieee80211_sta_conn_mon_timer()
4011 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_quiesce() local
4016 if (ifmgd->auth_data || ifmgd->assoc_data) { in ieee80211_mgd_quiesce()
4017 const u8 *bssid = ifmgd->auth_data ? in ieee80211_mgd_quiesce()
4018 ifmgd->auth_data->bss->bssid : in ieee80211_mgd_quiesce()
4019 ifmgd->assoc_data->bss->bssid; in ieee80211_mgd_quiesce()
4030 if (ifmgd->assoc_data) in ieee80211_mgd_quiesce()
4032 if (ifmgd->auth_data) in ieee80211_mgd_quiesce()
4055 if (ifmgd->associated && !sdata->local->wowlan) { in ieee80211_mgd_quiesce()
4062 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); in ieee80211_mgd_quiesce()
4071 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_sta_restart() local
4074 if (!ifmgd->associated) { in ieee80211_sta_restart()
4083 ifmgd->associated->bssid, in ieee80211_sta_restart()
4096 struct ieee80211_if_managed *ifmgd; in ieee80211_sta_setup_sdata() local
4098 ifmgd = &sdata->u.mgd; in ieee80211_sta_setup_sdata()
4099 INIT_WORK(&ifmgd->monitor_work, ieee80211_sta_monitor_work); in ieee80211_sta_setup_sdata()
4100 INIT_WORK(&ifmgd->chswitch_work, ieee80211_chswitch_work); in ieee80211_sta_setup_sdata()
4101 INIT_WORK(&ifmgd->beacon_connection_loss_work, in ieee80211_sta_setup_sdata()
4103 INIT_WORK(&ifmgd->csa_connection_drop_work, in ieee80211_sta_setup_sdata()
4105 INIT_WORK(&ifmgd->request_smps_work, ieee80211_request_smps_mgd_work); in ieee80211_sta_setup_sdata()
4106 INIT_DELAYED_WORK(&ifmgd->tdls_peer_del_work, in ieee80211_sta_setup_sdata()
4108 setup_timer(&ifmgd->timer, ieee80211_sta_timer, in ieee80211_sta_setup_sdata()
4110 setup_timer(&ifmgd->bcn_mon_timer, ieee80211_sta_bcn_mon_timer, in ieee80211_sta_setup_sdata()
4112 setup_timer(&ifmgd->conn_mon_timer, ieee80211_sta_conn_mon_timer, in ieee80211_sta_setup_sdata()
4114 setup_timer(&ifmgd->chswitch_timer, ieee80211_chswitch_timer, in ieee80211_sta_setup_sdata()
4116 INIT_DELAYED_WORK(&ifmgd->tx_tspec_wk, in ieee80211_sta_setup_sdata()
4119 ifmgd->flags = 0; in ieee80211_sta_setup_sdata()
4120 ifmgd->powersave = sdata->wdev.ps; in ieee80211_sta_setup_sdata()
4121 ifmgd->uapsd_queues = sdata->local->hw.uapsd_queues; in ieee80211_sta_setup_sdata()
4122 ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len; in ieee80211_sta_setup_sdata()
4123 ifmgd->p2p_noa_index = -1; in ieee80211_sta_setup_sdata()
4126 ifmgd->req_smps = IEEE80211_SMPS_AUTOMATIC; in ieee80211_sta_setup_sdata()
4128 ifmgd->req_smps = IEEE80211_SMPS_OFF; in ieee80211_sta_setup_sdata()
4131 spin_lock_init(&ifmgd->teardown_lock); in ieee80211_sta_setup_sdata()
4132 ifmgd->teardown_skb = NULL; in ieee80211_sta_setup_sdata()
4133 ifmgd->orig_teardown_skb = NULL; in ieee80211_sta_setup_sdata()
4168 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_ht_vht_rx_chains() local
4174 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT) in ieee80211_ht_vht_rx_chains()
4187 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) in ieee80211_ht_vht_rx_chains()
4213 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_prep_channel() local
4223 ifmgd->flags &= ~(IEEE80211_STA_DISABLE_40MHZ | in ieee80211_prep_channel()
4229 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && in ieee80211_prep_channel()
4242 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_prep_channel()
4247 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && in ieee80211_prep_channel()
4259 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_prep_channel()
4260 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_prep_channel()
4265 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_prep_channel()
4270 ifmgd->flags |= ieee80211_determine_chantype(sdata, sband, in ieee80211_prep_channel()
4298 ifmgd->flags |= ieee80211_chandef_downgrade(&chandef); in ieee80211_prep_channel()
4311 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_prep_connection() local
4321 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) in ieee80211_prep_connection()
4402 memcpy(ifmgd->bssid, cbss->bssid, ETH_ALEN); in ieee80211_prep_connection()
4452 WARN_ON_ONCE(!ether_addr_equal(ifmgd->bssid, cbss->bssid)); in ieee80211_prep_connection()
4466 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_auth() local
4527 if ((ifmgd->auth_data && !ifmgd->auth_data->done) || in ieee80211_mgd_auth()
4528 ifmgd->assoc_data) { in ieee80211_mgd_auth()
4533 if (ifmgd->auth_data) in ieee80211_mgd_auth()
4537 ifmgd->auth_data = auth_data; in ieee80211_mgd_auth()
4539 if (ifmgd->associated) { in ieee80211_mgd_auth()
4568 eth_zero_addr(ifmgd->bssid); in ieee80211_mgd_auth()
4570 ifmgd->auth_data = NULL; in ieee80211_mgd_auth()
4618 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_assoc() local
4641 if (ifmgd->associated) { in ieee80211_mgd_assoc()
4653 if (ifmgd->auth_data && !ifmgd->auth_data->done) { in ieee80211_mgd_assoc()
4658 if (ifmgd->assoc_data) { in ieee80211_mgd_assoc()
4663 if (ifmgd->auth_data) { in ieee80211_mgd_assoc()
4667 match = ether_addr_equal(ifmgd->bssid, req->bss->bssid); in ieee80211_mgd_assoc()
4673 ifmgd->beacon_crc_valid = false; in ieee80211_mgd_assoc()
4706 ifmgd->flags |= IEEE80211_STA_DISABLE_WMM; in ieee80211_mgd_assoc()
4722 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
4723 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
4730 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
4731 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
4735 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
4741 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { in ieee80211_mgd_assoc()
4742 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
4744 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) in ieee80211_mgd_assoc()
4752 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { in ieee80211_mgd_assoc()
4753 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
4755 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) in ieee80211_mgd_assoc()
4760 memcpy(&ifmgd->ht_capa, &req->ht_capa, sizeof(ifmgd->ht_capa)); in ieee80211_mgd_assoc()
4761 memcpy(&ifmgd->ht_capa_mask, &req->ht_capa_mask, in ieee80211_mgd_assoc()
4762 sizeof(ifmgd->ht_capa_mask)); in ieee80211_mgd_assoc()
4764 memcpy(&ifmgd->vht_capa, &req->vht_capa, sizeof(ifmgd->vht_capa)); in ieee80211_mgd_assoc()
4765 memcpy(&ifmgd->vht_capa_mask, &req->vht_capa_mask, in ieee80211_mgd_assoc()
4766 sizeof(ifmgd->vht_capa_mask)); in ieee80211_mgd_assoc()
4775 if (ifmgd->req_smps == IEEE80211_SMPS_AUTOMATIC) { in ieee80211_mgd_assoc()
4776 if (ifmgd->powersave) in ieee80211_mgd_assoc()
4781 sdata->smps_mode = ifmgd->req_smps; in ieee80211_mgd_assoc()
4793 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; in ieee80211_mgd_assoc()
4799 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; in ieee80211_mgd_assoc()
4810 ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED; in ieee80211_mgd_assoc()
4813 ifmgd->flags &= ~IEEE80211_STA_UAPSD_ENABLED; in ieee80211_mgd_assoc()
4820 ifmgd->mfp = IEEE80211_MFP_REQUIRED; in ieee80211_mgd_assoc()
4821 ifmgd->flags |= IEEE80211_STA_MFP_ENABLED; in ieee80211_mgd_assoc()
4823 ifmgd->mfp = IEEE80211_MFP_DISABLED; in ieee80211_mgd_assoc()
4824 ifmgd->flags &= ~IEEE80211_STA_MFP_ENABLED; in ieee80211_mgd_assoc()
4828 ifmgd->flags |= IEEE80211_STA_ENABLE_RRM; in ieee80211_mgd_assoc()
4830 ifmgd->flags &= ~IEEE80211_STA_ENABLE_RRM; in ieee80211_mgd_assoc()
4833 ifmgd->flags |= IEEE80211_STA_CONTROL_PORT; in ieee80211_mgd_assoc()
4835 ifmgd->flags &= ~IEEE80211_STA_CONTROL_PORT; in ieee80211_mgd_assoc()
4844 ifmgd->assoc_data = assoc_data; in ieee80211_mgd_assoc()
4845 ifmgd->dtim_period = 0; in ieee80211_mgd_assoc()
4846 ifmgd->have_beacon = false; in ieee80211_mgd_assoc()
4862 ifmgd->bssid); in ieee80211_mgd_assoc()
4875 ifmgd->dtim_period = tim->dtim_period; in ieee80211_mgd_assoc()
4878 ifmgd->have_beacon = true; in ieee80211_mgd_assoc()
4912 eth_zero_addr(ifmgd->bssid); in ieee80211_mgd_assoc()
4914 ifmgd->assoc_data = NULL; in ieee80211_mgd_assoc()
4923 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_deauth() local
4927 if (ifmgd->auth_data && in ieee80211_mgd_deauth()
4928 ether_addr_equal(ifmgd->auth_data->bss->bssid, req->bssid)) { in ieee80211_mgd_deauth()
4947 if (ifmgd->assoc_data && in ieee80211_mgd_deauth()
4948 ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) { in ieee80211_mgd_deauth()
4966 if (ifmgd->associated && in ieee80211_mgd_deauth()
4967 ether_addr_equal(ifmgd->associated->bssid, req->bssid)) { in ieee80211_mgd_deauth()
4987 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_disassoc() local
4997 if (ifmgd->associated != req->bss) in ieee80211_mgd_disassoc()
5017 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; in ieee80211_mgd_stop() local
5024 cancel_work_sync(&ifmgd->monitor_work); in ieee80211_mgd_stop()
5025 cancel_work_sync(&ifmgd->beacon_connection_loss_work); in ieee80211_mgd_stop()
5026 cancel_work_sync(&ifmgd->request_smps_work); in ieee80211_mgd_stop()
5027 cancel_work_sync(&ifmgd->csa_connection_drop_work); in ieee80211_mgd_stop()
5028 cancel_work_sync(&ifmgd->chswitch_work); in ieee80211_mgd_stop()
5029 cancel_delayed_work_sync(&ifmgd->tdls_peer_del_work); in ieee80211_mgd_stop()
5032 if (ifmgd->assoc_data) { in ieee80211_mgd_stop()
5033 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; in ieee80211_mgd_stop()
5037 if (ifmgd->auth_data) in ieee80211_mgd_stop()
5039 spin_lock_bh(&ifmgd->teardown_lock); in ieee80211_mgd_stop()
5040 if (ifmgd->teardown_skb) { in ieee80211_mgd_stop()
5041 kfree_skb(ifmgd->teardown_skb); in ieee80211_mgd_stop()
5042 ifmgd->teardown_skb = NULL; in ieee80211_mgd_stop()
5043 ifmgd->orig_teardown_skb = NULL; in ieee80211_mgd_stop()
5045 spin_unlock_bh(&ifmgd->teardown_lock); in ieee80211_mgd_stop()
5046 del_timer_sync(&ifmgd->timer); in ieee80211_mgd_stop()