mwifiex: avoid waking up device in awake state
authorAvinash Patil <patila@marvell.com>
Sat, 23 Mar 2013 04:49:06 +0000 (21:49 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 27 Mar 2013 17:37:32 +0000 (13:37 -0400)
We have received interrupt from device means FW is not sleeping.
In this case make sure wakeup handler for PCIe is not invoked by
setting adapter->pm_wakeup_fw_try to false.

Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/pcie.c

index e62cd8a188980b75d95a38aeb29e131bc114024c..ed1bca7af84a5c72a9ed56614a2bc327d7cd850d 100644 (file)
@@ -1983,12 +1983,13 @@ static void mwifiex_interrupt_status(struct mwifiex_adapter *adapter)
                                }
                        }
                } else if (!adapter->pps_uapsd_mode &&
-                          adapter->ps_state == PS_STATE_SLEEP) {
+                          adapter->ps_state == PS_STATE_SLEEP &&
+                          mwifiex_pcie_ok_to_access_hw(adapter)) {
                                /* Potentially for PCIe we could get other
                                 * interrupts like shared. Don't change power
                                 * state until cookie is set */
-                               if (mwifiex_pcie_ok_to_access_hw(adapter))
-                                       adapter->ps_state = PS_STATE_AWAKE;
+                               adapter->ps_state = PS_STATE_AWAKE;
+                               adapter->pm_wakeup_fw_try = false;
                }
        }
 }