[PATCH] staging: brcm80211: FIX for bug that prevents system from entering suspend state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The attempt to enter to suspend mode can be hindered when the network
interface is disabled.

When system enters the suspend mode with the network interface
disabled, network layer calls ifdown() followed by cfg80211 layer
calling wl_cfg80211_suspend() which is registered as suspend handler
for cfg80211 layer.

ifdown() call ultimately funnels down to __wl_cfg80211_down() call
where WL_STATUS_READY bit is cleared via call to
"clear_bit(WL_STATUS_READY, &wl->status)"

But CHECK_SYS_UP()checks WL_STATUS_READY bit thinking it's not ready
and returns -EIO from suspend handler which intern prevents entering
into system suspend state

CHECK_SYS_UP() is mainly used in the code path where upper layer would
request certain wifi related activity to be performed by the firmware,
where this calls helps to make sure our firmware would be in ready
state to respond to those requests

But in the case of wl_cfg80211_suspend() code path there is no need to
check for firmware status for any reason

Signed-off-by: Dowan Kim <dowan@xxxxxxxxxxxx>
---
 drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c |    2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
index 991463f..74bf81e 100644
--- a/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
+++ b/drivers/staging/brcm80211/brcmfmac/wl_cfg80211.c
@@ -1980,8 +1980,6 @@ static s32 wl_cfg80211_suspend(struct wiphy *wiphy)
 	struct net_device *ndev = wl_to_ndev(wl);
 	s32 err = 0;
 
-	CHECK_SYS_UP();
-
 	set_bit(WL_STATUS_SCAN_ABORTING, &wl->status);
 	wl_term_iscan(wl);
 	if (wl->scan_request) {
-- 
1.7.1




_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux