linux-kernel.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 03/31] staging: wfx: ignore PS when STA/AP share same channel
Date: Fri, 10 Sep 2021 18:04:36 +0200	[thread overview]
Message-ID: <20210910160504.1794332-4-Jerome.Pouiller@silabs.com> (raw)
In-Reply-To: <20210910160504.1794332-1-Jerome.Pouiller@silabs.com>

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

When multiple interface are in use. One is always AP while the other is
always station. When the two interface use the same channel, it makes no
sense to enabled Power Saving (PS) on the station. Indeed, because of
the AP, the device will be kept awake on this channel anyway.

In add, when multiple interface are in use, mac80211 does not update the
PS information and delegate to the driver responsibility to do the
right thing.

Thus, in the current code, when the user enable PS in this
configuration, the driver finally enable PS-Poll which is probably not
what the user expected.

This patch detect this case and applies a sane configuration in all
cases.

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

diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c
index d901588237a4..58446f78d648 100644
--- a/drivers/staging/wfx/sta.c
+++ b/drivers/staging/wfx/sta.c
@@ -154,18 +154,26 @@ static int wfx_get_ps_timeout(struct wfx_vif *wvif, bool *enable_ps)
 		chan0 = wdev_to_wvif(wvif->wdev, 0)->vif->bss_conf.chandef.chan;
 	if (wdev_to_wvif(wvif->wdev, 1))
 		chan1 = wdev_to_wvif(wvif->wdev, 1)->vif->bss_conf.chandef.chan;
