diff options
author | tobhe <tobhe@cvs.openbsd.org> | 2020-12-09 13:24:23 +0000 |
---|---|---|
committer | tobhe <tobhe@cvs.openbsd.org> | 2020-12-09 13:24:23 +0000 |
commit | 8eaf050b723afd66c70d73513e093751816e5336 (patch) | |
tree | 926af93b81583d26c2569e10d134bf453321011c /sys/net80211/ieee80211_input.c | |
parent | 2072a16b6566580bc65b0c49039757c8cf5076e3 (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.c | 7 |
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); } |