summaryrefslogtreecommitdiff
path: root/sys/net80211/ieee80211_input.c
diff options
context:
space:
mode:
authortobhe <tobhe@cvs.openbsd.org>2020-12-09 13:24:23 +0000
committertobhe <tobhe@cvs.openbsd.org>2020-12-09 13:24:23 +0000
commit8eaf050b723afd66c70d73513e093751816e5336 (patch)
tree926af93b81583d26c2569e10d134bf453321011c /sys/net80211/ieee80211_input.c
parent2072a16b6566580bc65b0c49039757c8cf5076e3 (diff)
Flush reorder buffer after gap timeout, otherwise the frames remain
in the buffer until the next frame is received. Found by and fix from Christian Ehrhardt ok stsp@
Diffstat (limited to 'sys/net80211/ieee80211_input.c')
-rw-r--r--sys/net80211/ieee80211_input.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
index 81f054a70d7..96250c8036b 100644
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee80211_input.c,v 1.224 2020/12/08 20:17:32 stsp Exp $ */
+/* $OpenBSD: ieee80211_input.c,v 1.225 2020/12/09 13:24:22 tobhe Exp $ */
/*-
* Copyright (c) 2001 Atsushi Onoe
@@ -959,6 +959,11 @@ ieee80211_input_ba_gap_timeout(void *arg)
skipped = ieee80211_input_ba_gap_skip(ba);
ic->ic_stats.is_ht_rx_ba_frame_lost += skipped;
+ if (skipped) {
+ struct mbuf_list ml = MBUF_LIST_INITIALIZER();
+ ieee80211_input_ba_flush(ic, ni, ba, &ml);
+ if_input(&ic->ic_if, &ml);
+ }
splx(s);
}