Lines Matching refs:local

43 	struct ieee80211_local *local;  in wiphy_to_ieee80211_hw()  local
46 local = wiphy_priv(wiphy); in wiphy_to_ieee80211_hw()
47 return &local->hw; in wiphy_to_ieee80211_hw()
161 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_rts_duration() local
169 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_rts_duration()
205 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_ctstoself_duration() local
213 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_ctstoself_duration()
242 void ieee80211_propagate_queue_wake(struct ieee80211_local *local, int queue) in ieee80211_propagate_queue_wake() argument
247 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_propagate_queue_wake()
250 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in ieee80211_propagate_queue_wake()
257 local->queue_stop_reasons[sdata->vif.cab_queue] != 0) in ieee80211_propagate_queue_wake()
263 if (local->ops->wake_tx_queue && in ieee80211_propagate_queue_wake()
265 local->hw.txq_ac_max_pending)) in ieee80211_propagate_queue_wake()
270 local->queue_stop_reasons[ac_queue] == 0 && in ieee80211_propagate_queue_wake()
271 skb_queue_empty(&local->pending[ac_queue]))) in ieee80211_propagate_queue_wake()
281 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_wake_queue() local
283 trace_wake_queue(local, queue, reason); in __ieee80211_wake_queue()
288 if (!test_bit(reason, &local->queue_stop_reasons[queue])) in __ieee80211_wake_queue()
292 local->q_stop_reasons[queue][reason] = 0; in __ieee80211_wake_queue()
294 local->q_stop_reasons[queue][reason]--; in __ieee80211_wake_queue()
296 if (local->q_stop_reasons[queue][reason] == 0) in __ieee80211_wake_queue()
297 __clear_bit(reason, &local->queue_stop_reasons[queue]); in __ieee80211_wake_queue()
299 if (local->queue_stop_reasons[queue] != 0) in __ieee80211_wake_queue()
303 if (skb_queue_empty(&local->pending[queue])) { in __ieee80211_wake_queue()
305 ieee80211_propagate_queue_wake(local, queue); in __ieee80211_wake_queue()
308 tasklet_schedule(&local->tx_pending_tasklet); in __ieee80211_wake_queue()
315 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queue_by_reason() local
318 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queue_by_reason()
320 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queue_by_reason()
335 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_stop_queue() local
339 trace_stop_queue(local, queue, reason); in __ieee80211_stop_queue()
345 local->q_stop_reasons[queue][reason] = 1; in __ieee80211_stop_queue()
347 local->q_stop_reasons[queue][reason]++; in __ieee80211_stop_queue()
349 if (__test_and_set_bit(reason, &local->queue_stop_reasons[queue])) in __ieee80211_stop_queue()
352 if (local->hw.queues < IEEE80211_NUM_ACS) in __ieee80211_stop_queue()
356 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __ieee80211_stop_queue()
375 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queue_by_reason() local
378 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queue_by_reason()
380 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queue_by_reason()
391 void ieee80211_add_pending_skb(struct ieee80211_local *local, in ieee80211_add_pending_skb() argument
394 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skb()
400 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skb()
404 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skb()
407 __skb_queue_tail(&local->pending[queue], skb); in ieee80211_add_pending_skb()
410 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skb()
413 void ieee80211_add_pending_skbs(struct ieee80211_local *local, in ieee80211_add_pending_skbs() argument
416 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skbs()
421 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skbs()
426 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skbs()
436 __skb_queue_tail(&local->pending[queue], skb); in ieee80211_add_pending_skbs()
443 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_add_pending_skbs()
451 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queues_by_reason() local
455 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queues_by_reason()
460 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_stop_queues_by_reason()
473 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_stopped() local
480 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_queue_stopped()
482 &local->queue_stop_reasons[queue]); in ieee80211_queue_stopped()
483 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_queue_stopped()
493 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queues_by_reason() local
497 spin_lock_irqsave(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queues_by_reason()
502 spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags); in ieee80211_wake_queues_by_reason()
514 ieee80211_get_vif_queues(struct ieee80211_local *local, in ieee80211_get_vif_queues() argument
519 if (sdata && ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) { in ieee80211_get_vif_queues()
530 queues = BIT(local->hw.queues) - 1; in ieee80211_get_vif_queues()
536 void __ieee80211_flush_queues(struct ieee80211_local *local, in __ieee80211_flush_queues() argument
540 if (!local->ops->flush) in __ieee80211_flush_queues()
547 if (!queues || !ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) in __ieee80211_flush_queues()
548 queues = ieee80211_get_vif_queues(local, sdata); in __ieee80211_flush_queues()
550 ieee80211_stop_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
554 drv_flush(local, sdata, queues, drop); in __ieee80211_flush_queues()
556 ieee80211_wake_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
561 void ieee80211_flush_queues(struct ieee80211_local *local, in ieee80211_flush_queues() argument
564 __ieee80211_flush_queues(local, sdata, 0, drop); in ieee80211_flush_queues()
567 void ieee80211_stop_vif_queues(struct ieee80211_local *local, in ieee80211_stop_vif_queues() argument
571 ieee80211_stop_queues_by_reason(&local->hw, in ieee80211_stop_vif_queues()
572 ieee80211_get_vif_queues(local, sdata), in ieee80211_stop_vif_queues()
576 void ieee80211_wake_vif_queues(struct ieee80211_local *local, in ieee80211_wake_vif_queues() argument
580 ieee80211_wake_queues_by_reason(&local->hw, in ieee80211_wake_vif_queues()
581 ieee80211_get_vif_queues(local, sdata), in ieee80211_wake_vif_queues()
585 static void __iterate_interfaces(struct ieee80211_local *local, in __iterate_interfaces() argument
594 list_for_each_entry_rcu(sdata, &local->interfaces, list) { in __iterate_interfaces()
613 sdata = rcu_dereference_check(local->monitor_sdata, in __iterate_interfaces()
614 lockdep_is_held(&local->iflist_mtx) || in __iterate_interfaces()
628 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_interfaces() local
630 mutex_lock(&local->iflist_mtx); in ieee80211_iterate_interfaces()
631 __iterate_interfaces(local, iter_flags, iterator, data); in ieee80211_iterate_interfaces()
632 mutex_unlock(&local->iflist_mtx); in ieee80211_iterate_interfaces()
642 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_atomic() local
645 __iterate_interfaces(local, iter_flags | IEEE80211_IFACE_ITER_ACTIVE, in ieee80211_iterate_active_interfaces_atomic()
657 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_rtnl() local
661 __iterate_interfaces(local, iter_flags | IEEE80211_IFACE_ITER_ACTIVE, in ieee80211_iterate_active_interfaces_rtnl()
666 static void __iterate_stations(struct ieee80211_local *local, in __iterate_stations() argument
673 list_for_each_entry_rcu(sta, &local->sta_list, list) { in __iterate_stations()
686 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_stations_atomic() local
689 __iterate_stations(local, iterator, data); in ieee80211_iterate_stations_atomic()
731 static bool ieee80211_can_queue_work(struct ieee80211_local *local) in ieee80211_can_queue_work() argument
733 if (local->quiescing || (local->suspended && !local->resuming)) { in ieee80211_can_queue_work()
743 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_work() local
745 if (!ieee80211_can_queue_work(local)) in ieee80211_queue_work()
748 queue_work(local->workqueue, work); in ieee80211_queue_work()
756 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_delayed_work() local
758 if (!ieee80211_can_queue_work(local)) in ieee80211_queue_delayed_work()
761 queue_delayed_work(local->workqueue, dwork, delay); in ieee80211_queue_delayed_work()
1110 struct ieee80211_local *local = sdata->local; in ieee80211_set_wmm_default() local
1118 if (!local->ops->conf_tx) in ieee80211_set_wmm_default()
1121 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_set_wmm_default()
1204 drv_conf_tx(local, sdata, ac, &qparam); in ieee80211_set_wmm_default()
1222 struct ieee80211_local *local = sdata->local; in ieee80211_send_auth() local
1228 skb = dev_alloc_skb(local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN + in ieee80211_send_auth()
1233 skb_reserve(skb, local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN); in ieee80211_send_auth()
1250 err = ieee80211_wep_encrypt(local, skb, key, key_len, key_idx); in ieee80211_send_auth()
1263 struct ieee80211_local *local = sdata->local; in ieee80211_send_deauth_disassoc() local
1278 skb = dev_alloc_skb(local->hw.extra_tx_headroom + in ieee80211_send_deauth_disassoc()
1283 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_send_deauth_disassoc()
1298 static int ieee80211_build_preq_ies_band(struct ieee80211_local *local, in ieee80211_build_preq_ies_band() argument
1319 sband = local->hw.wiphy->bands[band]; in ieee80211_build_preq_ies_band()
1467 int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer, in ieee80211_build_preq_ies() argument
1481 pos += ieee80211_build_preq_ies_band(local, in ieee80211_build_preq_ies()
1517 struct ieee80211_local *local = sdata->local; in ieee80211_build_probe_req() local
1536 skb = ieee80211_probereq_get(&local->hw, src, ssid, ssid_len, in ieee80211_build_probe_req()
1542 ies_len = ieee80211_build_preq_ies(local, skb_tail_pointer(skb), in ieee80211_build_probe_req()
1588 sband = sdata->local->hw.wiphy->bands[band]; in ieee80211_sta_get_rates()
1633 void ieee80211_stop_device(struct ieee80211_local *local) in ieee80211_stop_device() argument
1635 ieee80211_led_radio(local, false); in ieee80211_stop_device()
1636 ieee80211_mod_tpt_led_trig(local, 0, IEEE80211_TPT_LEDTRIG_FL_RADIO); in ieee80211_stop_device()
1638 cancel_work_sync(&local->reconfig_filter); in ieee80211_stop_device()
1640 flush_workqueue(local->workqueue); in ieee80211_stop_device()
1641 drv_stop(local); in ieee80211_stop_device()
1644 static void ieee80211_flush_completed_scan(struct ieee80211_local *local, in ieee80211_flush_completed_scan() argument
1654 if (test_bit(SCAN_COMPLETED, &local->scanning)) { in ieee80211_flush_completed_scan()
1661 set_bit(SCAN_ABORTED, &local->scanning); in ieee80211_flush_completed_scan()
1662 ieee80211_queue_delayed_work(&local->hw, &local->scan_work, 0); in ieee80211_flush_completed_scan()
1663 flush_delayed_work(&local->scan_work); in ieee80211_flush_completed_scan()
1667 static void ieee80211_handle_reconfig_failure(struct ieee80211_local *local) in ieee80211_handle_reconfig_failure() argument
1682 local->resuming = false; in ieee80211_handle_reconfig_failure()
1683 local->suspended = false; in ieee80211_handle_reconfig_failure()
1684 local->in_reconfig = false; in ieee80211_handle_reconfig_failure()
1686 ieee80211_flush_completed_scan(local, true); in ieee80211_handle_reconfig_failure()
1691 ieee80211_sched_scan_end(local); in ieee80211_handle_reconfig_failure()
1693 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_handle_reconfig_failure()
1699 mutex_lock(&local->chanctx_mtx); in ieee80211_handle_reconfig_failure()
1700 list_for_each_entry(ctx, &local->chanctx_list, list) in ieee80211_handle_reconfig_failure()
1702 mutex_unlock(&local->chanctx_mtx); in ieee80211_handle_reconfig_failure()
1704 cfg80211_shutdown_all_interfaces(local->hw.wiphy); in ieee80211_handle_reconfig_failure()
1707 static void ieee80211_assign_chanctx(struct ieee80211_local *local, in ieee80211_assign_chanctx() argument
1713 if (!local->use_chanctx) in ieee80211_assign_chanctx()
1716 mutex_lock(&local->chanctx_mtx); in ieee80211_assign_chanctx()
1718 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_assign_chanctx()
1721 drv_assign_vif_chanctx(local, sdata, ctx); in ieee80211_assign_chanctx()
1723 mutex_unlock(&local->chanctx_mtx); in ieee80211_assign_chanctx()
1728 struct ieee80211_local *local = sdata->local; in ieee80211_reconfig_stations() local
1732 mutex_lock(&local->sta_mtx); in ieee80211_reconfig_stations()
1733 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig_stations()
1741 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig_stations()
1744 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig_stations()
1747 int ieee80211_reconfig(struct ieee80211_local *local) in ieee80211_reconfig() argument
1749 struct ieee80211_hw *hw = &local->hw; in ieee80211_reconfig()
1758 bool suspended = local->suspended; in ieee80211_reconfig()
1761 if (!local->open_count) in ieee80211_reconfig()
1766 local->resuming = true; in ieee80211_reconfig()
1768 if (local->wowlan) { in ieee80211_reconfig()
1775 local->suspended = false; in ieee80211_reconfig()
1776 res = drv_resume(local); in ieee80211_reconfig()
1777 local->wowlan = false; in ieee80211_reconfig()
1779 local->resuming = false; in ieee80211_reconfig()
1791 local->suspended = true; in ieee80211_reconfig()
1802 if (suspended && local->in_reconfig && !reconfig_due_to_wowlan) in ieee80211_reconfig()
1803 cancel_work_sync(&local->restart_work); in ieee80211_reconfig()
1805 local->started = false; in ieee80211_reconfig()
1813 res = drv_start(local); in ieee80211_reconfig()
1819 ieee80211_handle_reconfig_failure(local); in ieee80211_reconfig()
1824 drv_set_frag_threshold(local, hw->wiphy->frag_threshold); in ieee80211_reconfig()
1827 drv_set_rts_threshold(local, hw->wiphy->rts_threshold); in ieee80211_reconfig()
1830 drv_set_coverage_class(local, hw->wiphy->coverage_class); in ieee80211_reconfig()
1832 ieee80211_led_radio(local, true); in ieee80211_reconfig()
1833 ieee80211_mod_tpt_led_trig(local, in ieee80211_reconfig()
1837 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1840 WARN_ON(local->resuming); in ieee80211_reconfig()
1841 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1843 RCU_INIT_POINTER(local->monitor_sdata, NULL); in ieee80211_reconfig()
1849 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1853 res = drv_add_interface(local, sdata); in ieee80211_reconfig()
1863 list_for_each_entry_continue_reverse(sdata, &local->interfaces, in ieee80211_reconfig()
1868 drv_remove_interface(local, sdata); in ieee80211_reconfig()
1869 ieee80211_handle_reconfig_failure(local); in ieee80211_reconfig()
1874 if (local->use_chanctx) { in ieee80211_reconfig()
1875 mutex_lock(&local->chanctx_mtx); in ieee80211_reconfig()
1876 list_for_each_entry(ctx, &local->chanctx_list, list) in ieee80211_reconfig()
1879 WARN_ON(drv_add_chanctx(local, ctx)); in ieee80211_reconfig()
1880 mutex_unlock(&local->chanctx_mtx); in ieee80211_reconfig()
1882 sdata = rtnl_dereference(local->monitor_sdata); in ieee80211_reconfig()
1884 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1888 ieee80211_hw_config(local, ~0); in ieee80211_reconfig()
1890 ieee80211_configure_filter(local); in ieee80211_reconfig()
1893 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1899 ieee80211_assign_chanctx(local, sdata); in ieee80211_reconfig()
1910 drv_conf_tx(local, sdata, i, in ieee80211_reconfig()
1956 drv_start_ap(local, sdata); in ieee80211_reconfig()
1982 ieee80211_recalc_ps(local); in ieee80211_reconfig()
1990 if (!(local->hw.conf.flags & IEEE80211_CONF_PS)) { in ieee80211_reconfig()
1991 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
1997 ieee80211_send_nullfunc(local, sdata, false); in ieee80211_reconfig()
2002 mutex_lock(&local->sta_mtx); in ieee80211_reconfig()
2003 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig()
2014 WARN_ON(drv_sta_state(local, sta->sdata, sta, state, in ieee80211_reconfig()
2017 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig()
2020 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2023 list_for_each_entry(sdata, &local->interfaces, list) in ieee80211_reconfig()
2028 mutex_lock(&local->mtx); in ieee80211_reconfig()
2029 sched_scan_sdata = rcu_dereference_protected(local->sched_scan_sdata, in ieee80211_reconfig()
2030 lockdep_is_held(&local->mtx)); in ieee80211_reconfig()
2031 sched_scan_req = rcu_dereference_protected(local->sched_scan_req, in ieee80211_reconfig()
2032 lockdep_is_held(&local->mtx)); in ieee80211_reconfig()
2045 mutex_unlock(&local->mtx); in ieee80211_reconfig()
2048 cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); in ieee80211_reconfig()
2051 local->in_reconfig = false; in ieee80211_reconfig()
2054 if (local->monitors == local->open_count && local->monitors > 0) in ieee80211_reconfig()
2055 ieee80211_add_virtual_monitor(local); in ieee80211_reconfig()
2068 mutex_lock(&local->sta_mtx); in ieee80211_reconfig()
2070 list_for_each_entry(sta, &local->sta_list, list) { in ieee80211_reconfig()
2071 if (!local->resuming) in ieee80211_reconfig()
2077 mutex_unlock(&local->sta_mtx); in ieee80211_reconfig()
2088 if (local->open_count && (!suspended || reconfig_due_to_wowlan)) in ieee80211_reconfig()
2089 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_RESTART); in ieee80211_reconfig()
2096 local->suspended = false; in ieee80211_reconfig()
2098 local->resuming = false; in ieee80211_reconfig()
2100 ieee80211_flush_completed_scan(local, false); in ieee80211_reconfig()
2102 if (local->open_count && !reconfig_due_to_wowlan) in ieee80211_reconfig()
2103 drv_reconfig_complete(local, IEEE80211_RECONFIG_TYPE_SUSPEND); in ieee80211_reconfig()
2105 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_reconfig()
2112 mod_timer(&local->sta_cleanup, jiffies + 1); in ieee80211_reconfig()
2123 struct ieee80211_local *local; in ieee80211_resume_disconnect() local
2130 local = sdata->local; in ieee80211_resume_disconnect()
2132 if (WARN_ON(!local->resuming)) in ieee80211_resume_disconnect()
2140 mutex_lock(&local->key_mtx); in ieee80211_resume_disconnect()
2143 mutex_unlock(&local->key_mtx); in ieee80211_resume_disconnect()
2149 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_smps() local
2153 mutex_lock(&local->chanctx_mtx); in ieee80211_recalc_smps()
2156 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_recalc_smps()
2168 ieee80211_recalc_smps_chanctx(local, chanctx); in ieee80211_recalc_smps()
2170 mutex_unlock(&local->chanctx_mtx); in ieee80211_recalc_smps()
2175 struct ieee80211_local *local = sdata->local; in ieee80211_recalc_min_chandef() local
2179 mutex_lock(&local->chanctx_mtx); in ieee80211_recalc_min_chandef()
2182 lockdep_is_held(&local->chanctx_mtx)); in ieee80211_recalc_min_chandef()
2188 ieee80211_recalc_chanctx_min_def(local, chanctx); in ieee80211_recalc_min_chandef()
2190 mutex_unlock(&local->chanctx_mtx); in ieee80211_recalc_min_chandef()
2476 struct ieee80211_local *local = sdata->local; in ieee80211_add_srates_ie() local
2485 sband = local->hw.wiphy->bands[band]; in ieee80211_add_srates_ie()
2521 struct ieee80211_local *local = sdata->local; in ieee80211_add_ext_srates_ie() local
2531 sband = local->hw.wiphy->bands[band]; in ieee80211_add_ext_srates_ie()
2606 u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local, in ieee80211_calculate_rx_timestamp() argument
2659 sband = local->hw.wiphy->bands[status->band]; in ieee80211_calculate_rx_timestamp()
2679 void ieee80211_dfs_cac_cancel(struct ieee80211_local *local) in ieee80211_dfs_cac_cancel() argument
2684 mutex_lock(&local->mtx); in ieee80211_dfs_cac_cancel()
2685 mutex_lock(&local->iflist_mtx); in ieee80211_dfs_cac_cancel()
2686 list_for_each_entry(sdata, &local->interfaces, list) { in ieee80211_dfs_cac_cancel()
2702 mutex_unlock(&local->iflist_mtx); in ieee80211_dfs_cac_cancel()
2703 mutex_unlock(&local->mtx); in ieee80211_dfs_cac_cancel()
2708 struct ieee80211_local *local = in ieee80211_dfs_radar_detected_work() local
2710 struct cfg80211_chan_def chandef = local->hw.conf.chandef; in ieee80211_dfs_radar_detected_work()
2714 mutex_lock(&local->chanctx_mtx); in ieee80211_dfs_radar_detected_work()
2715 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_dfs_radar_detected_work()
2722 mutex_unlock(&local->chanctx_mtx); in ieee80211_dfs_radar_detected_work()
2724 ieee80211_dfs_cac_cancel(local); in ieee80211_dfs_radar_detected_work()
2730 cfg80211_radar_event(local->hw.wiphy, &chandef, GFP_KERNEL); in ieee80211_dfs_radar_detected_work()
2735 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_radar_detected() local
2737 trace_api_radar_detected(local); in ieee80211_radar_detected()
2739 ieee80211_queue_work(hw, &local->radar_detected_work); in ieee80211_radar_detected()
2833 struct ieee80211_local *local = sdata->local; in ieee80211_send_action_csa() local
2843 skb = dev_alloc_skb(local->tx_headroom + hdr_len + in ieee80211_send_action_csa()
2850 skb_reserve(skb, local->tx_headroom); in ieee80211_send_action_csa()
2932 ieee80211_cs_get(struct ieee80211_local *local, u32 cipher, in ieee80211_cs_get() argument
2935 const struct ieee80211_cipher_scheme *l = local->hw.cipher_schemes; in ieee80211_cs_get()
2936 int n = local->hw.n_cipher_schemes; in ieee80211_cs_get()
2953 int ieee80211_cs_headroom(struct ieee80211_local *local, in ieee80211_cs_headroom() argument
2962 cs = ieee80211_cs_get(local, crypto->ciphers_pairwise[i], in ieee80211_cs_headroom()
2969 cs = ieee80211_cs_get(local, crypto->cipher_group, iftype); in ieee80211_cs_headroom()
3123 void ieee80211_recalc_dtim(struct ieee80211_local *local, in ieee80211_recalc_dtim() argument
3126 u64 tsf = drv_get_tsf(local, sdata); in ieee80211_recalc_dtim()
3164 static u8 ieee80211_chanctx_radar_detect(struct ieee80211_local *local, in ieee80211_chanctx_radar_detect() argument
3170 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_chanctx_radar_detect()
3198 struct ieee80211_local *local = sdata->local; in ieee80211_check_combinations() local
3206 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_check_combinations()
3222 if (local->hw.wiphy->software_iftypes & BIT(iftype)) { in ieee80211_check_combinations()
3233 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_check_combinations()
3236 radar_detect |= ieee80211_chanctx_radar_detect(local, ctx); in ieee80211_check_combinations()
3248 list_for_each_entry_rcu(sdata_iter, &local->interfaces, list) { in ieee80211_check_combinations()
3255 local->hw.wiphy->software_iftypes & BIT(wdev_iter->iftype)) in ieee80211_check_combinations()
3265 return cfg80211_check_combinations(local->hw.wiphy, in ieee80211_check_combinations()
3280 int ieee80211_max_num_channels(struct ieee80211_local *local) in ieee80211_max_num_channels() argument
3290 lockdep_assert_held(&local->chanctx_mtx); in ieee80211_max_num_channels()
3292 list_for_each_entry(ctx, &local->chanctx_list, list) { in ieee80211_max_num_channels()
3298 radar_detect |= ieee80211_chanctx_radar_detect(local, ctx); in ieee80211_max_num_channels()
3301 list_for_each_entry_rcu(sdata, &local->interfaces, list) in ieee80211_max_num_channels()
3304 err = cfg80211_iter_combinations(local->hw.wiphy, in ieee80211_max_num_channels()