mwifiex: enhance power save for USB and PCIe chipsets
authorAmitkumar Karwar <akarwar@marvell.com>
Thu, 21 Jun 2012 02:58:37 +0000 (19:58 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 22 Jun 2012 18:44:04 +0000 (14:44 -0400)
FW will not explicitly notify about host sleep activation to the
host for USB and PCIe chipsets. Hence host should generate Host
Sleep Activated event as soon as Host Sleep parameters are
configured to FW successfully.

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>
drivers/net/wireless/mwifiex/cmdevt.c

index 51e023ec1de4e634638575fc561206cd481fdbd7..ea37b887a874ddf892e48ed3746de24b0c1dcb1a 100644 (file)
@@ -1102,7 +1102,8 @@ int mwifiex_ret_802_11_hs_cfg(struct mwifiex_private *priv,
                &resp->params.opt_hs_cfg;
        uint32_t conditions = le32_to_cpu(phs_cfg->params.hs_config.conditions);
 
-       if (phs_cfg->action == cpu_to_le16(HS_ACTIVATE)) {
+       if (phs_cfg->action == cpu_to_le16(HS_ACTIVATE) &&
+           adapter->iface_type == MWIFIEX_SDIO) {
                mwifiex_hs_activated_event(priv, true);
                return 0;
        } else {
@@ -1114,6 +1115,9 @@ int mwifiex_ret_802_11_hs_cfg(struct mwifiex_private *priv,
        }
        if (conditions != HOST_SLEEP_CFG_CANCEL) {
                adapter->is_hs_configured = true;
+               if (adapter->iface_type == MWIFIEX_USB ||
+                   adapter->iface_type == MWIFIEX_PCIE)
+                       mwifiex_hs_activated_event(priv, true);
        } else {
                adapter->is_hs_configured = false;
                if (adapter->hs_activated)