From: Aloka Dixit <alokad@codeaurora.org>
To: johannes@sipsolutions.net
Cc: linux-wireless@vger.kernel.org, John Crispin <john@phrozen.org>,
Aloka Dixit <alokad@codeaurora.org>
Subject: [PATCH v10 4/4] mac80211: CSA on non-transmitting interfaces
Date: Mon, 26 Apr 2021 12:05:34 -0700 [thread overview]
Message-ID: <20210426190534.12667-5-alokad@codeaurora.org> (raw)
In-Reply-To: <20210426190534.12667-1-alokad@codeaurora.org>
From: John Crispin <john@phrozen.org>
Trigger ieee80211_csa_finish() on the non-transmitting interfaces
when channel switch concludes on the transmitting interface.
The mutex wiphy->mtx is released before locking sdata->local->iflist_mtx
to avoid deadlock with any other code path which may be using the same
mutexes in opposite order.
Signed-off-by: John Crispin <john@phrozen.org>
Co-developed-by: Aloka Dixit <alokad@codeaurora.org>
Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
---
v10: Used iflist_mtx instead of rcu_read_lock() as most other accesses
to sdata->local->interfaces do so.
net/mac80211/cfg.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index db21e1a621b1..5ca75a23d54c 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -3254,8 +3254,21 @@ void ieee80211_csa_finish(struct ieee80211_vif *vif)
{
struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
- ieee80211_queue_work(&sdata->local->hw,
- &sdata->csa_finalize_work);
+ if (sdata->vif.mbssid.flags & IEEE80211_VIF_MBSSID_TX) {
+ struct ieee80211_sub_if_data *child;
+
+ wiphy_unlock(sdata->local->hw.wiphy);
+ mutex_lock(&sdata->local->iflist_mtx);
+ list_for_each_entry(child, &sdata->local->interfaces, list)
+ if (child->vif.mbssid.parent == vif &&
+ ieee80211_sdata_running(child))
+ ieee80211_queue_work(&child->local->hw,
+ &child->csa_finalize_work);
+ mutex_unlock(&sdata->local->iflist_mtx);
+ wiphy_lock(sdata->local->hw.wiphy);
+ }
+
+ ieee80211_queue_work(&sdata->local->hw, &sdata->csa_finalize_work);
}
EXPORT_SYMBOL(ieee80211_csa_finish);
--
2.31.1
next prev parent reply other threads:[~2021-04-26 19:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-26 19:05 [PATCH v10 0/4] multiple bssid and EMA support in AP mode Aloka Dixit
2021-04-26 19:05 ` [PATCH v10 1/4] nl80211: " Aloka Dixit
2021-06-14 16:15 ` Aloka Dixit
2021-06-23 15:55 ` Johannes Berg
2021-04-26 19:05 ` [PATCH v10 2/4] mac80211: multiple bssid support in interface handling Aloka Dixit
2021-06-23 15:57 ` Johannes Berg
2021-06-28 17:16 ` Aloka Dixit
2021-06-28 19:17 ` Johannes Berg
2021-04-26 19:05 ` [PATCH v10 3/4] mac80211: MBSSID and EMA support in beacon handling Aloka Dixit
2021-04-26 19:05 ` Aloka Dixit [this message]
2021-06-23 16:03 ` [PATCH v10 4/4] mac80211: CSA on non-transmitting interfaces Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210426190534.12667-5-alokad@codeaurora.org \
--to=alokad@codeaurora.org \
--cc=johannes@sipsolutions.net \
--cc=john@phrozen.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.