mirror of
https://github.com/armbian/build
synced 2025-09-24 19:47:06 +07:00
94 lines
4.1 KiB
Diff
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
|
|
|