Files
build/patch/kernel/archive/sunxi-5.15/patches.cypress/0009-brcmfmac-introduce-module-parameter-to-configure-def.patch

94 lines
4.1 KiB
Diff

From 03f45fcc1fb766a2193415a203695802eb3c8796 Mon Sep 17 00:00:00 2001
From: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Date: Mon, 17 Sep 2018 04:51:08 -0500
Subject: [PATCH 009/179] brcmfmac: introduce module parameter to configure
default PM mode
Add module parameter max_pm to allow using PM_MAX as default power
management mode. Default PM mode is set to PM_MAX when max_pm=1, and is
set to PM_FAST when max_pm=0 or max_pm is not set.
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 ++--
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 6 ++++++
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h | 2 ++
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 32bbf45fae72..3b876b9a549c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -2947,7 +2947,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
goto done;
}
- pm = enabled ? PM_FAST : PM_OFF;
+ pm = enabled ? ifp->drvr->settings->default_pm : PM_OFF;
/* Do not enable the power save after assoc if it is a p2p interface */
if (ifp->vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) {
brcmf_dbg(INFO, "Do not enable power save for P2P clients\n");
@@ -7357,7 +7357,7 @@ static s32 brcmf_config_dongle(struct brcmf_cfg80211_info *cfg)
brcmf_dongle_scantime(ifp);
- power_mode = cfg->pwr_save ? PM_FAST : PM_OFF;
+ power_mode = cfg->pwr_save ? ifp->drvr->settings->default_pm : PM_OFF;
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, power_mode);
if (err)
goto default_conf_out;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index 1224a7773681..ae16781dd527 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -20,6 +20,7 @@
#include "of.h"
#include "firmware.h"
#include "chip.h"
+#include "defs.h"
MODULE_AUTHOR("Broadcom Corporation");
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
@@ -75,6 +76,10 @@ static int brcmf_sdio_wq_highpri;
module_param_named(sdio_wq_highpri, brcmf_sdio_wq_highpri, int, 0);
MODULE_PARM_DESC(sdio_wq_highpri, "SDIO workqueue is set to high priority");
+static int brcmf_max_pm;
+module_param_named(max_pm, brcmf_max_pm, int, 0);
+MODULE_PARM_DESC(max_pm, "Use max power management mode by default");
+
#ifdef DEBUG
/* always succeed brcmf_bus_started() */
static int brcmf_ignore_probe_fail;
@@ -435,6 +440,7 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
settings->iapp = !!brcmf_iapp_enable;
settings->eap_restrict = !!brcmf_eap_restrict;
settings->sdio_wq_highpri = !!brcmf_sdio_wq_highpri;
+ settings->default_pm = !!brcmf_max_pm ? PM_MAX : PM_FAST;
#ifdef DEBUG
settings->ignore_probe_fail = !!brcmf_ignore_probe_fail;
#endif
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
index 34991a853c06..c0bf5867af5f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
@@ -39,6 +39,7 @@ extern struct brcmf_mp_global_t brcmf_mp_global;
* @roamoff: Firmware roaming off?
* @eap_restrict: Not allow data tx/rx until 802.1X auth succeeds
* @sdio_wq_highpri: Tasks submitted to SDIO workqueue will run immediately.
+ * @default_pm: default power management (PM) mode.
* @ignore_probe_fail: Ignore probe failure.
* @country_codes: If available, pointer to struct for translating country codes
* @bus: Bus specific platform data. Only SDIO at the mmoment.
@@ -51,6 +52,7 @@ struct brcmf_mp_device {
bool iapp;
bool eap_restrict;
bool sdio_wq_highpri;
+ int default_pm;
bool ignore_probe_fail;
struct brcmfmac_pd_cc *country_codes;
const char *board_type;
--
2.17.1