Lines Matching defs:local

190 	if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR))
207 if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR))
340 if (!ieee80211_chandef_vht_oper(&sdata->local->hw, vht_cap_info,
349 } else if (!ieee80211_chandef_vht_oper(&sdata->local->hw,
452 while (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef,
493 struct ieee80211_local *local = sdata->local;
497 local->hw.wiphy->bands[chan->band];
683 struct ieee80211_local *local = sdata->local;
735 list_for_each_entry_rcu(other, &local->interfaces, list) {
1034 struct ieee80211_local *local = sdata->local;
1072 sband = local->hw.wiphy->bands[chan->band];
1081 ieee80211_hw_check(&local->hw, SPECTRUM_MGMT))
1274 struct ieee80211_local *local = sdata->local;
1288 ift_ext_capa = cfg80211_get_iftype_ext_capa(local->hw.wiphy,
1379 struct ieee80211_local *local = sdata->local;
1406 size = local->hw.extra_tx_headroom +
1421 sband = local->hw.wiphy->bands[cbss->channel->band];
1490 skb_reserve(skb, local->hw.extra_tx_headroom);
1496 if (ieee80211_hw_check(&local->hw, SUPPORTS_ONLY_HE_MULTI_BSSID) &&
1507 ieee80211_encode_usf(local->hw.conf.listen_interval) :
1508 local->hw.conf.listen_interval);
1589 drv_mgd_prepare_tx(local, sdata, &info);
1592 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
1600 void ieee80211_send_pspoll(struct ieee80211_local *local,
1606 skb = ieee80211_pspoll_get(&local->hw, &sdata->vif);
1617 void ieee80211_send_nullfunc(struct ieee80211_local *local,
1625 skb = ieee80211_nullfunc_get(&local->hw, &sdata->vif, -1,
1626 !ieee80211_hw_check(&local->hw,
1638 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
1647 void ieee80211_send_4addr_nullfunc(struct ieee80211_local *local,
1657 skb = dev_alloc_skb(local->hw.extra_tx_headroom + 30);
1661 skb_reserve(skb, local->hw.extra_tx_headroom);
1685 struct ieee80211_local *local = sdata->local;
1693 mutex_lock(&local->mtx);
1694 mutex_lock(&local->chanctx_mtx);
1723 wiphy_work_queue(sdata->local->hw.wiphy,
1735 wiphy_work_queue(sdata->local->hw.wiphy,
1746 mutex_unlock(&local->chanctx_mtx);
1747 mutex_unlock(&local->mtx);
1754 struct ieee80211_local *local = sdata->local;
1763 ieee80211_wake_vif_queues(local, sdata,
1780 wiphy_work_queue(sdata->local->hw.wiphy,
1800 wiphy_work_queue(sdata->local->hw.wiphy,
1803 wiphy_delayed_work_queue(sdata->local->hw.wiphy,
1814 struct ieee80211_local *local = sdata->local;
1816 if (!local->ops->abort_channel_switch)
1819 mutex_lock(&local->mtx);
1821 mutex_lock(&local->chanctx_mtx);
1823 mutex_unlock(&local->chanctx_mtx);
1826 ieee80211_wake_vif_queues(local, sdata,
1832 mutex_unlock(&local->mtx);
1844 struct ieee80211_local *local = sdata->local;
1903 if (!cfg80211_chandef_usable(local->hw.wiphy, &csa_ie.chandef,
1938 mutex_lock(&local->mtx);
1939 mutex_lock(&local->chanctx_mtx);
1941 lockdep_is_held(&local->chanctx_mtx));
1950 if (local->use_chanctx &&
1951 !ieee80211_hw_check(&local->hw, CHANCTX_STA_CSA)) {
1971 mutex_unlock(&local->chanctx_mtx);
1980 ieee80211_stop_vif_queues(local, sdata,
1982 mutex_unlock(&local->mtx);
1988 if (local->ops->channel_switch) {
1990 drv_channel_switch(local, sdata, &ch_switch);
1997 wiphy_delayed_work_queue(local->hw.wiphy,
2002 mutex_lock(&local->mtx);
2003 mutex_lock(&local->chanctx_mtx);
2015 wiphy_work_queue(sdata->local->hw.wiphy,
2017 mutex_unlock(&local->chanctx_mtx);
2018 mutex_unlock(&local->mtx);
2175 static void ieee80211_enable_ps(struct ieee80211_local *local,
2178 struct ieee80211_conf *conf = &local->hw.conf;
2184 if (local->scanning)
2188 !ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS)) {
2189 mod_timer(&local->dynamic_ps_timer, jiffies +
2192 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK))
2193 ieee80211_send_nullfunc(local, sdata, true);
2195 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) &&
2196 ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
2200 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
2204 static void ieee80211_change_ps(struct ieee80211_local *local)
2206 struct ieee80211_conf *conf = &local->hw.conf;
2208 if (local->ps_sdata) {
2209 ieee80211_enable_ps(local, local->ps_sdata);
2212 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
2213 del_timer_sync(&local->dynamic_ps_timer);
2214 cancel_work_sync(&local->dynamic_ps_enable_work);
2220 struct ieee80211_local *local = sdata->local;
2237 if (!(local->hw.wiphy->flags & WIPHY_FLAG_SUPPORTS_MLO) &&
2251 void ieee80211_recalc_ps(struct ieee80211_local *local)
2257 if (!ieee80211_hw_check(&local->hw, SUPPORTS_PS) ||
2258 ieee80211_hw_check(&local->hw, SUPPORTS_DYNAMIC_PS)) {
2259 local->ps_sdata = NULL;
2263 list_for_each_entry(sdata, &local->interfaces, list) {
2283 timeout = local->dynamic_ps_forced_timeout;
2286 local->hw.conf.dynamic_ps_timeout = timeout;
2292 local->hw.conf.ps_dtim_period = dtimper;
2293 local->ps_sdata = found;
2295 local->ps_sdata = NULL;
2298 ieee80211_change_ps(local);
2313 struct ieee80211_local *local =
2317 if (local->hw.conf.flags & IEEE80211_CONF_PS) {
2318 local->hw.conf.flags &= ~IEEE80211_CONF_PS;
2319 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
2322 ieee80211_wake_queues_by_reason(&local->hw,
2330 struct ieee80211_local *local =
2333 struct ieee80211_sub_if_data *sdata = local->ps_sdata;
2344 if (local->hw.conf.flags & IEEE80211_CONF_PS)
2347 if (local->hw.conf.dynamic_ps_timeout > 0) {
2349 if (drv_tx_frames_pending(local)) {
2350 mod_timer(&local->dynamic_ps_timer, jiffies +
2352 local->hw.conf.dynamic_ps_timeout));
2361 spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
2362 for (q = 0; q < local->hw.queues; q++) {
2363 if (local->queue_stop_reasons[q]) {
2364 spin_unlock_irqrestore(&local->queue_stop_reason_lock,
2366 mod_timer(&local->dynamic_ps_timer, jiffies +
2368 local->hw.conf.dynamic_ps_timeout));
2372 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
2375 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) &&
2377 if (drv_tx_frames_pending(local)) {
2378 mod_timer(&local->dynamic_ps_timer, jiffies +
2380 local->hw.conf.dynamic_ps_timeout));
2382 ieee80211_send_nullfunc(local, sdata, true);
2384 ieee80211_flush_queues(local, sdata, false);
2388 if (!(ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS) &&
2389 ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK)) ||
2392 local->hw.conf.flags |= IEEE80211_CONF_PS;
2393 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
2399 struct ieee80211_local *local = from_timer(local, t, dynamic_ps_timer);
2401 ieee80211_queue_work(&local->hw, &local->dynamic_ps_enable_work);
2413 mutex_lock(&sdata->local->mtx);
2420 mutex_unlock(&sdata->local->mtx);
2426 struct ieee80211_local *local = sdata->local;
2431 if (local->hw.queues < IEEE80211_NUM_ACS)
2453 if (drv_conf_tx(local, &sdata->deflink, ac,
2483 if (drv_conf_tx(local, &sdata->deflink, ac,
2521 struct ieee80211_local *local = sdata->local;
2534 drv_conf_tx(local, link, ac, &params[ac]))
2543 ieee80211_sta_wmm_params(struct ieee80211_local *local,
2556 if (!local->ops->conf_tx)
2559 if (local->hw.queues < IEEE80211_NUM_ACS)
2684 lockdep_assert_held(&sdata->local->mtx);
2687 ieee80211_run_deferred_scan(sdata->local);
2692 mutex_lock(&sdata->local->mtx);
2694 mutex_unlock(&sdata->local->mtx);
2807 struct ieee80211_local *local = sdata->local;
2836 ieee80211_led_assoc(local, 1);
2873 mutex_lock(&local->iflist_mtx);
2874 ieee80211_recalc_ps(local);
2875 mutex_unlock(&local->iflist_mtx);
2890 struct ieee80211_local *local = sdata->local;
2919 if (local->hw.conf.flags & IEEE80211_CONF_PS) {
2920 local->hw.conf.flags &= ~IEEE80211_CONF_PS;
2921 ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
2923 local->ps_sdata = NULL;
2938 ieee80211_flush_queues(local, sdata, true);
2948 if (ieee80211_hw_check(&local->hw, DEAUTH_NEED_MGD_TX_PREP) &&
2950 drv_mgd_prepare_tx(sdata->local, sdata, &info);
2960 ieee80211_flush_queues(local, sdata, false);
2962 drv_mgd_complete_tx(sdata->local, sdata, &info);
2977 ieee80211_led_assoc(local, 0);
3005 del_timer_sync(&local->dynamic_ps_timer);
3006 cancel_work_sync(&local->dynamic_ps_enable_work);
3038 mutex_lock(&local->mtx);
3053 ieee80211_wake_vif_queues(local, sdata,
3057 mutex_unlock(&local->mtx);
3074 struct ieee80211_local *local = sdata->local;
3076 mutex_lock(&local->mtx);
3082 mutex_lock(&local->iflist_mtx);
3083 ieee80211_recalc_ps(local);
3084 mutex_unlock(&local->iflist_mtx);
3086 if (ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR))
3100 mutex_unlock(&local->mtx);
3158 wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
3203 mutex_lock(&sdata->local->sta_mtx);
3207 mutex_unlock(&sdata->local->sta_mtx);
3210 if (ieee80211_hw_check(&sdata->local->hw, REPORTS_TX_ACK_STATUS)) {
3212 ieee80211_send_nullfunc(sdata->local, sdata, false);
3241 mutex_lock(&sdata->local->mtx);
3243 if (sdata->local->tmp_channel || sdata->local->scanning) {
3244 mutex_unlock(&sdata->local->mtx);
3248 if (sdata->local->suspending) {
3250 mutex_unlock(&sdata->local->mtx);
3279 mutex_unlock(&sdata->local->mtx);
3284 mutex_lock(&sdata->local->iflist_mtx);
3285 ieee80211_recalc_ps(sdata->local);
3286 mutex_unlock(&sdata->local->iflist_mtx);
3353 drv_event_callback(sdata->local, sdata, &event);
3358 struct ieee80211_local *local = sdata->local;
3388 cfg80211_unlink_bss(local->hw.wiphy, link->u.mgd.bss);
3398 mutex_lock(&local->mtx);
3403 ieee80211_wake_vif_queues(local, sdata,
3407 mutex_unlock(&local->mtx);
3461 struct ieee80211_hw *hw = &sdata->local->hw;
3473 struct ieee80211_hw *hw = &sdata->local->hw;
3485 struct ieee80211_hw *hw = &sdata->local->hw;
3521 mutex_lock(&sdata->local->mtx);
3524 mutex_unlock(&sdata->local->mtx);
3527 cfg80211_put_bss(sdata->local->hw.wiphy, auth_data->bss);
3580 mutex_lock(&sdata->local->mtx);
3583 mutex_unlock(&sdata->local->mtx);
3593 struct ieee80211_local *local = sdata->local;
3608 drv_mgd_prepare_tx(sdata->local, sdata, &info);
3609 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
3634 mutex_lock(&sdata->local->sta_mtx);
3648 mutex_unlock(&sdata->local->sta_mtx);
3715 drv_event_callback(sdata->local, sdata, &event);
3743 drv_event_callback(sdata->local, sdata, &event);
3757 drv_mgd_complete_tx(sdata->local, sdata, &info);
4008 struct ieee80211_local *local = sdata->local;
4189 sband = local->hw.wiphy->bands[link->conf->chandef.chan->band];
4244 wiphy_ext_feature_isset(local->hw.wiphy,
4348 } else if (!ieee80211_sta_wmm_params(local, link, elems->wmm_param,
4392 struct ieee80211_local *local = sdata->local;
4410 sband = local->hw.wiphy->bands[cbss->channel->band];
4822 struct ieee80211_local *local = sdata->local;
4855 sband = local->hw.wiphy->bands[cbss->channel->band];
5027 local->rx_chains);
5045 mutex_lock(&local->mtx);
5066 mutex_unlock(&local->mtx);
5111 struct ieee80211_local *local = sdata->local;
5118 mutex_lock(&sdata->local->sta_mtx);
5160 "local address %pM, AP link address %pM%s\n",
5167 lockdep_is_held(&local->sta_mtx));
5238 local->hw.queues >= IEEE80211_NUM_ACS;
5252 drv_sta_set_4addr(local, sdata, &sta->sta, true);
5254 mutex_unlock(&sdata->local->sta_mtx);
5263 ieee80211_send_4addr_nullfunc(local, sdata);
5275 mutex_unlock(&sdata->local->sta_mtx);
5397 drv_event_callback(sdata->local, sdata, &event);
5447 drv_event_callback(sdata->local, sdata, &event);
5491 drv_mgd_complete_tx(sdata->local, sdata, &info);
5504 struct ieee80211_local *local = sdata->local;
5510 channel = ieee80211_get_channel_khz(local->hw.wiphy,
5515 bss = ieee80211_bss_info_update(local, rx_status, mgmt, len, channel);
5518 ieee80211_rx_bss_put(local, bss);
5544 channel = ieee80211_get_channel(sdata->local->hw.wiphy,
5592 struct ieee80211_local *local,
5628 drv_event_callback(local, sdata, &event);
5634 drv_event_callback(local, sdata, &event);
5870 wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
5897 wiphy_delayed_work_queue(sdata->local->hw.wiphy,
5913 struct ieee80211_local *local = sdata->local;
5979 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY)) {
6014 local, rx_status);
6043 if (ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK) &&
6045 if (local->hw.conf.dynamic_ps_timeout > 0) {
6046 if (local->hw.conf.flags & IEEE80211_CONF_PS) {
6047 local->hw.conf.flags &= ~IEEE80211_CONF_PS;
6048 ieee80211_hw_config(local,
6051 ieee80211_send_nullfunc(local, sdata, false);
6052 } else if (!local->pspolling && sdata->u.mgd.powersave) {
6053 local->pspolling = true;
6063 ieee80211_send_pspoll(local, sdata);
6108 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY) &&
6130 ieee80211_sta_wmm_params(local, link, elems->wmm_param,
6146 mutex_lock(&local->iflist_mtx);
6147 ieee80211_recalc_ps(local);
6148 mutex_unlock(&local->iflist_mtx);
6165 mutex_lock(&local->sta_mtx);
6168 mutex_unlock(&local->sta_mtx);
6172 lockdep_is_held(&local->sta_mtx));
6174 mutex_unlock(&local->sta_mtx);
6181 sband = local->hw.wiphy->bands[link->conf->chandef.chan->band];
6190 mutex_unlock(&local->sta_mtx);
6208 mutex_unlock(&local->sta_mtx);
6370 wiphy_work_queue(sdata->local->hw.wiphy, &sdata->work);
6387 struct ieee80211_local *local = sdata->local;
6412 cfg80211_unlink_bss(local->hw.wiphy, auth_data->bss);
6420 drv_mgd_prepare_tx(local, sdata, &info);
6434 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
6463 struct ieee80211_local *local = sdata->local;
6477 cfg80211_unlink_bss(local->hw.wiphy,
6490 if (!ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) {
6508 struct ieee80211_local *local = sdata->local;
6514 wiphy_work_queue(local->hw.wiphy, &sdata->work);
6519 struct ieee80211_local *local = sdata->local;
6580 drv_event_callback(sdata->local, sdata, &event);
6597 drv_event_callback(sdata->local, sdata, &event);
6607 if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS))
6632 else if (ieee80211_hw_check(&local->hw, REPORTS_TX_ACK_STATUS)) {
6677 wiphy_work_queue(sdata->local->hw.wiphy,
6686 struct ieee80211_local *local = sdata->local;
6714 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work);
6732 if (!ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR))
6733 ieee80211_queue_work(&sdata->local->hw,
6786 if (ifmgd->associated && !sdata->local->wowlan) {
6869 ifmgd->uapsd_queues = sdata->local->hw.uapsd_queues;
6870 ifmgd->uapsd_max_sp_len = sdata->local->hw.uapsd_max_sp_len;
6880 struct ieee80211_local *local = sdata->local;
6889 if (local->hw.wiphy->features & NL80211_FEATURE_DYNAMIC_SMPS)
6905 void ieee80211_mlme_notify_scan_completed(struct ieee80211_local *local)
6911 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
6923 struct ieee80211_local *local = sdata->local;
6961 if (local->in_reconfig) {
7009 sta_info_free(local, new_sta);
7018 sta_info_free(local, new_sta);
7035 } else if (!ieee80211_hw_check(&sdata->local->hw,
7056 sta_info_free(local, new_sta);
7086 if (local->scanning)
7087 ieee80211_scan_cancel(local);
7101 struct ieee80211_local *local = sdata->local;
7244 cfg80211_ref_bss(local->hw.wiphy, auth_data->bss);
7252 mutex_lock(&sdata->local->mtx);
7254 mutex_unlock(&sdata->local->mtx);
7268 struct ieee80211_local *local = sdata->local;
7283 sband = local->hw.wiphy->bands[cbss->channel->band];
7355 if (ieee80211_hw_check(&local->hw, TIMING_BEACON_ONLY)) {
7434 struct ieee80211_local *local = sdata->local;
7534 (local->hw.queues >= IEEE80211_NUM_ACS);
7659 ieee80211_hw_check(&local->hw, PS_NULLFUNC_STACK),
7725 if (ieee80211_hw_check(&sdata->local->hw, NEED_DTIM_BEFORE_ASSOC)) {
7770 "aborting authentication with %pM by local choice (Reason: %u=%s)\n",
7774 drv_mgd_prepare_tx(sdata->local, sdata, &info);
7783 drv_mgd_complete_tx(sdata->local, sdata, &info);
7790 "aborting association with %pM by local choice (Reason: %u=%s)\n",
7794 drv_mgd_prepare_tx(sdata->local, sdata, &info);
7803 drv_mgd_complete_tx(sdata->local, sdata, &info);
7810 "deauthenticating from %pM by local choice (Reason: %u=%s)\n",
7819 drv_mgd_complete_tx(sdata->local, sdata, &info);
7836 "disassociating from %pM by local choice (Reason: %u=%s)\n",
7852 wiphy_work_cancel(link->sdata->local->hw.wiphy,
7854 wiphy_delayed_work_cancel(link->sdata->local->hw.wiphy,
7868 wiphy_work_cancel(sdata->local->hw.wiphy,
7870 wiphy_work_cancel(sdata->local->hw.wiphy,
7873 wiphy_delayed_work_cancel(sdata->local->hw.wiphy,
7912 trace_api_cqm_beacon_loss_notify(sdata->local, sdata);