diff options
author | Wojciech Dubowik <Wojciech.Dubowik@neratec.com> | 2013-02-14 08:08:37 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-02-15 03:41:09 -0500 |
commit | cab1c7fd8024ce896119535b5b067224b0b699aa (patch) | |
tree | b8441c37a85b4cc6e8fbfa1fa51fd44cd7fdf67a /net/mac80211/mlme.c | |
parent | 39886b618aba3c39e650c191d601e26ec581ce0f (diff) |
mac80211: fix ieee80211_sta_tx_notify for nullfunc
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>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 7d4cde7af98e..c156573ea3d0 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1637,17 +1637,18 @@ void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata, | |||
1637 | if (!ieee80211_is_data(hdr->frame_control)) | 1637 | if (!ieee80211_is_data(hdr->frame_control)) |
1638 | return; | 1638 | return; |
1639 | 1639 | ||
1640 | if (ack) | ||
1641 | ieee80211_sta_reset_conn_monitor(sdata); | ||
1642 | |||
1643 | if (ieee80211_is_nullfunc(hdr->frame_control) && | 1640 | if (ieee80211_is_nullfunc(hdr->frame_control) && |
1644 | sdata->u.mgd.probe_send_count > 0) { | 1641 | sdata->u.mgd.probe_send_count > 0) { |
1645 | if (ack) | 1642 | if (ack) |
1646 | sdata->u.mgd.probe_send_count = 0; | 1643 | ieee80211_sta_reset_conn_monitor(sdata); |
1647 | else | 1644 | else |
1648 | sdata->u.mgd.nullfunc_failed = true; | 1645 | sdata->u.mgd.nullfunc_failed = true; |
1649 | ieee80211_queue_work(&sdata->local->hw, &sdata->work); | 1646 | ieee80211_queue_work(&sdata->local->hw, &sdata->work); |
1647 | return; | ||
1650 | } | 1648 | } |
1649 | |||
1650 | if (ack) | ||
1651 | ieee80211_sta_reset_conn_monitor(sdata); | ||
1651 | } | 1652 | } |
1652 | 1653 | ||
1653 | static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata) | 1654 | static void ieee80211_mgd_probe_ap_send(struct ieee80211_sub_if_data *sdata) |