On Fri, 2010-10-01 at 16:33 -0400, Luis R. Rodriguez wrote: > @@ -936,7 +936,6 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, > > memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); > > - ifmgd->associated = NULL; > memset(ifmgd->bssid, 0, ETH_ALEN); > > /* You need to read this comment and the one below it :-) > @@ -513,6 +513,19 @@ ieee80211_associate(struct ieee80211_work *wk) > { > struct ieee80211_sub_if_data *sdata = wk->sdata; > struct ieee80211_local *local = sdata->local; > + struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; > + bool associated; > + > + mutex_lock(&ifmgd->mtx); > + associated = !!ifmgd->associated; > + mutex_unlock(&ifmgd->mtx); > + > + if (associated) { > + printk(KERN_DEBUG "%s: delaying association with %pM as " > + "we are still associated", > + sdata->name, wk->filter_ta); > + goto wait; > + } > > wk->assoc.tries++; > if (wk->assoc.tries > IEEE80211_ASSOC_MAX_TRIES) { > @@ -534,6 +547,7 @@ ieee80211_associate(struct ieee80211_work *wk) > sdata->name, wk->filter_ta, wk->assoc.tries); > ieee80211_send_assoc(sdata, wk); > > +wait: > wk->timeout = jiffies + IEEE80211_ASSOC_TIMEOUT; > run_again(local, wk->timeout); But you'll be staying off-channel for the wait period, so what does this really help? johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html