Commit a0490936 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville

mwifiex: disable auto deep sleep before unloading the driver

Since the auto deep sleep mode has been enabled at driver init time
we should disable it at driver unloading to shutdown the function
gracefully.
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent df3b124b
...@@ -249,6 +249,7 @@ struct mwifiex_ds_hs_cfg { ...@@ -249,6 +249,7 @@ struct mwifiex_ds_hs_cfg {
}; };
#define DEEP_SLEEP_ON 1 #define DEEP_SLEEP_ON 1
#define DEEP_SLEEP_OFF 0
#define DEEP_SLEEP_IDLE_TIME 100 #define DEEP_SLEEP_IDLE_TIME 100
#define PS_MODE_AUTO 1 #define PS_MODE_AUTO 1
......
...@@ -929,6 +929,7 @@ int mwifiex_set_hs_params(struct mwifiex_private *priv, ...@@ -929,6 +929,7 @@ int mwifiex_set_hs_params(struct mwifiex_private *priv,
struct mwifiex_ds_hs_cfg *hscfg); struct mwifiex_ds_hs_cfg *hscfg);
int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type); int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type);
int mwifiex_enable_hs(struct mwifiex_adapter *adapter); int mwifiex_enable_hs(struct mwifiex_adapter *adapter);
int mwifiex_disable_auto_ds(struct mwifiex_private *priv);
int mwifiex_get_signal_info(struct mwifiex_private *priv, int mwifiex_get_signal_info(struct mwifiex_private *priv,
struct mwifiex_ds_get_signal *signal); struct mwifiex_ds_get_signal *signal);
int mwifiex_drv_get_data_rate(struct mwifiex_private *priv, int mwifiex_drv_get_data_rate(struct mwifiex_private *priv,
......
...@@ -133,6 +133,9 @@ mwifiex_sdio_remove(struct sdio_func *func) ...@@ -133,6 +133,9 @@ mwifiex_sdio_remove(struct sdio_func *func)
adapter->priv[i]->media_connected) adapter->priv[i]->media_connected)
mwifiex_deauthenticate(adapter->priv[i], NULL); mwifiex_deauthenticate(adapter->priv[i], NULL);
mwifiex_disable_auto_ds(mwifiex_get_priv(adapter,
MWIFIEX_BSS_ROLE_ANY));
mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter, mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter,
MWIFIEX_BSS_ROLE_ANY), MWIFIEX_BSS_ROLE_ANY),
MWIFIEX_FUNC_SHUTDOWN); MWIFIEX_FUNC_SHUTDOWN);
......
...@@ -486,6 +486,20 @@ int mwifiex_set_radio_band_cfg(struct mwifiex_private *priv, ...@@ -486,6 +486,20 @@ int mwifiex_set_radio_band_cfg(struct mwifiex_private *priv,
return 0; return 0;
} }
/*
* The function disables auto deep sleep mode.
*/
int mwifiex_disable_auto_ds(struct mwifiex_private *priv)
{
struct mwifiex_ds_auto_ds auto_ds;
auto_ds.auto_ds = DEEP_SLEEP_OFF;
return mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_PS_MODE_ENH,
DIS_AUTO_PS, BITMAP_AUTO_DS, &auto_ds);
}
EXPORT_SYMBOL_GPL(mwifiex_disable_auto_ds);
/* /*
* IOCTL request handler to set/get active channel. * IOCTL request handler to set/get active channel.
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment