git: 5c74aa3abd4e - main - rtwn: enable reception of BAR frames
Date: Wed, 23 Apr 2025 02:04:08 UTC
The branch main has been updated by adrian:
URL: https://cgit.FreeBSD.org/src/commit/?id=5c74aa3abd4e353ed7f8cb446c0527c8ebe15d1c
commit 5c74aa3abd4e353ed7f8cb446c0527c8ebe15d1c
Author: Jessica Clarke <jrtc27@freebsd.org>
AuthorDate: 2025-04-01 00:43:13 +0000
Commit: Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2025-04-23 02:02:39 +0000
rtwn: enable reception of BAR frames
The RX filter wasn't enabling BAR frames, so we weren't receiving them
during normal operation.
Jessica noticed we WERE getting BAR frames, but only when promisc mode
is active. Which is a different set of bugs, but it did highlight
the differences here.
Differential Revision: https://reviews.freebsd.org/D49596
PR: kern/285822
---
sys/dev/rtwn/if_rtwn.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sys/dev/rtwn/if_rtwn.c b/sys/dev/rtwn/if_rtwn.c
index 7df1b78db37b..7a547e13cafa 100644
--- a/sys/dev/rtwn/if_rtwn.c
+++ b/sys/dev/rtwn/if_rtwn.c
@@ -1203,6 +1203,9 @@ rtwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
/* Stop Rx of data frames. */
rtwn_write_2(sc, R92C_RXFLTMAP2, 0);
+ /* Stop Rx of control frames. */
+ rtwn_write_2(sc, R92C_RXFLTMAP1, 0);
+
/* Reset EDCA parameters. */
rtwn_write_4(sc, R92C_EDCA_VO_PARAM, 0x002f3217);
rtwn_write_4(sc, R92C_EDCA_VI_PARAM, 0x005e4317);
@@ -1374,6 +1377,11 @@ rtwn_run(struct rtwn_softc *sc, struct ieee80211vap *vap)
rtwn_write_2(sc, R92C_BCN_INTERVAL(uvp->id), ni->ni_intval);
if (sc->vaps_running == sc->monvaps_running) {
+ /* Enable Rx of BAR control frames. */
+ rtwn_write_2(sc, R92C_RXFLTMAP1,
+ 1 << (IEEE80211_FC0_SUBTYPE_BAR >>
+ IEEE80211_FC0_SUBTYPE_SHIFT));
+
/* Enable Rx of data frames. */
rtwn_write_2(sc, R92C_RXFLTMAP2, 0xffff);