git: 5c74aa3abd4e - main - rtwn: enable reception of BAR frames

From: Adrian Chadd <adrian_at_FreeBSD.org>
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);