[PATCH] libertas sdio: fix suspend when interface is down
Dan Williams
dcbw at redhat.com
Tue Sep 4 10:15:52 EDT 2012
On Mon, 2012-09-03 at 15:49 -0400, Daniel Drake wrote:
> 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 at laptop.org>
Acked-by: Dan Williams <dcbw at redhat.com>
> ---
> drivers/net/wireless/libertas/if_sdio.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/net/wireless/libertas/if_sdio.c b/drivers/net/wireless/libertas/if_sdio.c
> index e970897..4cb2343 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);
>
More information about the libertas-dev
mailing list