[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