On Mon, Sep 8, 2008 at 11:58 AM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Mon, 2008-09-08 at 11:46 +0300, Tomas Winkler wrote: >> On Mon, Sep 8, 2008 at 11:38 AM, Johannes Berg >> <johannes@xxxxxxxxxxxxxxxx> wrote: >> > On Mon, 2008-09-08 at 02:14 +0300, Tomas Winkler wrote: >> > >> >> Shouldn't carrier_off(stada->dev) stop the queue? I haven't seen this >> >> before. >> > >> > The other question is whether we should be doing netif_carrier_off() at >> > all since that throws away frames from the queue and attaches a noop >> > qdisc. When we're roaming quickly between two APs, we don't necessarily >> > want that, but we don't actually know whether or not we'll be able to >> > get back to an AP quickly when we disassociate for whatever reason. >> > >> we should stop the wlan0 not the master device. Only data frames >> should be stopped. > > That's what we're doing of course, but should we really drop all the > frames that might still be in the queue? If we're just roaming we could > send them out via the next AP, but it's hard to know, and since it's > working let's not touch it for now. In current situation we are dropping the frames anyway. How do you know you are roaming and not moving to another network? > How exactly are you triggering that "unauthorized port" message? I can't > seem to reproduce to see if stopping the queue helps, but I'm fairly > sure, try the patch below that fixes this. Powering off AP, I think I've seen only Cisco AP that are able to send deauth packet on power off. So this was without. > johannes > > --- everything.orig/net/mac80211/mlme.c 2008-09-08 10:54:28.000000000 +0200 > +++ everything/net/mac80211/mlme.c 2008-09-08 10:57:30.000000000 +0200 > @@ -574,6 +574,7 @@ static void ieee80211_set_associated(str > sdata->bss_conf.assoc = 1; > ieee80211_bss_info_change_notify(sdata, changed); > > + netif_tx_start_all_queues(sdata->dev); > netif_carrier_on(sdata->dev); > > ieee80211_sta_send_apinfo(sdata, ifsta); > @@ -995,6 +996,7 @@ static void ieee80211_set_disassoc(struc > ifsta->assoc_scan_tries = 0; > ifsta->assoc_tries = 0; > > + netif_tx_stop_all_queues(sdata->dev); > netif_carrier_off(sdata->dev); > > ieee80211_sta_tear_down_BA_sessions(sdata, sta->addr); > @@ -3413,6 +3415,7 @@ static void ieee80211_sta_reset_auth(str > ifsta->direct_probe_tries = 0; > ifsta->auth_tries = 0; > ifsta->assoc_tries = 0; > + netif_tx_stop_all_queues(sdata->dev); > netif_carrier_off(sdata->dev); > } > Will be able to test only at night. Tomas > > > -- 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