On Sat, Dec 22, 2012 at 08:59:19PM +0100, Pontus Fuchs wrote: > I remember fixing a tricky bug here. When loosing BSS the driver can > in some case leave > priv->bss_loss_status to > CW1200_BSS_LOSS_NONE. > This blocks further processing of the BSS_LOST events from firmware > causing link loss detection to fail. > > The fix was to clean up bss_lost_status here before canceling > bss_loss_work and connection_loss_work: > > priv->delayed_link_loss = 0; > spin_lock(&priv->bss_loss_lock); > priv->bss_loss_status = CW1200_BSS_LOSS_NONE; > spin_unlock(&priv->bss_loss_lock); > > >+ cancel_delayed_work_sync(&priv->bss_loss_work); > >+ cancel_delayed_work_sync(&priv->connection_loss_work); > >+#endif /* CONFIG_CW1200_USE_STE_EXTENSIONS */ The code you're referencing is partially wrapped in STE_EXTENSIONS -- and most of that refers to stuff that wasn't ever part of mac80211. So I pulled the work cancellation out of the STE_EXTENSION wrapper and prepended that code you suggested. I'm finally done auditing and (mostly) purging all the STE_EXTENSIONS stuff, so I'll be submitting another patch series shortly that incorporates everything suggested so far. - Solomon -- Solomon Peachy pizza at shaftnet dot org Melbourne, FL ^^ (mail/jabber/gtalk) ^^ Quidquid latine dictum sit, altum viditur.
Attachment:
pgpdD8COl_wDz.pgp
Description: PGP signature