Message ID | 20120903194909.A878DFAA0A@dev.laptop.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
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@laptop.org> Acked-by: Dan Williams <dcbw@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); > -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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);
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> --- drivers/net/wireless/libertas/if_sdio.c | 5 +++++ 1 file changed, 5 insertions(+)