Lines Matching refs:local

114 	if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR))  in ieee80211_sta_reset_beacon_monitor()
130 if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR)) in ieee80211_sta_reset_conn_monitor()
315 while (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef, in ieee80211_determine_chantype()
342 struct ieee80211_local *local = sdata->local; in ieee80211_config_bw() local
374 sband = local->hw.wiphy->bands[chan->band]; in ieee80211_config_bw()
442 rate_control_rate_update(local, sband, sta, in ieee80211_config_bw()
456 rate_control_rate_update(local, sband, sta, in ieee80211_config_bw()
543 struct ieee80211_local *local = sdata->local; in ieee80211_add_vht_ie() local
594 list_for_each_entry_rcu(other, &local->interfaces, list) { in ieee80211_add_vht_ie()
623 struct ieee80211_local *local = sdata->local; in ieee80211_send_assoc() local
648 sband = local->hw.wiphy->bands[chan->band]; in ieee80211_send_assoc()
678 skb = alloc_skb(local->hw.extra_tx_headroom + in ieee80211_send_assoc()
692 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_send_assoc()
705 ieee80211_hw_check(&local->hw, SPECTRUM_MGMT)) in ieee80211_send_assoc()
723 cpu_to_le16(local->hw.conf.listen_interval); in ieee80211_send_assoc()
732 cpu_to_le16(local->hw.conf.listen_interval); in ieee80211_send_assoc()
910 drv_mgd_prepare_tx(local, sdata); in ieee80211_send_assoc()
913 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_send_assoc()
919 void ieee80211_send_pspoll(struct ieee80211_local *local, in ieee80211_send_pspoll() argument
925 skb = ieee80211_pspoll_get(&local->hw, &sdata->vif); in ieee80211_send_pspoll()
936 void ieee80211_send_nullfunc(struct ieee80211_local *local, in ieee80211_send_nullfunc() argument
944 skb = ieee80211_nullfunc_get(&local->hw, &sdata->vif); in ieee80211_send_nullfunc()
955 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_send_nullfunc()
964 static void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local, in ieee80211_send_4addr_nullfunc() argument
974 skb = dev_alloc_skb(local->hw.extra_tx_headroom + 30); in ieee80211_send_4addr_nullfunc()
978 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_send_4addr_nullfunc()
999 struct ieee80211_local *local = sdata->local; in ieee80211_chswitch_work() local
1007 mutex_lock(&local->mtx); in ieee80211_chswitch_work()
1008 mutex_lock(&local->chanctx_mtx); in ieee80211_chswitch_work()
1037 ieee80211_queue_work(&sdata->local->hw, in ieee80211_chswitch_work()
1049 ieee80211_queue_work(&sdata->local->hw, in ieee80211_chswitch_work()
1063 mutex_unlock(&local->chanctx_mtx); in ieee80211_chswitch_work()
1064 mutex_unlock(&local->mtx); in ieee80211_chswitch_work()
1070 struct ieee80211_local *local = sdata->local; in ieee80211_chswitch_post_beacon() local
1079 ieee80211_wake_vif_queues(local, sdata, in ieee80211_chswitch_post_beacon()
1091 ieee80211_queue_work(&local->hw, in ieee80211_chswitch_post_beacon()
1108 ieee80211_queue_work(&sdata->local->hw, in ieee80211_chswitch_done()
1111 ieee80211_queue_work(&sdata->local->hw, &ifmgd->chswitch_work); in ieee80211_chswitch_done()
1121 ieee80211_queue_work(&sdata->local->hw, &sdata->u.mgd.chswitch_work); in ieee80211_chswitch_timer()
1130 struct ieee80211_local *local = sdata->local; in ieee80211_sta_process_chanswitch() local
1145 if (local->scanning) in ieee80211_sta_process_chanswitch()
1158 ieee80211_queue_work(&local->hw, in ieee80211_sta_process_chanswitch()
1163 if (!cfg80211_chandef_usable(local->hw.wiphy, &csa_ie.chandef, in ieee80211_sta_process_chanswitch()
1171 ieee80211_queue_work(&local->hw, in ieee80211_sta_process_chanswitch()
1195 mutex_lock(&local->mtx); in ieee80211_sta_process_chanswitch()
1196 mutex_lock(&local->chanctx_mtx); in ieee80211_sta_process_chanswitch()
1198 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_sta_process_chanswitch()
1207 if (local->use_chanctx && in ieee80211_sta_process_chanswitch()
1208 !ieee80211_hw_check(&local->hw, CHANCTX_STA_CSA)) { in ieee80211_sta_process_chanswitch()
1234 mutex_unlock(&local->chanctx_mtx); in ieee80211_sta_process_chanswitch()
1242 ieee80211_stop_vif_queues(local, sdata, in ieee80211_sta_process_chanswitch()
1244 mutex_unlock(&local->mtx); in ieee80211_sta_process_chanswitch()
1249 if (local->ops->channel_switch) { in ieee80211_sta_process_chanswitch()
1251 drv_channel_switch(local, sdata, &ch_switch); in ieee80211_sta_process_chanswitch()
1257 ieee80211_queue_work(&local->hw, &ifmgd->chswitch_work); in ieee80211_sta_process_chanswitch()
1264 ieee80211_queue_work(&local->hw, &ifmgd->csa_connection_drop_work); in ieee80211_sta_process_chanswitch()
1265 mutex_unlock(&local->chanctx_mtx); in ieee80211_sta_process_chanswitch()
1266 mutex_unlock(&local->mtx); in ieee80211_sta_process_chanswitch()
1409 static void ieee80211_enable_ps(struct ieee80211_local *local, in ieee80211_enable_ps() argument
1412 struct ieee80211_conf *conf = &local->hw.conf; in ieee80211_enable_ps()
1418 if (local->scanning) in ieee80211_enable_ps()
1422 !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS)) { in ieee80211_enable_ps()
1423 mod_timer(&local->dynamic_ps_timer, jiffies + in ieee80211_enable_ps()
1426 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK)) in ieee80211_enable_ps()
1427 ieee80211_send_nullfunc(local, sdata, true); in ieee80211_enable_ps()
1429 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) && in ieee80211_enable_ps()
1430 ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_enable_ps()
1434 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_enable_ps()
1438 static void ieee80211_change_ps(struct ieee80211_local *local) in ieee80211_change_ps() argument
1440 struct ieee80211_conf *conf = &local->hw.conf; in ieee80211_change_ps()
1442 if (local->ps_sdata) { in ieee80211_change_ps()
1443 ieee80211_enable_ps(local, local->ps_sdata); in ieee80211_change_ps()
1446 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_change_ps()
1447 del_timer_sync(&local->dynamic_ps_timer); in ieee80211_change_ps()
1448 cancel_work_sync(&local->dynamic_ps_enable_work); in ieee80211_change_ps()
1483 void ieee80211_recalc_ps(struct ieee80211_local *local) in ieee80211_recalc_ps() argument
1489 if (!ieee80211_hw_check(&local->hw, SUPPORTS_PS)) { in ieee80211_recalc_ps()
1490 local->ps_sdata = NULL; in ieee80211_recalc_ps()
1494 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_recalc_ps()
1518 timeout = local->dynamic_ps_forced_timeout; in ieee80211_recalc_ps()
1521 local->hw.conf.dynamic_ps_timeout = timeout; in ieee80211_recalc_ps()
1527 local->hw.conf.ps_dtim_period = dtimper; in ieee80211_recalc_ps()
1528 local->ps_sdata = found; in ieee80211_recalc_ps()
1530 local->ps_sdata = NULL; in ieee80211_recalc_ps()
1533 ieee80211_change_ps(local); in ieee80211_recalc_ps()
1548 struct ieee80211_local *local = in ieee80211_dynamic_ps_disable_work() local
1552 if (local->hw.conf.flags & IEEE80211_CONF_PS) { in ieee80211_dynamic_ps_disable_work()
1553 local->hw.conf.flags &= ~IEEE80211_CONF_PS; in ieee80211_dynamic_ps_disable_work()
1554 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_dynamic_ps_disable_work()
1557 ieee80211_wake_queues_by_reason(&local->hw, in ieee80211_dynamic_ps_disable_work()
1565 struct ieee80211_local *local = in ieee80211_dynamic_ps_enable_work() local
1568 struct ieee80211_sub_if_data *sdata = local->ps_sdata; in ieee80211_dynamic_ps_enable_work()
1579 if (local->hw.conf.flags & IEEE80211_CONF_PS) in ieee80211_dynamic_ps_enable_work()
1582 if (local->hw.conf.dynamic_ps_timeout > 0) { in ieee80211_dynamic_ps_enable_work()
1584 if (drv_tx_frames_pending(local)) { in ieee80211_dynamic_ps_enable_work()
1585 mod_timer(&local->dynamic_ps_timer, jiffies + in ieee80211_dynamic_ps_enable_work()
1587 local->hw.conf.dynamic_ps_timeout)); in ieee80211_dynamic_ps_enable_work()
1596 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_dynamic_ps_enable_work()
1597 for (q = 0; q < local->hw.queues; q++) { in ieee80211_dynamic_ps_enable_work()
1598 if (local->queue_stop_reasons[q]) { in ieee80211_dynamic_ps_enable_work()
1599 spin_unlock_irqrestore(&local->queue_stop_reason_lock, in ieee80211_dynamic_ps_enable_work()
1601 mod_timer(&local->dynamic_ps_timer, jiffies + in ieee80211_dynamic_ps_enable_work()
1603 local->hw.conf.dynamic_ps_timeout)); in ieee80211_dynamic_ps_enable_work()
1607 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_dynamic_ps_enable_work()
1610 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) && in ieee80211_dynamic_ps_enable_work()
1612 if (drv_tx_frames_pending(local)) { in ieee80211_dynamic_ps_enable_work()
1613 mod_timer(&local->dynamic_ps_timer, jiffies + in ieee80211_dynamic_ps_enable_work()
1615 local->hw.conf.dynamic_ps_timeout)); in ieee80211_dynamic_ps_enable_work()
1617 ieee80211_send_nullfunc(local, sdata, true); in ieee80211_dynamic_ps_enable_work()
1619 ieee80211_flush_queues(local, sdata, false); in ieee80211_dynamic_ps_enable_work()
1623 if (!(ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS) && in ieee80211_dynamic_ps_enable_work()
1624 ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK)) || in ieee80211_dynamic_ps_enable_work()
1627 local->hw.conf.flags |= IEEE80211_CONF_PS; in ieee80211_dynamic_ps_enable_work()
1628 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_dynamic_ps_enable_work()
1634 struct ieee80211_local *local = (void *) data; in ieee80211_dynamic_ps_timer() local
1636 ieee80211_queue_work(&local->hw, &local->dynamic_ps_enable_work); in ieee80211_dynamic_ps_timer()
1648 mutex_lock(&sdata->local->mtx); in ieee80211_dfs_cac_timer_work()
1655 mutex_unlock(&sdata->local->mtx); in ieee80211_dfs_cac_timer_work()
1661 struct ieee80211_local *local = sdata->local; in __ieee80211_sta_handle_tspec_ac_params() local
1666 if (local->hw.queues < IEEE80211_NUM_ACS) in __ieee80211_sta_handle_tspec_ac_params()
1688 if (drv_conf_tx(local, sdata, ac, &sdata->tx_conf[ac])) in __ieee80211_sta_handle_tspec_ac_params()
1713 if (drv_conf_tx(local, sdata, ac, in __ieee80211_sta_handle_tspec_ac_params()
1748 static bool ieee80211_sta_wmm_params(struct ieee80211_local *local, in ieee80211_sta_wmm_params() argument
1759 if (!local->ops->conf_tx) in ieee80211_sta_wmm_params()
1762 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_sta_wmm_params()
1853 drv_conf_tx(local, sdata, ac, &params[ac])) in ieee80211_sta_wmm_params()
1866 lockdep_assert_held(&sdata->local->mtx); in __ieee80211_stop_poll()
1869 ieee80211_run_deferred_scan(sdata->local); in __ieee80211_stop_poll()
1874 mutex_lock(&sdata->local->mtx); in ieee80211_stop_poll()
1876 mutex_unlock(&sdata->local->mtx); in ieee80211_stop_poll()
1923 struct ieee80211_local *local = sdata->local; in ieee80211_set_associated() local
1963 ieee80211_led_assoc(local, 1); in ieee80211_set_associated()
1993 mutex_lock(&local->iflist_mtx); in ieee80211_set_associated()
1994 ieee80211_recalc_ps(local); in ieee80211_set_associated()
1995 mutex_unlock(&local->iflist_mtx); in ieee80211_set_associated()
2008 struct ieee80211_local *local = sdata->local; in ieee80211_set_disassoc() local
2029 if (local->hw.conf.flags & IEEE80211_CONF_PS) { in ieee80211_set_disassoc()
2030 local->hw.conf.flags &= ~IEEE80211_CONF_PS; in ieee80211_set_disassoc()
2031 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS); in ieee80211_set_disassoc()
2033 local->ps_sdata = NULL; in ieee80211_set_disassoc()
2048 ieee80211_flush_queues(local, sdata, true); in ieee80211_set_disassoc()
2057 ieee80211_flush_queues(local, sdata, false); in ieee80211_set_disassoc()
2068 ieee80211_led_assoc(local, 0); in ieee80211_set_disassoc()
2085 del_timer_sync(&local->dynamic_ps_timer); in ieee80211_set_disassoc()
2086 cancel_work_sync(&local->dynamic_ps_enable_work); in ieee80211_set_disassoc()
2113 mutex_lock(&local->mtx); in ieee80211_set_disassoc()
2120 ieee80211_wake_vif_queues(local, sdata, in ieee80211_set_disassoc()
2124 mutex_unlock(&local->mtx); in ieee80211_set_disassoc()
2153 struct ieee80211_local *local = sdata->local; in ieee80211_reset_ap_probe() local
2155 mutex_lock(&local->mtx); in ieee80211_reset_ap_probe()
2161 mutex_lock(&local->iflist_mtx); in ieee80211_reset_ap_probe()
2162 ieee80211_recalc_ps(local); in ieee80211_reset_ap_probe()
2163 mutex_unlock(&local->iflist_mtx); in ieee80211_reset_ap_probe()
2165 if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR)) in ieee80211_reset_ap_probe()
2179 mutex_unlock(&local->mtx); in ieee80211_reset_ap_probe()
2231 ieee80211_queue_work(&sdata->local->hw, &sdata->work); in ieee80211_sta_tx_notify()
2263 if (ieee80211_hw_check(&sdata->local->hw, REPORTS_TX_ACK_STATUS)) { in ieee80211_mgd_probe_ap_send()
2265 ieee80211_send_nullfunc(sdata->local, sdata, false); in ieee80211_mgd_probe_ap_send()
2301 mutex_lock(&sdata->local->mtx); in ieee80211_mgd_probe_ap()
2303 if (sdata->local->tmp_channel || sdata->local->scanning) { in ieee80211_mgd_probe_ap()
2304 mutex_unlock(&sdata->local->mtx); in ieee80211_mgd_probe_ap()
2332 mutex_unlock(&sdata->local->mtx); in ieee80211_mgd_probe_ap()
2337 mutex_lock(&sdata->local->iflist_mtx); in ieee80211_mgd_probe_ap()
2338 ieee80211_recalc_ps(sdata->local); in ieee80211_mgd_probe_ap()
2339 mutex_unlock(&sdata->local->iflist_mtx); in ieee80211_mgd_probe_ap()
2403 drv_event_callback(sdata->local, sdata, &event); in ieee80211_report_disconnect()
2408 struct ieee80211_local *local = sdata->local; in __ieee80211_disconnect() local
2421 mutex_lock(&local->mtx); in __ieee80211_disconnect()
2425 ieee80211_wake_vif_queues(local, sdata, in __ieee80211_disconnect()
2429 mutex_unlock(&local->mtx); in __ieee80211_disconnect()
2468 struct ieee80211_hw *hw = &sdata->local->hw; in ieee80211_beacon_loss()
2480 struct ieee80211_hw *hw = &sdata->local->hw; in ieee80211_connection_loss()
2509 mutex_lock(&sdata->local->mtx); in ieee80211_destroy_auth_data()
2511 mutex_unlock(&sdata->local->mtx); in ieee80211_destroy_auth_data()
2514 cfg80211_put_bss(sdata->local->hw.wiphy, auth_data->bss); in ieee80211_destroy_auth_data()
2539 mutex_lock(&sdata->local->mtx); in ieee80211_destroy_assoc_data()
2541 mutex_unlock(&sdata->local->mtx); in ieee80211_destroy_assoc_data()
2551 struct ieee80211_local *local = sdata->local; in ieee80211_auth_challenge() local
2562 drv_mgd_prepare_tx(sdata->local, sdata); in ieee80211_auth_challenge()
2563 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_auth_challenge()
2618 drv_event_callback(sdata->local, sdata, &event); in ieee80211_rx_mgmt_auth()
2642 drv_event_callback(sdata->local, sdata, &event); in ieee80211_rx_mgmt_auth()
2660 mutex_lock(&sdata->local->sta_mtx); in ieee80211_rx_mgmt_auth()
2670 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_rx_mgmt_auth()
2675 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_rx_mgmt_auth()
2860 struct ieee80211_local *local = sdata->local; in ieee80211_assoc_success() local
2988 mutex_lock(&sdata->local->sta_mtx); in ieee80211_assoc_success()
2995 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_assoc_success()
3000 sband = local->hw.wiphy->bands[ieee80211_get_sdata_band(sdata)]; in ieee80211_assoc_success()
3042 sta->sta.wme = elems.wmm_param && local->hw.queues >= IEEE80211_NUM_ACS; in ieee80211_assoc_success()
3052 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_assoc_success()
3057 mutex_unlock(&sdata->local->sta_mtx); in ieee80211_assoc_success()
3069 } else if (!ieee80211_sta_wmm_params(local, sdata, elems.wmm_param, in ieee80211_assoc_success()
3095 ieee80211_send_4addr_nullfunc(local, sdata); in ieee80211_assoc_success()
3179 drv_event_callback(sdata->local, sdata, &event); in ieee80211_rx_mgmt_assoc_resp()
3188 drv_event_callback(sdata->local, sdata, &event); in ieee80211_rx_mgmt_assoc_resp()
3213 struct ieee80211_local *local = sdata->local; in ieee80211_rx_bss_info() local
3219 channel = ieee80211_get_channel(local->hw.wiphy, rx_status->freq); in ieee80211_rx_bss_info()
3223 bss = ieee80211_bss_info_update(local, rx_status, mgmt, len, elems, in ieee80211_rx_bss_info()
3227 ieee80211_rx_bss_put(local, bss); in ieee80211_rx_bss_info()
3294 struct ieee80211_local *local = sdata->local; in ieee80211_rx_mgmt_beacon() local
3338 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY)) { in ieee80211_rx_mgmt_beacon()
3390 drv_event_callback(local, sdata, &event); in ieee80211_rx_mgmt_beacon()
3396 drv_event_callback(local, sdata, &event); in ieee80211_rx_mgmt_beacon()
3442 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) && in ieee80211_rx_mgmt_beacon()
3444 if (local->hw.conf.dynamic_ps_timeout > 0) { in ieee80211_rx_mgmt_beacon()
3445 if (local->hw.conf.flags & IEEE80211_CONF_PS) { in ieee80211_rx_mgmt_beacon()
3446 local->hw.conf.flags &= ~IEEE80211_CONF_PS; in ieee80211_rx_mgmt_beacon()
3447 ieee80211_hw_config(local, in ieee80211_rx_mgmt_beacon()
3450 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_rx_mgmt_beacon()
3451 } else if (!local->pspolling && sdata->u.mgd.powersave) { in ieee80211_rx_mgmt_beacon()
3452 local->pspolling = true; in ieee80211_rx_mgmt_beacon()
3462 ieee80211_send_pspoll(local, sdata); in ieee80211_rx_mgmt_beacon()
3506 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY)) { in ieee80211_rx_mgmt_beacon()
3530 ieee80211_sta_wmm_params(local, sdata, elems.wmm_param, in ieee80211_rx_mgmt_beacon()
3548 mutex_lock(&local->iflist_mtx); in ieee80211_rx_mgmt_beacon()
3549 ieee80211_recalc_ps(local); in ieee80211_rx_mgmt_beacon()
3550 mutex_unlock(&local->iflist_mtx); in ieee80211_rx_mgmt_beacon()
3565 mutex_lock(&local->sta_mtx); in ieee80211_rx_mgmt_beacon()
3571 mutex_unlock(&local->sta_mtx); in ieee80211_rx_mgmt_beacon()
3584 mutex_unlock(&local->sta_mtx); in ieee80211_rx_mgmt_beacon()
3684 ieee80211_queue_work(&sdata->local->hw, &sdata->work); in ieee80211_sta_timer()
3701 struct ieee80211_local *local = sdata->local; in ieee80211_auth() local
3723 cfg80211_unlink_bss(local->hw.wiphy, auth_data->bss); in ieee80211_auth()
3728 drv_mgd_prepare_tx(local, sdata); in ieee80211_auth()
3742 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_auth()
3769 struct ieee80211_local *local = sdata->local; in ieee80211_do_assoc() local
3782 cfg80211_unlink_bss(local->hw.wiphy, assoc_data->bss); in ieee80211_do_assoc()
3792 if (!ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) { in ieee80211_do_assoc()
3810 struct ieee80211_local *local = sdata->local; in ieee80211_mgd_conn_tx_status() local
3816 ieee80211_queue_work(&local->hw, &sdata->work); in ieee80211_mgd_conn_tx_status()
3821 struct ieee80211_local *local = sdata->local; in ieee80211_sta_work() local
3875 drv_event_callback(sdata->local, sdata, &event); in ieee80211_sta_work()
3893 drv_event_callback(sdata->local, sdata, &event); in ieee80211_sta_work()
3905 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) in ieee80211_sta_work()
3930 else if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) { in ieee80211_sta_work()
3947 wiphy_debug(local->hw.wiphy, in ieee80211_sta_work()
3971 ieee80211_queue_work(&sdata->local->hw, in ieee80211_sta_bcn_mon_timer()
3980 struct ieee80211_local *local = sdata->local; in ieee80211_sta_conn_mon_timer() local
3985 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work); in ieee80211_sta_conn_mon_timer()
4003 if (!ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR)) in ieee80211_restart_sta_timer()
4004 ieee80211_queue_work(&sdata->local->hw, in ieee80211_restart_sta_timer()
4056 if (ifmgd->associated && !sdata->local->wowlan) { in ieee80211_mgd_quiesce()
4122 ifmgd->uapsd_queues = sdata->local->hw.uapsd_queues; in ieee80211_sta_setup_sdata()
4123 ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len; in ieee80211_sta_setup_sdata()
4126 if (sdata->local->hw.wiphy->features & NL80211_FEATURE_DYNAMIC_SMPS) in ieee80211_sta_setup_sdata()
4138 void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local) in ieee80211_mlme_notify_scan_completed() argument
4144 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_mlme_notify_scan_completed()
4198 struct ieee80211_local *local = sdata->local; in ieee80211_prep_channel() local
4209 sband = local->hw.wiphy->bands[cbss->channel->band]; in ieee80211_prep_channel()
4278 local->rx_chains); in ieee80211_prep_channel()
4285 mutex_lock(&local->mtx); in ieee80211_prep_channel()
4305 mutex_unlock(&local->mtx); in ieee80211_prep_channel()
4313 struct ieee80211_local *local = sdata->local; in ieee80211_prep_connection() local
4321 sband = local->hw.wiphy->bands[cbss->channel->band]; in ieee80211_prep_connection()
4342 sta_info_free(local, new_sta); in ieee80211_prep_connection()
4360 sta_info_free(local, new_sta); in ieee80211_prep_connection()
4415 } else if (!ieee80211_hw_check(&sdata->local->hw, in ieee80211_prep_connection()
4450 if (local->scanning) in ieee80211_prep_connection()
4451 ieee80211_scan_cancel(local); in ieee80211_prep_connection()
4460 struct ieee80211_local *local = sdata->local; in ieee80211_mgd_auth() local
4473 if (IS_ERR(local->wep_tx_tfm)) in ieee80211_mgd_auth()
4559 cfg80211_ref_bss(local->hw.wiphy, auth_data->bss); in ieee80211_mgd_auth()
4566 mutex_lock(&sdata->local->mtx); in ieee80211_mgd_auth()
4568 mutex_unlock(&sdata->local->mtx); in ieee80211_mgd_auth()
4577 struct ieee80211_local *local = sdata->local; in ieee80211_mgd_assoc() local
4637 (local->hw.queues >= IEEE80211_NUM_ACS); in ieee80211_mgd_assoc()
4658 sband = local->hw.wiphy->bands[req->bss->channel->band]; in ieee80211_mgd_assoc()
4660 local->hw.queues < IEEE80211_NUM_ACS || !bss->wmm_used || in ieee80211_mgd_assoc()
4671 local->hw.queues < IEEE80211_NUM_ACS || !bss->wmm_used || in ieee80211_mgd_assoc()
4723 ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK), in ieee80211_mgd_assoc()
4759 sdata->encrypt_headroom = ieee80211_cs_headroom(local, &req->crypto, in ieee80211_mgd_assoc()
4804 if (ieee80211_hw_check(&sdata->local->hw, NEED_DTIM_BEFORE_ASSOC) && in ieee80211_mgd_assoc()
4831 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY)) { in ieee80211_mgd_assoc()
4883 drv_mgd_prepare_tx(sdata->local, sdata); in ieee80211_mgd_deauth()
4903 drv_mgd_prepare_tx(sdata->local, sdata); in ieee80211_mgd_deauth()
5015 trace_api_cqm_beacon_loss_notify(sdata->local, sdata); in ieee80211_cqm_beacon_loss_notify()