diff options
author | Daniel Drake <dsd@laptop.org> | 2012-09-03 15:49:09 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-09-05 14:53:36 -0400 |
commit | f10723841e624c0726c70356b31d91befed01dd6 (patch) | |
tree | 07a8b8b5d035aa239fd020acd4966bac81594c97 | |
parent | efd5d6b03bd9c9e0df646c56fb5f4f3e25e5c1ac (diff) |
libertas sdio: fix suspend when interface is downmaster-2012-09-05
When the interface is down, the hardware is powered off.
However, the suspend handler currently tries to send host sleep commands
(when wakeup params are set) in this configuration, causing a system hang
when going into suspend (the commands will never complete).
Avoid this by detecting this situation and simply returning from
the suspend handler without doing anything special.
Signed-off-by: Daniel Drake <dsd@laptop.org>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/libertas/if_sdio.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c index e970897f6ab5..4cb234349fbf 100644 --- a/drivers/net/wireless/libertas/if_sdio.c +++ b/drivers/net/wireless/libertas/if_sdio.c @@ -1326,6 +1326,11 @@ static int if_sdio_suspend(struct device *dev) mmc_pm_flag_t flags = sdio_get_host_pm_caps(func); + /* If we're powered off anyway, just let the mmc layer remove the + * card. */ + if (!lbs_iface_active(card->priv)) + return -ENOSYS; + dev_info(dev, "%s: suspend: PM flags = 0x%x\n", sdio_func_id(func), flags); |