On Mon, Oct 04, 2010 at 06:14:40AM -0700, Johannes Berg wrote: > 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 :-) Missed that.. thanks. > > @@ -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? I totally missed this what locks us offchannel here, I though we just re-arm the timer, and come back offchannel at a later time. What is it that locks us offchannel until the timer runs again? Luis -- 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