A couple of issues here, I think. On Fri, Nov 19, 2010 at 5:54 PM, Felix Fietkau <nbd@xxxxxxxxxxx> wrote: > --- a/net/mac80211/mlme.c > +++ b/net/mac80211/mlme.c [...] > +void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata, > + struct ieee80211_hdr *hdr) > +{ > + if (!ieee80211_is_data(hdr->frame_control) && > + !ieee80211_is_nullfunc(hdr->frame_control)) > + return; > + > + ieee80211_sta_reset_conn_monitor(sdata); > + > + if (ieee80211_is_nullfunc(hdr->frame_control)) { Could you also add a "&& sdata->u.mgd.probe_send_count = 0" condition here, or the BEACON/CONNECTION poll test to reduce the number of times we queue work here? Or should this work be done on every ACKed nullfunc? > + sdata->u.mgd.probe_send_count = 0; > + ieee80211_queue_work(&sdata->local->hw, &sdata->work); > + } > +} > + > static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata) > { > struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; > @@ -1882,6 +1916,10 @@ void ieee80211_sta_work(struct ieee80211_sub_if_data *sdata) > ifmgd->associated) { > u8 bssid[ETH_ALEN]; > > + /* ACK received for nullfunc probing frame */ > + if (!ifmgd->probe_send_count) > + ieee80211_reset_ap_probe(sdata); > + Yeah, but then it looks like we'd end up falling through to the "ifmgd->probe_send_count < IEEE80211_MAX_PROBE_TRIES" case later in this block, and send another probe! Not good. > memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); > if (time_is_after_jiffies(ifmgd->probe_timeout)) > run_again(ifmgd, ifmgd->probe_timeout); -- Paul -- 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