mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
synced 2025-04-19 20:58:31 +09:00
wifi: mac80211: add ieee80211_iter_chan_contexts_mtx
Add a chanctx iterator that can be called from a wiphy-locked context. Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250212082137.d85eef3024de.Icda0616416c5fd4b2cbf892bdab2476f26e644ec@changeid [fix kernel-doc] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
d00c0c4105
commit
ebba23e077
@ -6671,6 +6671,31 @@ void ieee80211_iter_chan_contexts_atomic(
|
||||
void *data),
|
||||
void *iter_data);
|
||||
|
||||
/**
|
||||
* ieee80211_iter_chan_contexts_mtx - iterate channel contexts
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
* @iter: iterator function
|
||||
* @iter_data: data passed to iterator function
|
||||
*
|
||||
* Iterate all active channel contexts. This function can only be used while
|
||||
* holding the wiphy mutex.
|
||||
*
|
||||
* The iterator will not find a context that's being added (during
|
||||
* the driver callback to add it) but will find it while it's being
|
||||
* removed.
|
||||
*
|
||||
* Note that during hardware restart, all contexts that existed
|
||||
* before the restart are considered already present so will be
|
||||
* found while iterating, whether they've been re-added already
|
||||
* or not.
|
||||
*/
|
||||
void ieee80211_iter_chan_contexts_mtx(
|
||||
struct ieee80211_hw *hw,
|
||||
void (*iter)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_chanctx_conf *chanctx_conf,
|
||||
void *data),
|
||||
void *iter_data);
|
||||
|
||||
/**
|
||||
* ieee80211_ap_probereq_get - retrieve a Probe Request template
|
||||
* @hw: pointer obtained from ieee80211_alloc_hw().
|
||||
|
@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* mac80211 - channel management
|
||||
* Copyright 2020 - 2024 Intel Corporation
|
||||
* Copyright 2020 - 2025 Intel Corporation
|
||||
*/
|
||||
|
||||
#include <linux/nl80211.h>
|
||||
@ -2178,3 +2178,21 @@ void ieee80211_iter_chan_contexts_atomic(
|
||||
rcu_read_unlock();
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ieee80211_iter_chan_contexts_atomic);
|
||||
|
||||
void ieee80211_iter_chan_contexts_mtx(
|
||||
struct ieee80211_hw *hw,
|
||||
void (*iter)(struct ieee80211_hw *hw,
|
||||
struct ieee80211_chanctx_conf *chanctx_conf,
|
||||
void *data),
|
||||
void *iter_data)
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct ieee80211_chanctx *ctx;
|
||||
|
||||
lockdep_assert_wiphy(hw->wiphy);
|
||||
|
||||
list_for_each_entry(ctx, &local->chanctx_list, list)
|
||||
if (ctx->driver_present)
|
||||
iter(hw, &ctx->conf, iter_data);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ieee80211_iter_chan_contexts_mtx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user