Lines Matching refs:local

42 	struct ieee80211_local *local;  in wiphy_to_ieee80211_hw()  local
45 local = wiphy_priv(wiphy); in wiphy_to_ieee80211_hw()
46 return &local->hw; in wiphy_to_ieee80211_hw()
209 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_rts_duration() local
217 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_rts_duration()
253 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_ctstoself_duration() local
261 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_ctstoself_duration()
290 void ieee80211_propagate_queue_wake(struct ieee80211_local *local, int queue) in ieee80211_propagate_queue_wake() argument
295 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_propagate_queue_wake()
298 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_propagate_queue_wake()
305 local->queue_stop_reasons[sdata->vif.cab_queue] != 0) in ieee80211_propagate_queue_wake()
311 if (local->ops->wake_tx_queue && in ieee80211_propagate_queue_wake()
313 local->hw.txq_ac_max_pending)) in ieee80211_propagate_queue_wake()
318 local->queue_stop_reasons[ac_queue] == 0 && in ieee80211_propagate_queue_wake()
319 skb_queue_empty(&local->pending[ac_queue]))) in ieee80211_propagate_queue_wake()
329 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_wake_queue() local
331 trace_wake_queue(local, queue, reason); in __ieee80211_wake_queue()
336 if (!test_bit(reason, &local->queue_stop_reasons[queue])) in __ieee80211_wake_queue()
340 local->q_stop_reasons[queue][reason] = 0; in __ieee80211_wake_queue()
342 local->q_stop_reasons[queue][reason]--; in __ieee80211_wake_queue()
344 if (local->q_stop_reasons[queue][reason] == 0) in __ieee80211_wake_queue()
345 __clear_bit(reason, &local->queue_stop_reasons[queue]); in __ieee80211_wake_queue()
347 if (local->queue_stop_reasons[queue] != 0) in __ieee80211_wake_queue()
351 if (skb_queue_empty(&local->pending[queue])) { in __ieee80211_wake_queue()
353 ieee80211_propagate_queue_wake(local, queue); in __ieee80211_wake_queue()
356 tasklet_schedule(&local->tx_pending_tasklet); in __ieee80211_wake_queue()
363 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queue_by_reason() local
366 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queue_by_reason()
368 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queue_by_reason()
383 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_stop_queue() local
387 trace_stop_queue(local, queue, reason); in __ieee80211_stop_queue()
393 local->q_stop_reasons[queue][reason] = 1; in __ieee80211_stop_queue()
395 local->q_stop_reasons[queue][reason]++; in __ieee80211_stop_queue()
397 if (__test_and_set_bit(reason, &local->queue_stop_reasons[queue])) in __ieee80211_stop_queue()
400 if (local->hw.queues < IEEE80211_NUM_ACS) in __ieee80211_stop_queue()
404 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __ieee80211_stop_queue()
423 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queue_by_reason() local
426 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queue_by_reason()
428 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queue_by_reason()
439 void ieee80211_add_pending_skb(struct ieee80211_local *local, in ieee80211_add_pending_skb() argument
442 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skb()
448 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skb()
452 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skb()
455 __skb_queue_tail(&local->pending[queue], skb); in ieee80211_add_pending_skb()
458 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skb()
461 void ieee80211_add_pending_skbs(struct ieee80211_local *local, in ieee80211_add_pending_skbs() argument
464 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skbs()
469 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skbs()
474 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skbs()
484 __skb_queue_tail(&local->pending[queue], skb); in ieee80211_add_pending_skbs()
491 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skbs()
499 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queues_by_reason() local
503 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queues_by_reason()
508 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queues_by_reason()
521 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_stopped() local
528 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_queue_stopped()
530 &local->queue_stop_reasons[queue]); in ieee80211_queue_stopped()
531 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_queue_stopped()
541 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queues_by_reason() local
545 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queues_by_reason()
550 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queues_by_reason()
562 ieee80211_get_vif_queues(struct ieee80211_local *local, in ieee80211_get_vif_queues() argument
567 if (sdata && local->hw.flags & IEEE80211_HW_QUEUE_CONTROL) { in ieee80211_get_vif_queues()
578 queues = BIT(local->hw.queues) - 1; in ieee80211_get_vif_queues()
584 void __ieee80211_flush_queues(struct ieee80211_local *local, in __ieee80211_flush_queues() argument
588 if (!local->ops->flush) in __ieee80211_flush_queues()
595 if (!queues || !(local->hw.flags & IEEE80211_HW_QUEUE_CONTROL)) in __ieee80211_flush_queues()
596 queues = ieee80211_get_vif_queues(local, sdata); in __ieee80211_flush_queues()
598 ieee80211_stop_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
602 drv_flush(local, sdata, queues, drop); in __ieee80211_flush_queues()
604 ieee80211_wake_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
609 void ieee80211_flush_queues(struct ieee80211_local *local, in ieee80211_flush_queues() argument
612 __ieee80211_flush_queues(local, sdata, 0, drop); in ieee80211_flush_queues()
615 void ieee80211_stop_vif_queues(struct ieee80211_local *local, in ieee80211_stop_vif_queues() argument
619 ieee80211_stop_queues_by_reason(&local->hw, in ieee80211_stop_vif_queues()
620 ieee80211_get_vif_queues(local, sdata), in ieee80211_stop_vif_queues()
624 void ieee80211_wake_vif_queues(struct ieee80211_local *local, in ieee80211_wake_vif_queues() argument
628 ieee80211_wake_queues_by_reason(&local->hw, in ieee80211_wake_vif_queues()
629 ieee80211_get_vif_queues(local, sdata), in ieee80211_wake_vif_queues()
633 static void __iterate_interfaces(struct ieee80211_local *local, in __iterate_interfaces() argument
642 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __iterate_interfaces()
661 sdata = rcu_dereference_check(local->monitor_sdata, in __iterate_interfaces()
662 lockdep_is_held(&local->iflist_mtx) || in __iterate_interfaces()
676 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_interfaces() local
678 mutex_lock(&local->iflist_mtx); in ieee80211_iterate_interfaces()
679 __iterate_interfaces(local, iter_flags, iterator, data); in ieee80211_iterate_interfaces()
680 mutex_unlock(&local->iflist_mtx); in ieee80211_iterate_interfaces()
690 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_atomic() local
693 __iterate_interfaces(local, iter_flags | IEEE80211_IFACE_ITER_ACTIVE, in ieee80211_iterate_active_interfaces_atomic()
705 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_rtnl() local
709 __iterate_interfaces(local, iter_flags | IEEE80211_IFACE_ITER_ACTIVE, in ieee80211_iterate_active_interfaces_rtnl()
714 static void __iterate_stations(struct ieee80211_local *local, in __iterate_stations() argument
721 list_for_each_entry_rcu(sta, &local->sta_list, list) { in __iterate_stations()
734 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_stations_atomic() local
737 __iterate_stations(local, iterator, data); in ieee80211_iterate_stations_atomic()
774 static bool ieee80211_can_queue_work(struct ieee80211_local *local) in ieee80211_can_queue_work() argument
776 if (local->quiescing || (local->suspended && !local->resuming)) { in ieee80211_can_queue_work()
786 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_work() local
788 if (!ieee80211_can_queue_work(local)) in ieee80211_queue_work()
791 queue_work(local->workqueue, work); in ieee80211_queue_work()
799 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_delayed_work() local
801 if (!ieee80211_can_queue_work(local)) in ieee80211_queue_delayed_work()
804 queue_delayed_work(local->workqueue, dwork, delay); in ieee80211_queue_delayed_work()
1153 struct ieee80211_local *local = sdata->local; in ieee80211_set_wmm_default() local
1161 if (!local->ops->conf_tx) in ieee80211_set_wmm_default()
1164 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_set_wmm_default()
1254 drv_conf_tx(local, sdata, ac, &qparam); in ieee80211_set_wmm_default()
1272 struct ieee80211_local *local = sdata->local; in ieee80211_send_auth() local
1278 skb = dev_alloc_skb(local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN + in ieee80211_send_auth()
1283 skb_reserve(skb, local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN); in ieee80211_send_auth()
1300 err = ieee80211_wep_encrypt(local, skb, key, key_len, key_idx); in ieee80211_send_auth()
1313 struct ieee80211_local *local = sdata->local; in ieee80211_send_deauth_disassoc() local
1328 skb = dev_alloc_skb(local->hw.extra_tx_headroom + in ieee80211_send_deauth_disassoc()
1333 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_send_deauth_disassoc()
1348 static int ieee80211_build_preq_ies_band(struct ieee80211_local *local, in ieee80211_build_preq_ies_band() argument
1369 sband = local->hw.wiphy->bands[band]; in ieee80211_build_preq_ies_band()
1517 int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer, in ieee80211_build_preq_ies() argument
1531 pos += ieee80211_build_preq_ies_band(local, in ieee80211_build_preq_ies()
1567 struct ieee80211_local *local = sdata->local; in ieee80211_build_probe_req() local
1586 skb = ieee80211_probereq_get(&local->hw, src, ssid, ssid_len, in ieee80211_build_probe_req()
1592 ies_len = ieee80211_build_preq_ies(local, skb_tail_pointer(skb), in ieee80211_build_probe_req()
1638 sband = sdata->local->hw.wiphy->bands[band]; in ieee80211_sta_get_rates()
1683 void ieee80211_stop_device(struct ieee80211_local *local) in ieee80211_stop_device() argument
1685 ieee80211_led_radio(local, false); in ieee80211_stop_device()
1686 ieee80211_mod_tpt_led_trig(local, 0, IEEE80211_TPT_LEDTRIG_FL_RADIO); in ieee80211_stop_device()
1688 cancel_work_sync(&local->reconfig_filter); in ieee80211_stop_device()
1690 flush_workqueue(local->workqueue); in ieee80211_stop_device()
1691 drv_stop(local); in ieee80211_stop_device()
1694 static void ieee80211_handle_reconfig_failure(struct ieee80211_local *local) in ieee80211_handle_reconfig_failure() argument
1709 local->resuming = false; in ieee80211_handle_reconfig_failure()
1710 local->suspended = false; in ieee80211_handle_reconfig_failure()
1711 local->started = false; in ieee80211_handle_reconfig_failure()
1716 ieee80211_sched_scan_end(local); in ieee80211_handle_reconfig_failure()
1718 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_handle_reconfig_failure()
1724 mutex_lock(&local->chanctx_mtx); in ieee80211_handle_reconfig_failure()
1725 list_for_each_entry(ctx, &local->chanctx_list, list) in ieee80211_handle_reconfig_failure()
1727 mutex_unlock(&local->chanctx_mtx); in ieee80211_handle_reconfig_failure()
1729 cfg80211_shutdown_all_interfaces(local->hw.wiphy); in ieee80211_handle_reconfig_failure()
1732 static void ieee80211_assign_chanctx(struct ieee80211_local *local, in ieee80211_assign_chanctx() argument
1738 if (!local->use_chanctx) in ieee80211_assign_chanctx()
1741 mutex_lock(&local->chanctx_mtx); in ieee80211_assign_chanctx()
1743 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_assign_chanctx()
1746 drv_assign_vif_chanctx(local, sdata, ctx); in ieee80211_assign_chanctx()
1748 mutex_unlock(&local->chanctx_mtx); in ieee80211_assign_chanctx()
1751 int ieee80211_reconfig(struct ieee80211_local *local) in ieee80211_reconfig() argument
1753 struct ieee80211_hw *hw = &local->hw; in ieee80211_reconfig()
1764 if (!local->open_count) in ieee80211_reconfig()
1768 if (local->suspended) in ieee80211_reconfig()
1769 local->resuming = true; in ieee80211_reconfig()
1771 if (local->wowlan) { in ieee80211_reconfig()
1772 res = drv_resume(local); in ieee80211_reconfig()
1773 local->wowlan = false; in ieee80211_reconfig()
1775 local->resuming = false; in ieee80211_reconfig()
1795 res = drv_start(local); in ieee80211_reconfig()
1797 if (local->suspended) in ieee80211_reconfig()
1801 ieee80211_handle_reconfig_failure(local); in ieee80211_reconfig()
1806 drv_set_frag_threshold(local, hw->wiphy->frag_threshold); in ieee80211_reconfig()
1809 drv_set_rts_threshold(local, hw->wiphy->rts_threshold); in ieee80211_reconfig()
1812 drv_set_coverage_class(local, hw->wiphy->coverage_class); in ieee80211_reconfig()
1814 ieee80211_led_radio(local, true); in ieee80211_reconfig()
1815 ieee80211_mod_tpt_led_trig(local, in ieee80211_reconfig()
1819 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1822 WARN_ON(local->resuming); in ieee80211_reconfig()
1823 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1825 RCU_INIT_POINTER(local->monitor_sdata, NULL); in ieee80211_reconfig()
1831 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1835 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1845 list_for_each_entry_continue_reverse(sdata, &local->interfaces, in ieee80211_reconfig()
1850 drv_remove_interface(local, sdata); in ieee80211_reconfig()
1851 ieee80211_handle_reconfig_failure(local); in ieee80211_reconfig()
1856 if (local->use_chanctx) { in ieee80211_reconfig()
1857 mutex_lock(&local->chanctx_mtx); in ieee80211_reconfig()
1858 list_for_each_entry(ctx, &local->chanctx_list, list) in ieee80211_reconfig()
1861 WARN_ON(drv_add_chanctx(local, ctx)); in ieee80211_reconfig()
1862 mutex_unlock(&local->chanctx_mtx); in ieee80211_reconfig()
1864 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1867 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1870 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1872 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1876 mutex_lock(&local->sta_mtx); in ieee80211_reconfig()
1877 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig()
1889 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
1892 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig()
1896 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1903 drv_conf_tx(local, sdata, i, in ieee80211_reconfig()
1909 ieee80211_hw_config(local, ~0); in ieee80211_reconfig()
1911 ieee80211_configure_filter(local); in ieee80211_reconfig()
1914 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1961 drv_start_ap(local, sdata); in ieee80211_reconfig()
1987 ieee80211_recalc_ps(local, -1); in ieee80211_reconfig()
1995 if (!(local->hw.conf.flags & IEEE80211_CONF_PS)) { in ieee80211_reconfig()
1996 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2002 ieee80211_send_nullfunc(local, sdata, 0); in ieee80211_reconfig()
2007 mutex_lock(&local->sta_mtx); in ieee80211_reconfig()
2008 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig()
2019 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
2022 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig()
2025 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2028 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2033 local->in_reconfig = false; in ieee80211_reconfig()
2036 if (local->monitors == local->open_count && local->monitors > 0) in ieee80211_reconfig()
2037 ieee80211_add_virtual_monitor(local); in ieee80211_reconfig()
2050 mutex_lock(&local->sta_mtx); in ieee80211_reconfig()
2052 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig()
2058 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig()
2069 mutex_lock(&local->mtx); in ieee80211_reconfig()
2070 sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata, in ieee80211_reconfig()
2071 lockdep_is_held(&local->mtx)); in ieee80211_reconfig()
2072 sched_scan_req = rcu_dereference_protected(local->sched_scan_req, in ieee80211_reconfig()
2073 lockdep_is_held(&local->mtx)); in ieee80211_reconfig()
2082 mutex_unlock(&local->mtx); in ieee80211_reconfig()
2085 cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); in ieee80211_reconfig()
2091 if (local->open_count && (!local->suspended || reconfig_due_to_wowlan)) in ieee80211_reconfig()
2092 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_RESTART); in ieee80211_reconfig()
2094 if (!local->suspended) in ieee80211_reconfig()
2099 local->suspended = false; in ieee80211_reconfig()
2101 local->resuming = false; in ieee80211_reconfig()
2110 if (test_bit(SCAN_COMPLETED, &local->scanning)) { in ieee80211_reconfig()
2111 ieee80211_queue_delayed_work(&local->hw, &local->scan_work, 0); in ieee80211_reconfig()
2112 flush_delayed_work(&local->scan_work); in ieee80211_reconfig()
2115 if (local->open_count && !reconfig_due_to_wowlan) in ieee80211_reconfig()
2116 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_SUSPEND); in ieee80211_reconfig()
2118 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2125 mod_timer(&local->sta_cleanup, jiffies + 1); in ieee80211_reconfig()
2136 struct ieee80211_local *local; in ieee80211_resume_disconnect() local
2143 local = sdata->local; in ieee80211_resume_disconnect()
2145 if (WARN_ON(!local->resuming)) in ieee80211_resume_disconnect()
2153 mutex_lock(&local->key_mtx); in ieee80211_resume_disconnect()
2156 mutex_unlock(&local->key_mtx); in ieee80211_resume_disconnect()
2162 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_smps() local
2166 mutex_lock(&local->chanctx_mtx); in ieee80211_recalc_smps()
2169 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_recalc_smps()
2175 ieee80211_recalc_smps_chanctx(local, chanctx); in ieee80211_recalc_smps()
2177 mutex_unlock(&local->chanctx_mtx); in ieee80211_recalc_smps()
2182 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_min_chandef() local
2186 mutex_lock(&local->chanctx_mtx); in ieee80211_recalc_min_chandef()
2189 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_recalc_min_chandef()
2195 ieee80211_recalc_chanctx_min_def(local, chanctx); in ieee80211_recalc_min_chandef()
2197 mutex_unlock(&local->chanctx_mtx); in ieee80211_recalc_min_chandef()
2478 struct ieee80211_local *local = sdata->local; in ieee80211_add_srates_ie() local
2487 sband = local->hw.wiphy->bands[band]; in ieee80211_add_srates_ie()
2523 struct ieee80211_local *local = sdata->local; in ieee80211_add_ext_srates_ie() local
2533 sband = local->hw.wiphy->bands[band]; in ieee80211_add_ext_srates_ie()
2608 u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local, in ieee80211_calculate_rx_timestamp() argument
2661 sband = local->hw.wiphy->bands[status->band]; in ieee80211_calculate_rx_timestamp()
2681 void ieee80211_dfs_cac_cancel(struct ieee80211_local *local) in ieee80211_dfs_cac_cancel() argument
2686 mutex_lock(&local->mtx); in ieee80211_dfs_cac_cancel()
2687 mutex_lock(&local->iflist_mtx); in ieee80211_dfs_cac_cancel()
2688 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_dfs_cac_cancel()
2704 mutex_unlock(&local->iflist_mtx); in ieee80211_dfs_cac_cancel()
2705 mutex_unlock(&local->mtx); in ieee80211_dfs_cac_cancel()
2710 struct ieee80211_local *local = in ieee80211_dfs_radar_detected_work() local
2712 struct cfg80211_chan_def chandef = local->hw.conf.chandef; in ieee80211_dfs_radar_detected_work()
2716 mutex_lock(&local->chanctx_mtx); in ieee80211_dfs_radar_detected_work()
2717 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_dfs_radar_detected_work()
2724 mutex_unlock(&local->chanctx_mtx); in ieee80211_dfs_radar_detected_work()
2726 ieee80211_dfs_cac_cancel(local); in ieee80211_dfs_radar_detected_work()
2732 cfg80211_radar_event(local->hw.wiphy, &chandef, GFP_KERNEL); in ieee80211_dfs_radar_detected_work()
2737 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_radar_detected() local
2739 trace_api_radar_detected(local); in ieee80211_radar_detected()
2741 ieee80211_queue_work(hw, &local->radar_detected_work); in ieee80211_radar_detected()
2835 struct ieee80211_local *local = sdata->local; in ieee80211_send_action_csa() local
2845 skb = dev_alloc_skb(local->tx_headroom + hdr_len + in ieee80211_send_action_csa()
2852 skb_reserve(skb, local->tx_headroom); in ieee80211_send_action_csa()
2934 ieee80211_cs_get(struct ieee80211_local *local, u32 cipher, in ieee80211_cs_get() argument
2937 const struct ieee80211_cipher_scheme *l = local->hw.cipher_schemes; in ieee80211_cs_get()
2938 int n = local->hw.n_cipher_schemes; in ieee80211_cs_get()
2955 int ieee80211_cs_headroom(struct ieee80211_local *local, in ieee80211_cs_headroom() argument
2964 cs = ieee80211_cs_get(local, crypto->ciphers_pairwise[i], in ieee80211_cs_headroom()
2971 cs = ieee80211_cs_get(local, crypto->cipher_group, iftype); in ieee80211_cs_headroom()
3125 void ieee80211_recalc_dtim(struct ieee80211_local *local, in ieee80211_recalc_dtim() argument
3128 u64 tsf = drv_get_tsf(local, sdata); in ieee80211_recalc_dtim()
3166 static u8 ieee80211_chanctx_radar_detect(struct ieee80211_local *local, in ieee80211_chanctx_radar_detect() argument
3172 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_chanctx_radar_detect()
3200 struct ieee80211_local *local = sdata->local; in ieee80211_check_combinations() local
3208 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_check_combinations()
3224 if (local->hw.wiphy->software_iftypes & BIT(iftype)) { in ieee80211_check_combinations()
3235 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_check_combinations()
3238 radar_detect |= ieee80211_chanctx_radar_detect(local, ctx); in ieee80211_check_combinations()
3250 list_for_each_entry_rcu(sdata_iter, &local->interfaces, list) { in ieee80211_check_combinations()
3257 local->hw.wiphy->software_iftypes & BIT(wdev_iter->iftype)) in ieee80211_check_combinations()
3267 return cfg80211_check_combinations(local->hw.wiphy, in ieee80211_check_combinations()
3282 int ieee80211_max_num_channels(struct ieee80211_local *local) in ieee80211_max_num_channels() argument
3292 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_max_num_channels()
3294 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_max_num_channels()
3300 radar_detect |= ieee80211_chanctx_radar_detect(local, ctx); in ieee80211_max_num_channels()
3303 list_for_each_entry_rcu(sdata, &local->interfaces, list) in ieee80211_max_num_channels()
3306 err = cfg80211_iter_combinations(local->hw.wiphy, in ieee80211_max_num_channels()