aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAmitkumar Karwar <akarwar@marvell.com>2011-07-13 23:51:59 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-07-21 14:52:04 -0400
commita0490936007bacf5bf6f4fb27788550c89c2c70d (patch)
tree1d24768db0a6e98336bf0b344d5a3a28b87d0b33 /drivers
parentdf3b124bdb6fe2459625443bd3dc0dbd020932da (diff)
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: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/mwifiex/ioctl.h1
-rw-r--r--drivers/net/wireless/mwifiex/main.h1
-rw-r--r--drivers/net/wireless/mwifiex/sdio.c3
-rw-r--r--drivers/net/wireless/mwifiex/sta_ioctl.c14
4 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/ioctl.h b/drivers/net/wireless/mwifiex/ioctl.h
index 7c1c5ee40eb9..f6bcc868562f 100644
--- a/drivers/net/wireless/mwifiex/ioctl.h
+++ b/drivers/net/wireless/mwifiex/ioctl.h
@@ -249,6 +249,7 @@ struct mwifiex_ds_hs_cfg {
249}; 249};
250 250
251#define DEEP_SLEEP_ON 1 251#define DEEP_SLEEP_ON 1
252#define DEEP_SLEEP_OFF 0
252#define DEEP_SLEEP_IDLE_TIME 100 253#define DEEP_SLEEP_IDLE_TIME 100
253#define PS_MODE_AUTO 1 254#define PS_MODE_AUTO 1
254 255
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
index 03691c02a6e8..2215c3c97354 100644
--- a/drivers/net/wireless/mwifiex/main.h
+++ b/drivers/net/wireless/mwifiex/main.h
@@ -929,6 +929,7 @@ int mwifiex_set_hs_params(struct mwifiex_private *priv,
929 struct mwifiex_ds_hs_cfg *hscfg); 929 struct mwifiex_ds_hs_cfg *hscfg);
930int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type); 930int mwifiex_cancel_hs(struct mwifiex_private *priv, int cmd_type);
931int mwifiex_enable_hs(struct mwifiex_adapter *adapter); 931int mwifiex_enable_hs(struct mwifiex_adapter *adapter);
932int mwifiex_disable_auto_ds(struct mwifiex_private *priv);
932int mwifiex_get_signal_info(struct mwifiex_private *priv, 933int mwifiex_get_signal_info(struct mwifiex_private *priv,
933 struct mwifiex_ds_get_signal *signal); 934 struct mwifiex_ds_get_signal *signal);
934int mwifiex_drv_get_data_rate(struct mwifiex_private *priv, 935int mwifiex_drv_get_data_rate(struct mwifiex_private *priv,
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
index f7105a97e847..82098ac483b8 100644
--- a/drivers/net/wireless/mwifiex/sdio.c
+++ b/drivers/net/wireless/mwifiex/sdio.c
@@ -133,6 +133,9 @@ mwifiex_sdio_remove(struct sdio_func *func)
133 adapter->priv[i]->media_connected) 133 adapter->priv[i]->media_connected)
134 mwifiex_deauthenticate(adapter->priv[i], NULL); 134 mwifiex_deauthenticate(adapter->priv[i], NULL);
135 135
136 mwifiex_disable_auto_ds(mwifiex_get_priv(adapter,
137 MWIFIEX_BSS_ROLE_ANY));
138
136 mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter, 139 mwifiex_init_shutdown_fw(mwifiex_get_priv(adapter,
137 MWIFIEX_BSS_ROLE_ANY), 140 MWIFIEX_BSS_ROLE_ANY),
138 MWIFIEX_FUNC_SHUTDOWN); 141 MWIFIEX_FUNC_SHUTDOWN);
diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c b/drivers/net/wireless/mwifiex/sta_ioctl.c
index d05907d05039..c34ff8c4f4f8 100644
--- a/drivers/net/wireless/mwifiex/sta_ioctl.c
+++ b/drivers/net/wireless/mwifiex/sta_ioctl.c
@@ -487,6 +487,20 @@ int mwifiex_set_radio_band_cfg(struct mwifiex_private *priv,
487} 487}
488 488
489/* 489/*
490 * The function disables auto deep sleep mode.
491 */
492int mwifiex_disable_auto_ds(struct mwifiex_private *priv)
493{
494 struct mwifiex_ds_auto_ds auto_ds;
495
496 auto_ds.auto_ds = DEEP_SLEEP_OFF;
497
498 return mwifiex_send_cmd_sync(priv, HostCmd_CMD_802_11_PS_MODE_ENH,
499 DIS_AUTO_PS, BITMAP_AUTO_DS, &auto_ds);
500}
501EXPORT_SYMBOL_GPL(mwifiex_disable_auto_ds);
502
503/*
490 * IOCTL request handler to set/get active channel. 504 * IOCTL request handler to set/get active channel.
491 * 505 *
492 * This function performs validity checking on channel/frequency 506 * This function performs validity checking on channel/frequency