| From 0c5b93290b2f3c7a376567c03ae8d385b0e99851 Mon Sep 17 00:00:00 2001 |
| From: Felix Fietkau <nbd@openwrt.org> |
| Date: Sun, 29 Sep 2013 21:39:34 +0200 |
| Subject: mac80211: update sta->last_rx on acked tx frames |
| |
| From: Felix Fietkau <nbd@openwrt.org> |
| |
| commit 0c5b93290b2f3c7a376567c03ae8d385b0e99851 upstream. |
| |
| When clients are idle for too long, hostapd sends nullfunc frames for |
| probing. When those are acked by the client, the idle time needs to be |
| updated. |
| |
| To make this work (and to avoid unnecessary probing), update sta->last_rx |
| whenever an ACK was received for a tx packet. Only do this if the flag |
| IEEE80211_HW_REPORTS_TX_ACK_STATUS is set. |
| |
| Signed-off-by: Felix Fietkau <nbd@openwrt.org> |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| net/mac80211/status.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/net/mac80211/status.c |
| +++ b/net/mac80211/status.c |
| @@ -183,6 +183,9 @@ static void ieee80211_frame_acked(struct |
| struct ieee80211_local *local = sta->local; |
| struct ieee80211_sub_if_data *sdata = sta->sdata; |
| |
| + if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) |
| + sta->last_rx = jiffies; |
| + |
| if (ieee80211_is_data_qos(mgmt->frame_control)) { |
| struct ieee80211_hdr *hdr = (void *) skb->data; |
| u8 *qc = ieee80211_get_qos_ctl(hdr); |