diff options
author | 2020-12-09 13:24:22 +0000 | |
---|---|---|
committer | 2020-12-09 13:24:22 +0000 | |
commit | 86cf434e15b9d26ce9a6e9c0c903efaa86a9a72b (patch) | |
tree | 04975b1e62413a7d0c9c0b5409b55e8e74ba0787 | |
parent | Remove redundant TLB flush. All callers of pmap_pte_remove() were already (diff) | |
download | wireguard-openbsd-86cf434e15b9d26ce9a6e9c0c903efaa86a9a72b.tar.xz wireguard-openbsd-86cf434e15b9d26ce9a6e9c0c903efaa86a9a72b.zip |
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@
-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); } |