Linux wireless drivers development
 help / color / mirror / Atom feed
From: Luca Coelho <luca@coelho.fi>
To: johannes@sipsolutions.net
Cc: linux-wireless@vger.kernel.org,
	Naftali Goldstein <naftali.goldstein@intel.com>,
	Luca Coelho <luciano.coelho@intel.com>
Subject: [PATCH 03/10] mac80211: do not start any work during reconfigure flow
Date: Wed, 29 May 2019 15:25:30 +0300	[thread overview]
Message-ID: <20190529122537.8564-4-luca@coelho.fi> (raw)
In-Reply-To: <20190529122537.8564-1-luca@coelho.fi>

From: Naftali Goldstein <naftali.goldstein@intel.com>

It is not a good idea to try to perform any work (e.g. send an auth
frame) during reconfigure flow.

Prevent this from happening, and at the end of the reconfigure flow
requeue all the works.

Signed-off-by: Naftali Goldstein <naftali.goldstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
---
 net/mac80211/ieee80211_i.h | 7 +++++++
 net/mac80211/util.c        | 4 ++++
 2 files changed, 11 insertions(+)

diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 073a8235ae1b..b10fe579f993 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -2037,6 +2037,13 @@ void __ieee80211_flush_queues(struct ieee80211_local *local,
 
 static inline bool ieee80211_can_run_worker(struct ieee80211_local *local)
 {
+	/*
+	 * It's unsafe to try to do any work during reconfigure flow.
+	 * When the flow ends the work will be requeued.
+	 */
+	if (local->in_reconfig)
+		return false;
+
 	/*
 	 * If quiescing is set, we are racing with __ieee80211_suspend.
 	 * __ieee80211_suspend flushes the workers after setting quiescing,
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index cba4633cd6cf..81615d86fd70 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -2480,6 +2480,10 @@ int ieee80211_reconfig(struct ieee80211_local *local)
 		mutex_lock(&local->mtx);
 		ieee80211_start_next_roc(local);
 		mutex_unlock(&local->mtx);
+
+		/* Requeue all works */
+		list_for_each_entry(sdata, &local->interfaces, list)
+			ieee80211_queue_work(&local->hw, &sdata->work);
 	}
 
 	ieee80211_wake_queues_by_reason(hw, IEEE80211_MAX_QUEUE_MAP,
-- 
2.20.1


  parent reply	other threads:[~2019-05-29 12:25 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-29 12:25 [PATCH 00/10] cfg80211/mac80211 patches from our internal tree 2019-05-29 Luca Coelho
2019-05-29 12:25 ` [PATCH 01/10] cfg80211: report measurement start TSF correctly Luca Coelho
2019-05-29 12:25 ` [PATCH 02/10] cfg80211: use BIT_ULL in cfg80211_parse_mbssid_data() Luca Coelho
2019-05-29 16:28   ` Kalle Valo
2019-05-29 12:25 ` Luca Coelho [this message]
2019-05-29 12:25 ` [PATCH 04/10] cfg80211: util: fix bit count off by one Luca Coelho
2019-05-29 12:25 ` [PATCH 05/10] cfg80211: Add a function to iterate all BSS entries Luca Coelho
2019-05-29 12:25 ` [PATCH 06/10] ieee80211: Add a missing extended capability flag definition Luca Coelho
2019-05-29 12:25 ` [PATCH 07/10] mac80211: call rate_control_send_low() internally Luca Coelho
2019-05-29 12:25 ` [PATCH 08/10] mac80211: use STA info in rate_control_send_low() Luca Coelho
2019-05-29 12:25 ` [PATCH 09/10] mac80211: fill low rate even for HAS_RATE_CONTROL Luca Coelho
2019-05-29 12:25 ` [PATCH 10/10] mac80211: extend __rate_control_send_low warning Luca Coelho

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=20190529122537.8564-4-luca@coelho.fi \
    --to=luca@coelho.fi \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luciano.coelho@intel.com \
    --cc=naftali.goldstein@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox