H A D | mlme.c | 123 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_reset_conn_monitor() local 128 ifmgd->probe_send_count = 0; ieee80211_sta_reset_conn_monitor() 151 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_determine_chantype() local 247 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) ieee80211_determine_chantype() 256 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) ieee80211_determine_chantype() 269 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) ieee80211_determine_chantype() 343 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_config_bw() local 353 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT || !ht_oper) ieee80211_config_bw() 357 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) ieee80211_config_bw() 388 if (ifmgd->flags & IEEE80211_STA_DISABLE_80P80MHZ && ieee80211_config_bw() 391 if (ifmgd->flags & IEEE80211_STA_DISABLE_160MHZ && ieee80211_config_bw() 394 if (ifmgd->flags & IEEE80211_STA_DISABLE_40MHZ && ieee80211_config_bw() 403 ifmgd->bssid, chandef.chan->center_freq, chandef.width, ieee80211_config_bw() 406 if (flags != (ifmgd->flags & (IEEE80211_STA_DISABLE_HT | ieee80211_config_bw() 414 ifmgd->bssid); ieee80211_config_bw() 450 ifmgd->bssid); ieee80211_config_bw() 624 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_send_assoc() local 625 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; ieee80211_send_assoc() 708 if (ifmgd->flags & IEEE80211_STA_ENABLE_RRM) ieee80211_send_assoc() 839 if (WARN_ON_ONCE((ifmgd->flags & IEEE80211_STA_DISABLE_HT) && ieee80211_send_assoc() 840 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))) ieee80211_send_assoc() 841 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_send_assoc() 843 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) ieee80211_send_assoc() 877 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) ieee80211_send_assoc() 893 qos_info = ifmgd->uapsd_queues; ieee80211_send_assoc() 894 qos_info |= (ifmgd->uapsd_max_sp_len << ieee80211_send_assoc() 942 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_send_nullfunc() local 958 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) ieee80211_send_nullfunc() 1000 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_chswitch_work() local 1010 if (!ifmgd->associated) ieee80211_chswitch_work() 1038 &ifmgd->csa_connection_drop_work); ieee80211_chswitch_work() 1050 &ifmgd->csa_connection_drop_work); ieee80211_chswitch_work() 1055 ifmgd->associated->channel = sdata->csa_chandef.chan; ieee80211_chswitch_work() 1057 ifmgd->csa_waiting_bcn = true; ieee80211_chswitch_work() 1071 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_chswitch_post_beacon() local 1085 ifmgd->csa_waiting_bcn = false; ieee80211_chswitch_post_beacon() 1092 &ifmgd->csa_connection_drop_work); ieee80211_chswitch_post_beacon() 1102 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_chswitch_done() local 1109 &ifmgd->csa_connection_drop_work); ieee80211_chswitch_done() 1111 ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work); ieee80211_chswitch_done() 1131 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_process_chanswitch() local 1132 struct cfg80211_bss *cbss = ifmgd->associated; ieee80211_sta_process_chanswitch() 1155 ifmgd->flags, ieee80211_sta_process_chanswitch() 1156 ifmgd->associated->bssid, &csa_ie); ieee80211_sta_process_chanswitch() 1159 &ifmgd->csa_connection_drop_work); ieee80211_sta_process_chanswitch() 1167 ifmgd->associated->bssid, ieee80211_sta_process_chanswitch() 1172 &ifmgd->csa_connection_drop_work); ieee80211_sta_process_chanswitch() 1178 if (ifmgd->csa_ignored_same_chan) ieee80211_sta_process_chanswitch() 1182 ifmgd->associated->bssid); ieee80211_sta_process_chanswitch() 1183 ifmgd->csa_ignored_same_chan = true; ieee80211_sta_process_chanswitch() 1239 ifmgd->csa_ignored_same_chan = false; ieee80211_sta_process_chanswitch() 1257 ieee80211_queue_work(&local->hw, &ifmgd->chswitch_work); ieee80211_sta_process_chanswitch() 1259 mod_timer(&ifmgd->chswitch_timer, ieee80211_sta_process_chanswitch() 1264 ieee80211_queue_work(&local->hw, &ifmgd->csa_connection_drop_work); ieee80211_sta_process_chanswitch() 1569 struct ieee80211_if_managed *ifmgd; ieee80211_dynamic_ps_enable_work() local 1577 ifmgd = &sdata->u.mgd; ieee80211_dynamic_ps_enable_work() 1611 !(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { ieee80211_dynamic_ps_enable_work() 1625 (ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) { ieee80211_dynamic_ps_enable_work() 1626 ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED; ieee80211_dynamic_ps_enable_work() 1662 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; __ieee80211_sta_handle_tspec_ac_params() local 1670 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; __ieee80211_sta_handle_tspec_ac_params() 1720 schedule_delayed_work(&ifmgd->tx_tspec_wk, __ieee80211_sta_handle_tspec_ac_params() 1753 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_wmm_params() local 1771 if (ifmgd->flags & IEEE80211_STA_UAPSD_ENABLED) ieee80211_sta_wmm_params() 1772 uapsd_queues = ifmgd->uapsd_queues; ieee80211_sta_wmm_params() 1775 if (count == ifmgd->wmm_last_param_set) ieee80211_sta_wmm_params() 1777 ifmgd->wmm_last_param_set = count; ieee80211_sta_wmm_params() 1850 ifmgd->tx_tspec[ac].downgraded); ieee80211_sta_wmm_params() 1852 if (!ifmgd->tx_tspec[ac].downgraded && ieee80211_sta_wmm_params() 2007 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_set_disassoc() local 2016 if (WARN_ON(!ifmgd->associated)) ieee80211_set_disassoc() 2021 ifmgd->associated = NULL; ieee80211_set_disassoc() 2052 ieee80211_send_deauth_disassoc(sdata, ifmgd->bssid, stype, ieee80211_set_disassoc() 2060 eth_zero_addr(ifmgd->bssid); ieee80211_set_disassoc() 2072 ifmgd->p2p_noa_index = -1; ieee80211_set_disassoc() 2077 memset(&ifmgd->ht_capa, 0, sizeof(ifmgd->ht_capa)); ieee80211_set_disassoc() 2078 memset(&ifmgd->ht_capa_mask, 0, sizeof(ifmgd->ht_capa_mask)); ieee80211_set_disassoc() 2079 memset(&ifmgd->vht_capa, 0, sizeof(ifmgd->vht_capa)); ieee80211_set_disassoc() 2080 memset(&ifmgd->vht_capa_mask, 0, sizeof(ifmgd->vht_capa_mask)); ieee80211_set_disassoc() 2110 ifmgd->have_beacon = false; ieee80211_set_disassoc() 2112 ifmgd->flags = 0; ieee80211_set_disassoc() 2117 ifmgd->csa_waiting_bcn = false; ieee80211_set_disassoc() 2118 ifmgd->csa_ignored_same_chan = false; ieee80211_set_disassoc() 2127 memset(ifmgd->tx_tspec, 0, sizeof(ifmgd->tx_tspec)); ieee80211_set_disassoc() 2128 cancel_delayed_work_sync(&ifmgd->tx_tspec_wk); ieee80211_set_disassoc() 2152 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_reset_ap_probe() local 2156 if (!(ifmgd->flags & IEEE80211_STA_CONNECTION_POLL)) ieee80211_reset_ap_probe() 2175 mod_timer(&ifmgd->conn_mon_timer, ieee80211_reset_ap_probe() 2186 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_tx_wmm_ac_notify() local 2189 struct ieee80211_sta_tx_tspec *tx_tspec = &ifmgd->tx_tspec[ac]; ieee80211_sta_tx_wmm_ac_notify() 2201 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); ieee80211_sta_tx_wmm_ac_notify() 2213 schedule_delayed_work(&ifmgd->tx_tspec_wk, 0); ieee80211_sta_tx_wmm_ac_notify() 2241 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_probe_ap_send() local 2243 u8 *dst = ifmgd->associated->bssid; ieee80211_mgd_probe_ap_send() 2251 if (ifmgd->probe_send_count >= unicast_limit) ieee80211_mgd_probe_ap_send() 2261 ifmgd->probe_send_count++; ieee80211_mgd_probe_ap_send() 2264 ifmgd->nullfunc_failed = false; ieee80211_mgd_probe_ap_send() 2270 ssid = ieee80211_bss_get_ie(ifmgd->associated, WLAN_EID_SSID); ieee80211_mgd_probe_ap_send() 2279 ifmgd->associated->channel, false); ieee80211_mgd_probe_ap_send() 2283 ifmgd->probe_timeout = jiffies + msecs_to_jiffies(probe_wait_ms); ieee80211_mgd_probe_ap_send() 2284 run_again(sdata, ifmgd->probe_timeout); ieee80211_mgd_probe_ap_send() 2290 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_probe_ap() local 2298 if (!ifmgd->associated) ieee80211_mgd_probe_ap() 2327 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) ieee80211_mgd_probe_ap() 2330 ifmgd->flags |= IEEE80211_STA_CONNECTION_POLL; ieee80211_mgd_probe_ap() 2341 ifmgd->probe_send_count = 0; ieee80211_mgd_probe_ap() 2351 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_ap_probereq_get() local 2362 if (ifmgd->associated) ieee80211_ap_probereq_get() 2363 cbss = ifmgd->associated; ieee80211_ap_probereq_get() 2364 else if (ifmgd->auth_data) ieee80211_ap_probereq_get() 2365 cbss = ifmgd->auth_data->bss; ieee80211_ap_probereq_get() 2366 else if (ifmgd->assoc_data) ieee80211_ap_probereq_get() 2367 cbss = ifmgd->assoc_data->bss; ieee80211_ap_probereq_get() 2409 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; __ieee80211_disconnect() local 2413 if (!ifmgd->associated) { __ieee80211_disconnect() 2423 ifmgd->csa_waiting_bcn = false; __ieee80211_disconnect() 2442 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_beacon_connection_loss_work() local 2444 if (ifmgd->associated) ieee80211_beacon_connection_loss_work() 2445 ifmgd->beacon_loss_count++; ieee80211_beacon_connection_loss_work() 2447 if (ifmgd->connection_loss) { ieee80211_beacon_connection_loss_work() 2449 ifmgd->bssid); ieee80211_beacon_connection_loss_work() 2576 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_auth() local 2590 if (!ifmgd->auth_data || ifmgd->auth_data->done) ieee80211_rx_mgmt_auth() 2593 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); ieee80211_rx_mgmt_auth() 2602 if (auth_alg != ifmgd->auth_data->algorithm || ieee80211_rx_mgmt_auth() 2603 auth_transaction != ifmgd->auth_data->expected_transaction) { ieee80211_rx_mgmt_auth() 2605 mgmt->sa, auth_alg, ifmgd->auth_data->algorithm, ieee80211_rx_mgmt_auth() 2607 ifmgd->auth_data->expected_transaction); ieee80211_rx_mgmt_auth() 2622 switch (ifmgd->auth_data->algorithm) { ieee80211_rx_mgmt_auth() 2629 if (ifmgd->auth_data->expected_transaction != 4) { ieee80211_rx_mgmt_auth() 2637 ifmgd->auth_data->algorithm); ieee80211_rx_mgmt_auth() 2644 ifmgd->auth_data->done = true; ieee80211_rx_mgmt_auth() 2645 ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC; ieee80211_rx_mgmt_auth() 2646 ifmgd->auth_data->timeout_started = true; ieee80211_rx_mgmt_auth() 2647 run_again(sdata, ifmgd->auth_data->timeout); ieee80211_rx_mgmt_auth() 2649 if (ifmgd->auth_data->algorithm == WLAN_AUTH_SAE && ieee80211_rx_mgmt_auth() 2650 ifmgd->auth_data->expected_transaction != 2) { ieee80211_rx_mgmt_auth() 2739 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_deauth() local 2747 if (ifmgd->associated && ieee80211_rx_mgmt_deauth() 2748 ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) { ieee80211_rx_mgmt_deauth() 2749 const u8 *bssid = ifmgd->associated->bssid; ieee80211_rx_mgmt_deauth() 2762 if (ifmgd->assoc_data && ieee80211_rx_mgmt_deauth() 2763 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->bss->bssid)) { ieee80211_rx_mgmt_deauth() 2764 const u8 *bssid = ifmgd->assoc_data->bss->bssid; ieee80211_rx_mgmt_deauth() 2782 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_disassoc() local 2790 if (!ifmgd->associated || ieee80211_rx_mgmt_disassoc() 2791 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) ieee80211_rx_mgmt_disassoc() 2859 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_assoc_success() local 2868 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; ieee80211_assoc_success() 2883 ifmgd->broken_ap = false; ieee80211_assoc_success() 2889 ifmgd->broken_ap = true; ieee80211_assoc_success() 2900 ifmgd->aid = aid; ieee80211_assoc_success() 2901 ifmgd->tdls_chan_switch_prohibited = ieee80211_assoc_success() 2913 (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && ieee80211_assoc_success() 2915 (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && ieee80211_assoc_success() 2943 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { ieee80211_assoc_success() 2949 !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { ieee80211_assoc_success() 2955 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { ieee80211_assoc_success() 2961 !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) { ieee80211_assoc_success() 2972 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && ieee80211_assoc_success() 2980 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && ieee80211_assoc_success() 3003 if (elems.ht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) ieee80211_assoc_success() 3007 if (elems.vht_cap_elem && !(ifmgd->flags & IEEE80211_STA_DISABLE_VHT)) ieee80211_assoc_success() 3035 if (ifmgd->flags & IEEE80211_STA_MFP_ENABLED) { ieee80211_assoc_success() 3045 if (!err && !(ifmgd->flags & IEEE80211_STA_CONTROL_PORT)) ieee80211_assoc_success() 3065 ifmgd->wmm_last_param_set = -1; ieee80211_assoc_success() 3067 if (ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { ieee80211_assoc_success() 3080 ifmgd->flags |= IEEE80211_STA_DISABLE_WMM; ieee80211_assoc_success() 3094 if (ifmgd->use_4addr) ieee80211_assoc_success() 3114 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_assoc_resp() local 3115 struct ieee80211_mgd_assoc_data *assoc_data = ifmgd->assoc_data; ieee80211_rx_mgmt_assoc_resp() 3236 struct ieee80211_if_managed *ifmgd; ieee80211_rx_mgmt_probe_resp() local 3241 ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_probe_resp() 3257 if (ifmgd->associated && ieee80211_rx_mgmt_probe_resp() 3258 ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) ieee80211_rx_mgmt_probe_resp() 3290 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_rx_mgmt_beacon() local 3326 if (ifmgd->assoc_data && ifmgd->assoc_data->need_beacon && ieee80211_rx_mgmt_beacon() 3327 ether_addr_equal(mgmt->bssid, ifmgd->assoc_data->bss->bssid)) { ieee80211_rx_mgmt_beacon() 3334 ifmgd->dtim_period = tim_ie->dtim_period; ieee80211_rx_mgmt_beacon() 3336 ifmgd->have_beacon = true; ieee80211_rx_mgmt_beacon() 3337 ifmgd->assoc_data->need_beacon = false; ieee80211_rx_mgmt_beacon() 3350 ifmgd->assoc_data->timeout = jiffies; ieee80211_rx_mgmt_beacon() 3351 ifmgd->assoc_data->timeout_started = true; ieee80211_rx_mgmt_beacon() 3352 run_again(sdata, ifmgd->assoc_data->timeout); ieee80211_rx_mgmt_beacon() 3356 if (!ifmgd->associated || ieee80211_rx_mgmt_beacon() 3357 !ether_addr_equal(mgmt->bssid, ifmgd->associated->bssid)) ieee80211_rx_mgmt_beacon() 3359 bssid = ifmgd->associated->bssid; ieee80211_rx_mgmt_beacon() 3362 if (ifmgd->flags & IEEE80211_STA_RESET_SIGNAL_AVE) { ieee80211_rx_mgmt_beacon() 3363 ifmgd->flags &= ~IEEE80211_STA_RESET_SIGNAL_AVE; ieee80211_rx_mgmt_beacon() 3364 ewma_beacon_signal_init(&ifmgd->ave_beacon_signal); ieee80211_rx_mgmt_beacon() 3365 ifmgd->last_cqm_event_signal = 0; ieee80211_rx_mgmt_beacon() 3366 ifmgd->count_beacon_signal = 1; ieee80211_rx_mgmt_beacon() 3367 ifmgd->last_ave_beacon_signal = 0; ieee80211_rx_mgmt_beacon() 3369 ifmgd->count_beacon_signal++; ieee80211_rx_mgmt_beacon() 3372 ewma_beacon_signal_add(&ifmgd->ave_beacon_signal, -rx_status->signal); ieee80211_rx_mgmt_beacon() 3374 if (ifmgd->rssi_min_thold != ifmgd->rssi_max_thold && ieee80211_rx_mgmt_beacon() 3375 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) { ieee80211_rx_mgmt_beacon() 3376 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal); ieee80211_rx_mgmt_beacon() 3377 int last_sig = ifmgd->last_ave_beacon_signal; ieee80211_rx_mgmt_beacon() 3386 if (sig > ifmgd->rssi_max_thold && ieee80211_rx_mgmt_beacon() 3387 (last_sig <= ifmgd->rssi_min_thold || last_sig == 0)) { ieee80211_rx_mgmt_beacon() 3388 ifmgd->last_ave_beacon_signal = sig; ieee80211_rx_mgmt_beacon() 3391 } else if (sig < ifmgd->rssi_min_thold && ieee80211_rx_mgmt_beacon() 3392 (last_sig >= ifmgd->rssi_max_thold || ieee80211_rx_mgmt_beacon() 3394 ifmgd->last_ave_beacon_signal = sig; ieee80211_rx_mgmt_beacon() 3401 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT && ieee80211_rx_mgmt_beacon() 3403 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal); ieee80211_rx_mgmt_beacon() 3404 int last_event = ifmgd->last_cqm_event_signal; ieee80211_rx_mgmt_beacon() 3410 ifmgd->last_cqm_event_signal = sig; ieee80211_rx_mgmt_beacon() 3417 ifmgd->last_cqm_event_signal = sig; ieee80211_rx_mgmt_beacon() 3425 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) { ieee80211_rx_mgmt_beacon() 3443 ieee80211_check_tim(elems.tim, elems.tim_len, ifmgd->aid)) { ieee80211_rx_mgmt_beacon() 3484 ifmgd->beacon_crc_valid = false; ieee80211_rx_mgmt_beacon() 3491 ifmgd->beacon_crc_valid = false; ieee80211_rx_mgmt_beacon() 3495 if (ifmgd->csa_waiting_bcn) ieee80211_rx_mgmt_beacon() 3518 if (ncrc == ifmgd->beacon_crc && ifmgd->beacon_crc_valid) ieee80211_rx_mgmt_beacon() 3520 ifmgd->beacon_crc = ncrc; ieee80211_rx_mgmt_beacon() 3521 ifmgd->beacon_crc_valid = true; ieee80211_rx_mgmt_beacon() 3529 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_WMM) && ieee80211_rx_mgmt_beacon() 3538 if (!ifmgd->have_beacon) { ieee80211_rx_mgmt_beacon() 3546 ifmgd->have_beacon = true; ieee80211_rx_mgmt_beacon() 3702 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_auth() local 3703 struct ieee80211_mgd_auth_data *auth_data = ifmgd->auth_data; ieee80211_auth() 3822 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_work() local 3826 if (ifmgd->status_received) { ieee80211_sta_work() 3827 __le16 fc = ifmgd->status_fc; ieee80211_sta_work() 3828 bool status_acked = ifmgd->status_acked; ieee80211_sta_work() 3830 ifmgd->status_received = false; ieee80211_sta_work() 3831 if (ifmgd->auth_data && ieee80211_is_auth(fc)) { ieee80211_sta_work() 3833 ifmgd->auth_data->timeout = ieee80211_sta_work() 3835 run_again(sdata, ifmgd->auth_data->timeout); ieee80211_sta_work() 3837 ifmgd->auth_data->timeout = jiffies - 1; ieee80211_sta_work() 3839 ifmgd->auth_data->timeout_started = true; ieee80211_sta_work() 3840 } else if (ifmgd->assoc_data && ieee80211_sta_work() 3844 ifmgd->assoc_data->timeout = ieee80211_sta_work() 3846 run_again(sdata, ifmgd->assoc_data->timeout); ieee80211_sta_work() 3848 ifmgd->assoc_data->timeout = jiffies - 1; ieee80211_sta_work() 3850 ifmgd->assoc_data->timeout_started = true; ieee80211_sta_work() 3854 if (ifmgd->auth_data && ifmgd->auth_data->timeout_started && ieee80211_sta_work() 3855 time_after(jiffies, ifmgd->auth_data->timeout)) { ieee80211_sta_work() 3856 if (ifmgd->auth_data->done) { ieee80211_sta_work() 3870 memcpy(bssid, ifmgd->auth_data->bss->bssid, ETH_ALEN); ieee80211_sta_work() 3877 } else if (ifmgd->auth_data && ifmgd->auth_data->timeout_started) ieee80211_sta_work() 3878 run_again(sdata, ifmgd->auth_data->timeout); ieee80211_sta_work() 3880 if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started && ieee80211_sta_work() 3881 time_after(jiffies, ifmgd->assoc_data->timeout)) { ieee80211_sta_work() 3882 if ((ifmgd->assoc_data->need_beacon && !ifmgd->have_beacon) || ieee80211_sta_work() 3884 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; ieee80211_sta_work() 3895 } else if (ifmgd->assoc_data && ifmgd->assoc_data->timeout_started) ieee80211_sta_work() 3896 run_again(sdata, ifmgd->assoc_data->timeout); ieee80211_sta_work() 3898 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL && ieee80211_sta_work() 3899 ifmgd->associated) { ieee80211_sta_work() 3903 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); ieee80211_sta_work() 3911 if (!ifmgd->probe_send_count) ieee80211_sta_work() 3913 else if (ifmgd->nullfunc_failed) { ieee80211_sta_work() 3914 if (ifmgd->probe_send_count < max_tries) { ieee80211_sta_work() 3917 bssid, ifmgd->probe_send_count, ieee80211_sta_work() 3928 } else if (time_is_after_jiffies(ifmgd->probe_timeout)) ieee80211_sta_work() 3929 run_again(sdata, ifmgd->probe_timeout); ieee80211_sta_work() 3936 } else if (ifmgd->probe_send_count < max_tries) { ieee80211_sta_work() 3940 ifmgd->probe_send_count, max_tries); ieee80211_sta_work() 3965 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_bcn_mon_timer() local 3967 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) ieee80211_sta_bcn_mon_timer() 3979 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_conn_mon_timer() local 3982 if (sdata->vif.csa_active && !ifmgd->csa_waiting_bcn) ieee80211_sta_conn_mon_timer() 3985 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work); ieee80211_sta_conn_mon_timer() 4012 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_quiesce() local 4017 if (ifmgd->auth_data || ifmgd->assoc_data) { ieee80211_mgd_quiesce() 4018 const u8 *bssid = ifmgd->auth_data ? ieee80211_mgd_quiesce() 4019 ifmgd->auth_data->bss->bssid : ieee80211_mgd_quiesce() 4020 ifmgd->assoc_data->bss->bssid; ieee80211_mgd_quiesce() 4031 if (ifmgd->assoc_data) ieee80211_mgd_quiesce() 4033 if (ifmgd->auth_data) ieee80211_mgd_quiesce() 4056 if (ifmgd->associated && !sdata->local->wowlan) { ieee80211_mgd_quiesce() 4063 memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); ieee80211_mgd_quiesce() 4072 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_sta_restart() local 4075 if (!ifmgd->associated) { ieee80211_sta_restart() 4084 ifmgd->associated->bssid, ieee80211_sta_restart() 4097 struct ieee80211_if_managed *ifmgd; ieee80211_sta_setup_sdata() local 4099 ifmgd = &sdata->u.mgd; ieee80211_sta_setup_sdata() 4100 INIT_WORK(&ifmgd->monitor_work, ieee80211_sta_monitor_work); ieee80211_sta_setup_sdata() 4101 INIT_WORK(&ifmgd->chswitch_work, ieee80211_chswitch_work); ieee80211_sta_setup_sdata() 4102 INIT_WORK(&ifmgd->beacon_connection_loss_work, ieee80211_sta_setup_sdata() 4104 INIT_WORK(&ifmgd->csa_connection_drop_work, ieee80211_sta_setup_sdata() 4106 INIT_WORK(&ifmgd->request_smps_work, ieee80211_request_smps_mgd_work); ieee80211_sta_setup_sdata() 4107 INIT_DELAYED_WORK(&ifmgd->tdls_peer_del_work, ieee80211_sta_setup_sdata() 4109 setup_timer(&ifmgd->timer, ieee80211_sta_timer, ieee80211_sta_setup_sdata() 4111 setup_timer(&ifmgd->bcn_mon_timer, ieee80211_sta_bcn_mon_timer, ieee80211_sta_setup_sdata() 4113 setup_timer(&ifmgd->conn_mon_timer, ieee80211_sta_conn_mon_timer, ieee80211_sta_setup_sdata() 4115 setup_timer(&ifmgd->chswitch_timer, ieee80211_chswitch_timer, ieee80211_sta_setup_sdata() 4117 INIT_DELAYED_WORK(&ifmgd->tx_tspec_wk, ieee80211_sta_setup_sdata() 4120 ifmgd->flags = 0; ieee80211_sta_setup_sdata() 4121 ifmgd->powersave = sdata->wdev.ps; ieee80211_sta_setup_sdata() 4122 ifmgd->uapsd_queues = sdata->local->hw.uapsd_queues; ieee80211_sta_setup_sdata() 4123 ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len; ieee80211_sta_setup_sdata() 4124 ifmgd->p2p_noa_index = -1; ieee80211_sta_setup_sdata() 4127 ifmgd->req_smps = IEEE80211_SMPS_AUTOMATIC; ieee80211_sta_setup_sdata() 4129 ifmgd->req_smps = IEEE80211_SMPS_OFF; ieee80211_sta_setup_sdata() 4132 spin_lock_init(&ifmgd->teardown_lock); ieee80211_sta_setup_sdata() 4133 ifmgd->teardown_skb = NULL; ieee80211_sta_setup_sdata() 4134 ifmgd->orig_teardown_skb = NULL; ieee80211_sta_setup_sdata() 4154 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_ht_vht_rx_chains() local 4160 if (ifmgd->flags & IEEE80211_STA_DISABLE_HT) ieee80211_ht_vht_rx_chains() 4173 if (ifmgd->flags & IEEE80211_STA_DISABLE_VHT) ieee80211_ht_vht_rx_chains() 4199 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_prep_channel() local 4211 ifmgd->flags &= ~(IEEE80211_STA_DISABLE_40MHZ | ieee80211_prep_channel() 4217 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && ieee80211_prep_channel() 4230 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_prep_channel() 4235 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && ieee80211_prep_channel() 4247 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_prep_channel() 4248 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_prep_channel() 4253 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_prep_channel() 4270 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_prep_channel() 4272 ifmgd->flags |= ieee80211_determine_chantype(sdata, sband, ieee80211_prep_channel() 4300 ifmgd->flags |= ieee80211_chandef_downgrade(&chandef); ieee80211_prep_channel() 4314 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_prep_connection() local 4323 if (WARN_ON(!ifmgd->auth_data && !ifmgd->assoc_data)) ieee80211_prep_connection() 4397 memcpy(ifmgd->bssid, cbss->bssid, ETH_ALEN); ieee80211_prep_connection() 4447 WARN_ON_ONCE(!ether_addr_equal(ifmgd->bssid, cbss->bssid)); ieee80211_prep_connection() 4461 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_auth() local 4522 if ((ifmgd->auth_data && !ifmgd->auth_data->done) || ieee80211_mgd_auth() 4523 ifmgd->assoc_data) { ieee80211_mgd_auth() 4528 if (ifmgd->auth_data) ieee80211_mgd_auth() 4532 ifmgd->auth_data = auth_data; ieee80211_mgd_auth() 4534 if (ifmgd->associated) { ieee80211_mgd_auth() 4563 eth_zero_addr(ifmgd->bssid); ieee80211_mgd_auth() 4565 ifmgd->auth_data = NULL; ieee80211_mgd_auth() 4578 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_assoc() local 4602 if (ifmgd->associated) { ieee80211_mgd_assoc() 4614 if (ifmgd->auth_data && !ifmgd->auth_data->done) { ieee80211_mgd_assoc() 4619 if (ifmgd->assoc_data) { ieee80211_mgd_assoc() 4624 if (ifmgd->auth_data) { ieee80211_mgd_assoc() 4628 match = ether_addr_equal(ifmgd->bssid, req->bss->bssid); ieee80211_mgd_assoc() 4634 ifmgd->beacon_crc_valid = false; ieee80211_mgd_assoc() 4650 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_mgd_assoc() 4651 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_mgd_assoc() 4661 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { ieee80211_mgd_assoc() 4662 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_mgd_assoc() 4664 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) ieee80211_mgd_assoc() 4672 ifmgd->flags & IEEE80211_STA_DISABLE_WMM) { ieee80211_mgd_assoc() 4673 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_mgd_assoc() 4675 !(ifmgd->flags & IEEE80211_STA_DISABLE_WMM)) ieee80211_mgd_assoc() 4680 memcpy(&ifmgd->ht_capa, &req->ht_capa, sizeof(ifmgd->ht_capa)); ieee80211_mgd_assoc() 4681 memcpy(&ifmgd->ht_capa_mask, &req->ht_capa_mask, ieee80211_mgd_assoc() 4682 sizeof(ifmgd->ht_capa_mask)); ieee80211_mgd_assoc() 4684 memcpy(&ifmgd->vht_capa, &req->vht_capa, sizeof(ifmgd->vht_capa)); ieee80211_mgd_assoc() 4685 memcpy(&ifmgd->vht_capa_mask, &req->vht_capa_mask, ieee80211_mgd_assoc() 4686 sizeof(ifmgd->vht_capa_mask)); ieee80211_mgd_assoc() 4695 if (ifmgd->req_smps == IEEE80211_SMPS_AUTOMATIC) { ieee80211_mgd_assoc() 4696 if (ifmgd->powersave) ieee80211_mgd_assoc() 4701 sdata->smps_mode = ifmgd->req_smps; ieee80211_mgd_assoc() 4713 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_mgd_assoc() 4719 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_mgd_assoc() 4730 ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED; ieee80211_mgd_assoc() 4733 ifmgd->flags &= ~IEEE80211_STA_UAPSD_ENABLED; ieee80211_mgd_assoc() 4740 ifmgd->mfp = IEEE80211_MFP_REQUIRED; ieee80211_mgd_assoc() 4741 ifmgd->flags |= IEEE80211_STA_MFP_ENABLED; ieee80211_mgd_assoc() 4743 ifmgd->mfp = IEEE80211_MFP_DISABLED; ieee80211_mgd_assoc() 4744 ifmgd->flags &= ~IEEE80211_STA_MFP_ENABLED; ieee80211_mgd_assoc() 4748 ifmgd->flags |= IEEE80211_STA_ENABLE_RRM; ieee80211_mgd_assoc() 4750 ifmgd->flags &= ~IEEE80211_STA_ENABLE_RRM; ieee80211_mgd_assoc() 4753 ifmgd->flags |= IEEE80211_STA_CONTROL_PORT; ieee80211_mgd_assoc() 4755 ifmgd->flags &= ~IEEE80211_STA_CONTROL_PORT; ieee80211_mgd_assoc() 4764 ifmgd->assoc_data = assoc_data; ieee80211_mgd_assoc() 4765 ifmgd->dtim_period = 0; ieee80211_mgd_assoc() 4766 ifmgd->have_beacon = false; ieee80211_mgd_assoc() 4769 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) { ieee80211_mgd_assoc() 4779 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_40MHZ) && ieee80211_mgd_assoc() 4784 if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT) && ieee80211_mgd_assoc() 4790 ifmgd->flags |= IEEE80211_STA_DISABLE_HT; ieee80211_mgd_assoc() 4791 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_mgd_assoc() 4795 ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; ieee80211_mgd_assoc() 4811 ifmgd->bssid); ieee80211_mgd_assoc() 4824 ifmgd->dtim_period = tim->dtim_period; ieee80211_mgd_assoc() 4827 ifmgd->have_beacon = true; ieee80211_mgd_assoc() 4861 eth_zero_addr(ifmgd->bssid); ieee80211_mgd_assoc() 4863 ifmgd->assoc_data = NULL; ieee80211_mgd_assoc() 4872 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_deauth() local 4876 if (ifmgd->auth_data && ieee80211_mgd_deauth() 4877 ether_addr_equal(ifmgd->auth_data->bss->bssid, req->bssid)) { ieee80211_mgd_deauth() 4896 if (ifmgd->assoc_data && ieee80211_mgd_deauth() 4897 ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) { ieee80211_mgd_deauth() 4915 if (ifmgd->associated && ieee80211_mgd_deauth() 4916 ether_addr_equal(ifmgd->associated->bssid, req->bssid)) { ieee80211_mgd_deauth() 4936 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_disassoc() local 4946 if (ifmgd->associated != req->bss) ieee80211_mgd_disassoc() 4966 struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; ieee80211_mgd_stop() local 4973 cancel_work_sync(&ifmgd->monitor_work); ieee80211_mgd_stop() 4974 cancel_work_sync(&ifmgd->beacon_connection_loss_work); ieee80211_mgd_stop() 4975 cancel_work_sync(&ifmgd->request_smps_work); ieee80211_mgd_stop() 4976 cancel_work_sync(&ifmgd->csa_connection_drop_work); ieee80211_mgd_stop() 4977 cancel_work_sync(&ifmgd->chswitch_work); ieee80211_mgd_stop() 4978 cancel_delayed_work_sync(&ifmgd->tdls_peer_del_work); ieee80211_mgd_stop() 4981 if (ifmgd->assoc_data) { ieee80211_mgd_stop() 4982 struct cfg80211_bss *bss = ifmgd->assoc_data->bss; ieee80211_mgd_stop() 4986 if (ifmgd->auth_data) ieee80211_mgd_stop() 4988 spin_lock_bh(&ifmgd->teardown_lock); ieee80211_mgd_stop() 4989 if (ifmgd->teardown_skb) { ieee80211_mgd_stop() 4990 kfree_skb(ifmgd->teardown_skb); ieee80211_mgd_stop() 4991 ifmgd->teardown_skb = NULL; ieee80211_mgd_stop() 4992 ifmgd->orig_teardown_skb = NULL; ieee80211_mgd_stop() 4994 spin_unlock_bh(&ifmgd->teardown_lock); ieee80211_mgd_stop() 4995 del_timer_sync(&ifmgd->timer); ieee80211_mgd_stop()
|