From f7995cc37fc4e37795c6ae5109c0d230b3e57cfd Mon Sep 17 00:00:00 2001 From: "P Rakshith (AFS CAE 1 A)" Date: Wed, 8 May 2024 08:42:06 +0000 Subject: [PATCH 258/296] brcmfmac: Add module_param to set idle_time_zero 5cec4463 brcmfmac: Add module_param "idle_time_zero" --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 8 ++++++++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h | 2 ++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 ++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c index 3520c969ad6f..9d0663eaca50 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c @@ -138,6 +138,10 @@ static int brcmf_sdio_idleclk_disable = BRCMFMAC_AUTO; module_param_named(sdio_idleclk_disable, brcmf_sdio_idleclk_disable, int, 0644); MODULE_PARM_DESC(sdio_idleclk_disable, "Disable SDIO idle clock"); +static int brcmf_idle_time_zero; +module_param_named(idle_time_zero, brcmf_idle_time_zero, int, 0644); +MODULE_PARM_DESC(idle_time_zero, "Set idle interval to zero"); + static struct brcmfmac_platform_data *brcmfmac_pdata; struct brcmf_mp_global_t brcmf_mp_global; @@ -762,6 +766,7 @@ int brcmf_debugfs_param_read(struct seq_file *s, void *data) seq_printf(s, "%-20s: 0x%x\n", "offload_feat", brcmf_offload_feat); seq_printf(s, "%-20s: %d\n", "txglomsz", brcmf_sdiod_txglomsz); seq_printf(s, "%-20s: %d\n", "bt_over_sdio", !!brcmf_bt_over_sdio); + seq_printf(s, "%-20s: %d\n", "idle_time_zero", !!brcmf_idle_time_zero); return 0; } @@ -834,6 +839,9 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev, brcmf_dbg(INFO, "txglomsz: %d\n", settings->bus.sdio.txglomsz); } + settings->idle_time_zero = brcmf_idle_time_zero; + brcmf_dbg(INFO, "idle_time_zero: %d\n", settings->idle_time_zero); + /* See if there is any device specific platform data configured */ found = false; if (brcmfmac_pdata) { diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h index eab720625ef8..422fe83793f4 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h @@ -66,6 +66,7 @@ extern struct brcmf_mp_global_t brcmf_mp_global; * @bus: Bus specific platform data. Only SDIO at the mmoment. * @pkt_prio: Support customer dscp to WMM up mapping. * @idleclk_disable: SDIO bus clock output disable when bus is idle. + * @idle_time_zero: Set idle interval to zero. */ struct brcmf_mp_device { bool p2p_enable; @@ -95,6 +96,7 @@ struct brcmf_mp_device { } bus; bool pkt_prio; int idleclk_disable; + bool idle_time_zero; }; /** diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 246ecbe5fe4a..c83f4286a2d9 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -5716,7 +5716,12 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) /* ...and initialize clock/power states */ bus->clkstate = CLK_SDONLY; - bus->idletime = BRCMF_IDLE_INTERVAL; + + if (sdiodev->settings->idle_time_zero) + bus->idletime = 0; + else + bus->idletime = BRCMF_IDLE_INTERVAL; + bus->idleclock = BRCMF_IDLE_ACTIVE; /* SR state */ -- 2.25.1