-	if (chan0 && chan1 && chan0->hw_value != chan1->hw_value &&
-	    wvif->vif->type != NL80211_IFTYPE_AP) {
-		// It is necessary to enable powersave if channels
-		// are different.
-		if (enable_ps)
-			*enable_ps = true;
-		if (wvif->wdev->force_ps_timeout > -1)
-			return wvif->wdev->force_ps_timeout;
-		else if (wfx_api_older_than(wvif->wdev, 3, 2))
-			return 0;
-		else
-			return 30;
+	if (chan0 && chan1 && wvif->vif->type != NL80211_IFTYPE_AP) {
+		if (chan0->hw_value == chan1->hw_value) {
+			// It is useless to enable PS if channels are the same.
+			if (enable_ps)
+				*enable_ps = false;
+			if (wvif->vif->bss_conf.assoc && wvif->vif->bss_conf.ps)
+				dev_info(wvif->wdev->dev, "ignoring requested PS mode");
+			return -1;
+		} else {
+			// It is necessary to enable PS if channels
+			// are different.
+			if (enable_ps)
+				*enable_ps = true;
+			if (wvif->wdev->force_ps_timeout > -1)
+				return wvif->wdev->force_ps_timeout;
+			else if (wfx_api_older_than(wvif->wdev, 3, 2))
+				return 0;
+			else
+				return 30;
+		}
 	}
 	if (enable_ps)
 		*enable_ps = wvif->vif->bss_conf.ps;
-- 
2.33.0


  parent reply	other threads:[~2021-09-10 16:05 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-10 16:04 [PATCH 00/31] [PATCH 00/31] staging/wfx: usual maintenance Jerome Pouiller
2021-09-10 16:04 ` [PATCH 01/31] staging: wfx: use abbreviated message for "incorrect sequence" Jerome Pouiller
2021-09-10 16:04 ` [PATCH 02/31] staging: wfx: do not send CAB while scanning Jerome Pouiller
2021-09-10 16:31   ` Kari Argillander
2021-09-10 16:54     ` Jérôme Pouiller
2021-09-10 17:01       ` Kari Argillander
2021-09-10 17:12         ` Jérôme Pouiller
2021-09-10 16:04 ` Jerome Pouiller [this message]
2021-09-10 16:04 ` [PATCH 04/31] staging: wfx: wait for SCAN_CMPL after a SCAN_STOP Jerome Pouiller
2021-09-10 16:04 ` [PATCH 05/31] staging: wfx: avoid possible lock-up during scan Jerome Pouiller
2021-09-10 16:04 ` [PATCH 06/31] staging: wfx: drop unused argument from hif_scan() Jerome Pouiller
2021-09-10 16:04 ` [PATCH 07/31] staging: wfx: fix atomic accesses in wfx_tx_queue_empty() Jerome Pouiller
2021-09-10 16:04 ` [PATCH 08/31] staging: wfx: take advantage of wfx_tx_queue_empty() Jerome Pouiller
2021-09-10 16:04 ` [PATCH 09/31] staging: wfx: declare support for TDLS Jerome Pouiller
2021-09-10 16:04 ` [PATCH 10/31] staging: wfx: fix support for CSA Jerome Pouiller
2021-09-10 16:04 ` [PATCH 11/31] staging: wfx: relax the PDS existence constraint Jerome Pouiller
2021-09-10 16:04 ` [PATCH 12/31] staging: wfx: simplify API coherency check Jerome Pouiller
2021-09-10 16:04 ` [PATCH 13/31] staging: wfx: update with API 3.8 Jerome Pouiller
2021-09-10 16:43   ` Kari Argillander
2021-09-10 17:03     ` Jérôme Pouiller
2021-09-10 16:04 ` [PATCH 14/31] staging: wfx: uniformize counter names Jerome Pouiller
2021-09-10 16:04 ` [PATCH 15/31] staging: wfx: fix misleading 'rate_id' usage Jerome Pouiller
2021-09-10 16:04 ` [PATCH 16/31] staging: wfx: declare variables at beginning of functions Jerome Pouiller
2021-09-10 16:04 ` [PATCH 17/31] staging: wfx: simplify hif_join() Jerome Pouiller
2021-09-10 16:38   ` Kari Argillander
2021-09-10 16:04 ` [PATCH 18/31] staging: wfx: reorder function for slightly better eye candy Jerome Pouiller
2021-09-10 16:04 ` [PATCH 19/31] staging: wfx: fix error names Jerome Pouiller
2021-09-10 16:04 ` [PATCH 20/31] staging: wfx: apply naming rules in hif_tx_mib.c Jerome Pouiller
2021-09-10 16:04 ` [PATCH 21/31] staging: wfx: remove unused definition Jerome Pouiller
2021-09-10 16:04 ` [PATCH 22/31] staging: wfx: remove useless debug statement Jerome Pouiller
2021-09-10 16:04 ` [PATCH 23/31] staging: wfx: fix space after cast operator Jerome Pouiller
2021-09-10 16:04 ` [PATCH 24/31] staging: wfx: remove references to WFxxx in comments Jerome Pouiller
2021-09-10 16:04 ` [PATCH 25/31] staging: wfx: update files descriptions Jerome Pouiller
2021-09-10 16:04 ` [PATCH 26/31] staging: wfx: reformat comment Jerome Pouiller
2021-09-10 16:05 ` [PATCH 27/31] staging: wfx: avoid c99 comments Jerome Pouiller
2021-09-10 16:05 ` [PATCH 28/31] staging: wfx: fix comments styles Jerome Pouiller
2021-09-10 16:05 ` [PATCH 29/31] staging: wfx: remove useless comments after #endif Jerome Pouiller
2021-09-10 16:27   ` Kari Argillander
2021-09-10 16:49     ` Jérôme Pouiller
2021-09-10 17:05       ` Kari Argillander
2021-09-10 16:05 ` [PATCH 30/31] staging: wfx: explain the purpose of wfx_send_pds() Jerome Pouiller
2021-09-10 16:05 ` [PATCH 31/31] staging: wfx: indent functions arguments Jerome Pouiller
2021-09-10 16:57   ` Kari Argillander
2021-09-10 17:12     ` Jérôme Pouiller
2021-09-10 17:28       ` Kari Argillander
2021-09-10 17:07 ` [PATCH 00/31] [PATCH 00/31] staging/wfx: usual maintenance Kari Argillander
2021-09-10 17:15   ` Jérôme Pouiller

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=20210910160504.1794332-4-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).