From 3c91176cfebc0d6a580d88b1ae47062a3eba1ed2 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Thu, 29 Sep 2011 16:04:31 +0200 Subject: [PATCH] --- yaml --- r: 266521 b: refs/heads/master c: 8a8656fa5bbbc8568348d95184d374edb03a48b7 h: refs/heads/master i: 266519: 6a55de817e4e68f953368bf2e7649cb70830f7c0 v: v3 --- [refs] | 2 +- trunk/net/mac80211/status.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 9d43b9efb9c0..0c4e91957df6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b0b97a8ad5c4640785f9a1c8e979f1c0fba147e1 +refs/heads/master: 8a8656fa5bbbc8568348d95184d374edb03a48b7 diff --git a/trunk/net/mac80211/status.c b/trunk/net/mac80211/status.c index c06857bbd573..94475eb51d28 100644 --- a/trunk/net/mac80211/status.c +++ b/trunk/net/mac80211/status.c @@ -65,6 +65,16 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local, sta->tx_filtered_count++; + /* + * Clear more-data bit on filtered frames, it might be set + * but later frames might time out so it might have to be + * clear again ... It's all rather unlikely (this frame + * should time out first, right?) but let's not confuse + * peers unnecessarily. + */ + if (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) + hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_MOREDATA); + if (ieee80211_is_data_qos(hdr->frame_control)) { int tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK;