diff mbox series

brcmfmac: set timeout value when configuring power save

Message ID 20200707155410.12123-1-nsaenzjulienne@suse.de
State Awaiting Upstream
Delegated to: David Miller
Headers show
Series brcmfmac: set timeout value when configuring power save | expand

Commit Message

Nicolas Saenz Julienne July 7, 2020, 3:54 p.m. UTC
Set the timeout value as per cfg80211's set_power_mgmt() request. If the
requested value value is left undefined we set it to 2 seconds, the
maximum supported value.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
---

Note: I got the 2 seconds value from the Raspberry Pi downstream kernel.

 .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c    | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Kalle Valo July 14, 2020, 9:41 a.m. UTC | #1
Nicolas Saenz Julienne <nsaenzjulienne@suse.de> writes:

> Set the timeout value as per cfg80211's set_power_mgmt() request. If the
> requested value value is left undefined we set it to 2 seconds, the
> maximum supported value.
>
> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
> ---
>
> Note: I got the 2 seconds value from the Raspberry Pi downstream kernel.
>
>  .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c    | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> index a757abd7a599..15578c6e87cd 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> @@ -84,6 +84,8 @@
>  
>  #define BRCMF_ND_INFO_TIMEOUT		msecs_to_jiffies(2000)
>  
> +#define BRCMF_PS_MAX_TIMEOUT_MS		2000
> +
>  #define BRCMF_ASSOC_PARAMS_FIXED_SIZE \
>  	(sizeof(struct brcmf_assoc_params_le) - sizeof(u16))
>  
> @@ -2941,6 +2943,14 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
>  		else
>  			bphy_err(drvr, "error (%d)\n", err);
>  	}
> +
> +	if ((u32)timeout > BRCMF_PS_MAX_TIMEOUT_MS)
> +		timeout = BRCMF_PS_MAX_TIMEOUT_MS;

Wouldn't min_t() be better? Then you won't need the ugly cast either.
diff mbox series

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index a757abd7a599..15578c6e87cd 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -84,6 +84,8 @@ 
 
 #define BRCMF_ND_INFO_TIMEOUT		msecs_to_jiffies(2000)
 
+#define BRCMF_PS_MAX_TIMEOUT_MS		2000
+
 #define BRCMF_ASSOC_PARAMS_FIXED_SIZE \
 	(sizeof(struct brcmf_assoc_params_le) - sizeof(u16))
 
@@ -2941,6 +2943,14 @@  brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
 		else
 			bphy_err(drvr, "error (%d)\n", err);
 	}
+
+	if ((u32)timeout > BRCMF_PS_MAX_TIMEOUT_MS)
+		timeout = BRCMF_PS_MAX_TIMEOUT_MS;
+
+	err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret", timeout);
+	if (err)
+		bphy_err(drvr, "Unable to set pm timeout, (%d)\n", err);
+
 done:
 	brcmf_dbg(TRACE, "Exit\n");
 	return err;