2022-04-24 16:27:25

by Hermes Zhang

[permalink] [raw]
Subject: [PATCH v3] brcmfmac: of: introduce new property to allow disable PNO

From: Hermes Zhang <[email protected]>

Some versions of the Broadcom firmware for this chip seem to hang
if the PNO feature is enabled when connecting to a dummy or
non-existent AP.
Add a new property to allow the disabling of PNO for devices with
this specific firmware.

Signed-off-by: Hermes Zhang <[email protected]>
---

Notes:
Comments update

drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
index 8623bde5eb70..121a195e4054 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
@@ -11,6 +11,7 @@
#include "core.h"
#include "common.h"
#include "of.h"
+#include "feature.h"

static int brcmf_of_get_country_codes(struct device *dev,
struct brcmf_mp_device *settings)
@@ -102,6 +103,9 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
if (bus_type != BRCMF_BUSTYPE_SDIO)
return;

+ if (of_find_property(np, "brcm,pno-disable", NULL))
+ settings->feature_disable |= BIT(BRCMF_FEAT_PNO);
+
if (of_property_read_u32(np, "brcm,drive-strength", &val) == 0)
sdio->drive_strength = val;

--
2.30.2


2022-04-25 01:50:41

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH v3] brcmfmac: of: introduce new property to allow disable PNO

On Sun, Apr 24, 2022 at 10:22:24AM +0800, Hermes Zhang wrote:
> From: Hermes Zhang <[email protected]>
>
> Some versions of the Broadcom firmware for this chip seem to hang
> if the PNO feature is enabled when connecting to a dummy or
> non-existent AP.
> Add a new property to allow the disabling of PNO for devices with
> this specific firmware.

If you know the specific version of the firmware which is broken, why
do you need a DT property? Why not just check the firmware version and
disable it automatically?

It does not seem like you are describing hardware here, which is what
DT is for.

Andrew