Lines Matching refs:hw
45 return &local->hw; in wiphy_to_ieee80211_hw()
175 __le16 ieee80211_generic_frame_duration(struct ieee80211_hw *hw, in ieee80211_generic_frame_duration() argument
201 __le16 ieee80211_rts_duration(struct ieee80211_hw *hw, in ieee80211_rts_duration() argument
205 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_rts_duration()
213 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_rts_duration()
243 __le16 ieee80211_ctstoself_duration(struct ieee80211_hw *hw, in ieee80211_ctstoself_duration() argument
248 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_ctstoself_duration()
256 sband = local->hw.wiphy->bands[frame_txctl->band]; in ieee80211_ctstoself_duration()
294 skb = ieee80211_tx_dequeue(&local->hw, queue); in wake_tx_push_queue()
303 void ieee80211_handle_wake_tx_queue(struct ieee80211_hw *hw, in ieee80211_handle_wake_tx_queue() argument
306 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_handle_wake_tx_queue()
313 ieee80211_txq_schedule_start(hw, txq->ac); in ieee80211_handle_wake_tx_queue()
314 while ((queue = ieee80211_next_txq(hw, txq->ac))) { in ieee80211_handle_wake_tx_queue()
316 ieee80211_return_txq(hw, queue, false); in ieee80211_handle_wake_tx_queue()
318 ieee80211_txq_schedule_end(hw, txq->ac); in ieee80211_handle_wake_tx_queue()
397 if (local->hw.queues < IEEE80211_NUM_ACS) in _ieee80211_wake_txqs()
400 for (i = 0; i < local->hw.queues; i++) { in _ieee80211_wake_txqs()
433 static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue, in __ieee80211_wake_queue() argument
438 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_wake_queue()
440 if (WARN_ON(queue >= hw->queues)) in __ieee80211_wake_queue()
480 void ieee80211_wake_queue_by_reason(struct ieee80211_hw *hw, int queue, in ieee80211_wake_queue_by_reason() argument
484 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queue_by_reason()
488 __ieee80211_wake_queue(hw, queue, reason, refcounted, &flags); in ieee80211_wake_queue_by_reason()
492 void ieee80211_wake_queue(struct ieee80211_hw *hw, int queue) in ieee80211_wake_queue() argument
494 ieee80211_wake_queue_by_reason(hw, queue, in ieee80211_wake_queue()
500 static void __ieee80211_stop_queue(struct ieee80211_hw *hw, int queue, in __ieee80211_stop_queue() argument
504 struct ieee80211_local *local = hw_to_local(hw); in __ieee80211_stop_queue()
506 if (WARN_ON(queue >= hw->queues)) in __ieee80211_stop_queue()
520 void ieee80211_stop_queue_by_reason(struct ieee80211_hw *hw, int queue, in ieee80211_stop_queue_by_reason() argument
524 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queue_by_reason()
528 __ieee80211_stop_queue(hw, queue, reason, refcounted); in ieee80211_stop_queue_by_reason()
532 void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue) in ieee80211_stop_queue() argument
534 ieee80211_stop_queue_by_reason(hw, queue, in ieee80211_stop_queue()
543 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skb() local
549 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skb()
554 __ieee80211_stop_queue(hw, queue, IEEE80211_QUEUE_STOP_REASON_SKB_ADD, in ieee80211_add_pending_skb()
557 __ieee80211_wake_queue(hw, queue, IEEE80211_QUEUE_STOP_REASON_SKB_ADD, in ieee80211_add_pending_skb()
565 struct ieee80211_hw *hw = &local->hw; in ieee80211_add_pending_skbs() local
575 ieee80211_free_txskb(&local->hw, skb); in ieee80211_add_pending_skbs()
581 __ieee80211_stop_queue(hw, queue, in ieee80211_add_pending_skbs()
588 for (i = 0; i < hw->queues; i++) in ieee80211_add_pending_skbs()
589 __ieee80211_wake_queue(hw, i, in ieee80211_add_pending_skbs()
595 void ieee80211_stop_queues_by_reason(struct ieee80211_hw *hw, in ieee80211_stop_queues_by_reason() argument
600 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_stop_queues_by_reason()
606 for_each_set_bit(i, &queues, hw->queues) in ieee80211_stop_queues_by_reason()
607 __ieee80211_stop_queue(hw, i, reason, refcounted); in ieee80211_stop_queues_by_reason()
612 void ieee80211_stop_queues(struct ieee80211_hw *hw) in ieee80211_stop_queues() argument
614 ieee80211_stop_queues_by_reason(hw, IEEE80211_MAX_QUEUE_MAP, in ieee80211_stop_queues()
620 int ieee80211_queue_stopped(struct ieee80211_hw *hw, int queue) in ieee80211_queue_stopped() argument
622 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_stopped()
626 if (WARN_ON(queue >= hw->queues)) in ieee80211_queue_stopped()
637 void ieee80211_wake_queues_by_reason(struct ieee80211_hw *hw, in ieee80211_wake_queues_by_reason() argument
642 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_wake_queues_by_reason()
648 for_each_set_bit(i, &queues, hw->queues) in ieee80211_wake_queues_by_reason()
649 __ieee80211_wake_queue(hw, i, reason, refcounted, &flags); in ieee80211_wake_queues_by_reason()
654 void ieee80211_wake_queues(struct ieee80211_hw *hw) in ieee80211_wake_queues() argument
656 ieee80211_wake_queues_by_reason(hw, IEEE80211_MAX_QUEUE_MAP, in ieee80211_wake_queues()
668 if (sdata && ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) { in ieee80211_get_vif_queues()
680 queues = BIT(local->hw.queues) - 1; in ieee80211_get_vif_queues()
697 if (!queues || !ieee80211_hw_check(&local->hw, QUEUE_CONTROL)) in __ieee80211_flush_queues()
700 ieee80211_stop_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
720 ieee80211_wake_queues_by_reason(&local->hw, queues, in __ieee80211_flush_queues()
742 lockdep_is_held(&local->hw.wiphy->mtx)) { in __iterate_interfaces()
746 !ieee80211_hw_check(&local->hw, NO_VIRTUAL_MONITOR)) in __iterate_interfaces()
767 lockdep_is_held(&local->hw.wiphy->mtx)); in __iterate_interfaces()
768 if (sdata && ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF) && in __iterate_interfaces()
775 struct ieee80211_hw *hw, u32 iter_flags, in ieee80211_iterate_interfaces() argument
780 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_interfaces()
789 struct ieee80211_hw *hw, u32 iter_flags, in ieee80211_iterate_active_interfaces_atomic() argument
794 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_atomic()
804 struct ieee80211_hw *hw, u32 iter_flags, in ieee80211_iterate_active_interfaces_mtx() argument
809 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_active_interfaces_mtx()
811 lockdep_assert_wiphy(hw->wiphy); in ieee80211_iterate_active_interfaces_mtx()
826 lockdep_is_held(&local->hw.wiphy->mtx)) { in __iterate_stations()
834 void ieee80211_iterate_stations_atomic(struct ieee80211_hw *hw, in ieee80211_iterate_stations_atomic() argument
839 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_stations_atomic()
847 void ieee80211_iterate_stations_mtx(struct ieee80211_hw *hw, in ieee80211_iterate_stations_mtx() argument
852 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_iterate_stations_mtx()
854 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_iterate_stations_mtx()
899 void ieee80211_queue_work(struct ieee80211_hw *hw, struct work_struct *work) in ieee80211_queue_work() argument
901 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_work()
910 void ieee80211_queue_delayed_work(struct ieee80211_hw *hw, in ieee80211_queue_delayed_work() argument
914 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_queue_delayed_work()
979 if (local->hw.queues < IEEE80211_NUM_ACS) in ieee80211_set_wmm_default()
1104 skb = dev_alloc_skb(local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN + in ieee80211_send_auth()
1110 skb_reserve(skb, local->hw.extra_tx_headroom + IEEE80211_WEP_IV_LEN); in ieee80211_send_auth()
1160 skb = dev_alloc_skb(local->hw.extra_tx_headroom + in ieee80211_send_deauth_disassoc()
1165 skb_reserve(skb, local->hw.extra_tx_headroom); in ieee80211_send_deauth_disassoc()
1211 sband = local->hw.wiphy->bands[band]; in ieee80211_put_preq_ies_band()
1353 if (cfg80211_any_usable_channels(local->hw.wiphy, BIT(sband->band), in ieee80211_put_preq_ies_band()
1360 if (cfg80211_any_usable_channels(local->hw.wiphy, BIT(sband->band), in ieee80211_put_preq_ies_band()
1495 skb = ieee80211_probereq_get(&local->hw, src, ssid, ssid_len, in ieee80211_build_probe_req()
1525 sband = sdata->local->hw.wiphy->bands[band]; in ieee80211_sta_get_rates()
1569 wiphy_work_cancel(local->hw.wiphy, &local->reconfig_filter); in ieee80211_stop_device()
1572 wiphy_work_flush(local->hw.wiphy, NULL); in ieee80211_stop_device()
1594 wiphy_delayed_work_queue(local->hw.wiphy, &local->scan_work, 0); in ieee80211_flush_completed_scan()
1595 wiphy_delayed_work_flush(local->hw.wiphy, &local->scan_work); in ieee80211_flush_completed_scan()
1604 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_handle_reconfig_failure()
1645 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_assign_chanctx()
1648 lockdep_is_held(&local->hw.wiphy->mtx)); in ieee80211_assign_chanctx()
1660 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_reconfig_stations()
1686 funcs = kcalloc(sdata->local->hw.max_nan_de_entries + 1, in ieee80211_reconfig_nan()
1748 struct ieee80211_hw *hw = &local->hw; in ieee80211_reconfig() local
1761 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_reconfig()
1822 ieee80211_wake_queues_by_reason(hw, IEEE80211_MAX_QUEUE_MAP, in ieee80211_reconfig()
1830 drv_set_frag_threshold(local, -1, hw->wiphy->frag_threshold); in ieee80211_reconfig()
1833 if (hw->wiphy->n_radio > 0) { in ieee80211_reconfig()
1834 for (i = 0; i < hw->wiphy->n_radio; i++) { in ieee80211_reconfig()
1835 rts_threshold = hw->wiphy->radio_cfg[i].rts_threshold; in ieee80211_reconfig()
1839 drv_set_rts_threshold(local, -1, hw->wiphy->rts_threshold); in ieee80211_reconfig()
1843 drv_set_coverage_class(local, -1, hw->wiphy->coverage_class); in ieee80211_reconfig()
1850 sdata = wiphy_dereference(local->hw.wiphy, local->monitor_sdata); in ieee80211_reconfig()
1851 if (sdata && ieee80211_hw_check(&local->hw, WANT_MONITOR_VIF)) { in ieee80211_reconfig()
1864 !ieee80211_hw_check(&local->hw, NO_VIRTUAL_MONITOR)) in ieee80211_reconfig()
1881 !ieee80211_hw_check(&local->hw, NO_VIRTUAL_MONITOR)) in ieee80211_reconfig()
1896 sdata = wiphy_dereference(local->hw.wiphy, local->monitor_sdata); in ieee80211_reconfig()
2030 wiphy_ext_feature_isset(sdata->local->hw.wiphy, in ieee80211_reconfig()
2086 if (!(local->hw.conf.flags & IEEE80211_CONF_PS)) { in ieee80211_reconfig()
2126 wiphy_work_queue(sdata->local->hw.wiphy, in ieee80211_reconfig()
2132 lockdep_is_held(&local->hw.wiphy->mtx)); in ieee80211_reconfig()
2134 lockdep_is_held(&local->hw.wiphy->mtx)); in ieee80211_reconfig()
2152 cfg80211_sched_scan_stopped_locked(local->hw.wiphy, 0); in ieee80211_reconfig()
2165 if (ieee80211_hw_check(hw, AMPDU_AGGREGATION)) { in ieee80211_reconfig()
2191 wiphy_work_queue(local->hw.wiphy, &sdata->work); in ieee80211_reconfig()
2195 ieee80211_wake_queues_by_reason(hw, IEEE80211_MAX_QUEUE_MAP, in ieee80211_reconfig()
2253 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_reconfig_disconnect()
2291 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_recalc_smps()
2294 lockdep_is_held(&local->hw.wiphy->mtx)); in ieee80211_recalc_smps()
2317 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_recalc_min_chandef()
2333 lockdep_is_held(&local->hw.wiphy->mtx)); in ieee80211_recalc_min_chandef()
2584 if (!cfg80211_any_usable_channels(sdata->local->hw.wiphy, in ieee80211_put_he_6ghz_cap()
2589 sband = sdata->local->hw.wiphy->bands[NL80211_BAND_6GHZ]; in ieee80211_put_he_6ghz_cap()
2962 bool ieee80211_chandef_vht_oper(struct ieee80211_hw *hw, u32 vht_cap_info, in ieee80211_chandef_vht_oper() argument
2982 vht_cap = hw->wiphy->bands[chandef->chan->band]->vht_cap.cap; in ieee80211_chandef_vht_oper()
3000 if (!ieee80211_hw_check(hw, SUPPORTS_VHT_EXT_NSS_BW)) in ieee80211_chandef_vht_oper()
3145 he_chandef.chan = ieee80211_get_channel(local->hw.wiphy, freq); in ieee80211_chandef_he_6ghz_oper()
3303 link_data = wiphy_dereference(sdata->local->hw.wiphy, in ieee80211_ave_rssi()
3461 sband = local->hw.wiphy->bands[status->band]; in ieee80211_calculate_rx_timestamp()
3506 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_dfs_cac_cancel()
3521 wiphy_delayed_work_cancel(local->hw.wiphy, in ieee80211_dfs_cac_cancel()
3544 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_dfs_radar_detected_work()
3558 cfg80211_radar_event(local->hw.wiphy, &chandef, GFP_KERNEL); in ieee80211_dfs_radar_detected_work()
3563 ieee80211_radar_mark_chan_ctx_iterator(struct ieee80211_hw *hw, in ieee80211_radar_mark_chan_ctx_iterator() argument
3580 void ieee80211_radar_detected(struct ieee80211_hw *hw, in ieee80211_radar_detected() argument
3583 struct ieee80211_local *local = hw_to_local(hw); in ieee80211_radar_detected()
3587 ieee80211_iter_chan_contexts_atomic(hw, ieee80211_radar_mark_chan_ctx_iterator, in ieee80211_radar_detected()
3590 wiphy_work_queue(hw->wiphy, &local->radar_detected_work); in ieee80211_radar_detected()
3988 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_chanctx_radar_detect()
4112 cfg80211_iftype_allowed(local->hw.wiphy, in ieee80211_fill_ifcomb_params()
4140 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_check_combinations()
4163 if (cfg80211_iftype_allowed(local->hw.wiphy, iftype, 0, 1)) { in ieee80211_check_combinations()
4181 return cfg80211_check_combinations(local->hw.wiphy, ¶ms); in ieee80211_check_combinations()
4202 lockdep_assert_wiphy(local->hw.wiphy); in ieee80211_max_num_channels()
4206 err = cfg80211_iter_combinations(local->hw.wiphy, ¶ms, in ieee80211_max_num_channels()