mac80211: fix ieee80211_sta_tx_notify for nullfunc
authorWojciech Dubowik <Wojciech.Dubowik@neratec.com>
Thu, 14 Feb 2013 13:08:37 +0000 (14:08 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Feb 2013 08:41:09 +0000 (09:41 +0100)
Function ieee80211_sta_reset_conn_monitor has been
resetting probe_send_count too early and nullfunc
check was never called after succesfull ack.

Reported-by: Magnus Cederlöf <mcider@gmail.com>
Tested-by: Magnus Cederlöf <mcider@gmail.com>
Signed-off-by: Wojciech Dubowik <Wojciech.Dubowik@neratec.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 7d4cde7af98e558ada66e9e595fce9a1a2eb54cf..c156573ea3d0b1fcd6babdd5aa3176b37aa1bdbb 100644 (file)
@@ -1637,17 +1637,18 @@ void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata,
        if (!ieee80211_is_data(hdr->frame_control))
            return;
 
-       if (ack)
-               ieee80211_sta_reset_conn_monitor(sdata);
-
        if (ieee80211_is_nullfunc(hdr->frame_control) &&
            sdata->u.mgd.probe_send_count > 0) {
                if (ack)
-                       sdata->u.mgd.probe_send_count = 0;
+                       ieee80211_sta_reset_conn_monitor(sdata);
                else
                        sdata->u.mgd.nullfunc_failed = true;
                ieee80211_queue_work(&sdata->local->hw, &sdata->work);
+               return;
        }
+
+       if (ack)
+               ieee80211_sta_reset_conn_monitor(sdata);
 }
 
 static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata)