linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jerome Pouiller <Jerome.Pouiller@silabs.com>
To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Kalle Valo" <kvalo@codeaurora.org>,
	"David S . Miller" <davem@davemloft.net>,
	"Jérôme Pouiller" <jerome.pouiller@silabs.com>
Subject: [PATCH v3 02/32] staging: wfx: do not send CAB while scanning
Date: Mon, 13 Sep 2021 15:01:33 +0200	[thread overview]
Message-ID: <20210913130203.1903622-3-Jerome.Pouiller@silabs.com> (raw)
In-Reply-To: <20210913130203.1903622-1-Jerome.Pouiller@silabs.com>

From: Jérôme Pouiller <jerome.pouiller@silabs.com>

During the scan requests, the Tx traffic is suspended. This lock is
shared by all the network interfaces. So, a scan request on one
interface will block the traffic on a second interface. This causes
trouble when the queued traffic contains CAB (Content After DTIM Beacon)
since this traffic cannot be delayed.

It could be possible to make the lock local to each interface. But It
would only push the problem further. The device won't be able to send
the CAB before the end of the scan.

So, this patch just ignore the DTIM indication when a scan is in
progress. The firmware will send another indication on the next DTIM and
this time the system will be able to send the traffic just behind the
beacon.

The only drawback of this solution is that the stations connected to
the AP will wait for traffic after the DTIM for nothing. But since the
case is really rare it is not a big deal.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
---
 drivers/staging/wfx/sta.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index a236e5bb6914..5de9ccf02285 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -629,8 +629,19 @@ int wfx_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set)
 
 void wfx_suspend_resume_mc(struct wfx_vif *wvif, enum sta_notify_cmd notify_cmd)
 {
+	struct wfx_vif *wvif_it;
+
 	if (notify_cmd != STA_NOTIFY_AWAKE)
 		return;
+
+	/* Device won't be able to honor CAB if a scan is in progress on any
+	 * interface. Prefer to skip this DTIM and wait for the next one.
+	 */
+	wvif_it = NULL;
+	while ((wvif_it = wvif_iterate(wvif->wdev, wvif_it)) != NULL)
+		if (mutex_is_locked(&wvif_it->scan_lock))
+			return;
+
 	if (!wfx_tx_queues_has_cab(wvif) || wvif->after_dtim_tx_allowed)
 		dev_warn(wvif->wdev->dev, "incorrect sequence (%d CAB in queue)",
 			 wfx_tx_queues_has_cab(wvif));
-- 
2.33.0


  parent reply	other threads:[~2021-09-13 13:03 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-13 13:01 [PATCH v3 00/32] staging/wfx: usual maintenance Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 01/32] staging: wfx: use abbreviated message for "incorrect sequence" Jerome Pouiller
2021-09-13 13:01 ` Jerome Pouiller [this message]
2021-09-13 13:01 ` [PATCH v3 03/32] staging: wfx: ignore PS when STA/AP share same channel Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 04/32] staging: wfx: wait for SCAN_CMPL after a SCAN_STOP Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 05/32] staging: wfx: avoid possible lock-up during scan Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 06/32] staging: wfx: drop unused argument from hif_scan() Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 07/32] staging: wfx: fix atomic accesses in wfx_tx_queue_empty() Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 08/32] staging: wfx: take advantage of wfx_tx_queue_empty() Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 09/32] staging: wfx: declare support for TDLS Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 10/32] staging: wfx: fix support for CSA Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 11/32] staging: wfx: relax the PDS existence constraint Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 12/32] staging: wfx: simplify API coherency check Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 13/32] staging: wfx: update with the firmware API 3.8 Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 14/32] staging: wfx: uniformize counter names Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 15/32] staging: wfx: fix misleading 'rate_id' usage Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 16/32] staging: wfx: declare variables at beginning of functions Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 17/32] staging: wfx: simplify hif_join() Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 18/32] staging: wfx: reorder function for slightly better eye candy Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 19/32] staging: wfx: fix error names Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 20/32] staging: wfx: apply naming rules in hif_tx_mib.c Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 21/32] staging: wfx: remove unused definition Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 22/32] staging: wfx: remove useless debug statement Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 23/32] staging: wfx: fix space after cast operator Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 24/32] staging: wfx: remove references to WFxxx in comments Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 25/32] staging: wfx: update files descriptions Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 26/32] staging: wfx: reformat comment Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 27/32] staging: wfx: avoid c99 comments Jerome Pouiller
2021-09-13 13:01 ` [PATCH v3 28/32] staging: wfx: fix comments styles Jerome Pouiller
2021-09-13 13:02 ` [PATCH v3 29/32] staging: wfx: remove useless comments after #endif Jerome Pouiller
2021-09-13 13:02 ` [PATCH v3 30/32] staging: wfx: explain the purpose of wfx_send_pds() Jerome Pouiller
2021-09-13 13:02 ` [PATCH v3 31/32] staging: wfx: indent functions arguments Jerome Pouiller
2021-09-13 13:02 ` [PATCH v3 32/32] staging: wfx: ensure IRQ is ready before enabling it Jerome Pouiller
2021-09-13 14:12 ` [PATCH v3 00/32] staging/wfx: usual maintenance Dan Carpenter

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=20210913130203.1903622-3-Jerome.Pouiller@silabs.com \
    --to=jerome.pouiller@silabs.com \
    --cc=davem@davemloft.net \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).