[PATCH wireless-next 1/2] wifi: b43: reprogram the MAC filter after an interface restart

Alessio Ferri alessio.ferri at mythread.it
Tue Oct 27 12:25:48 PDT 2026


Il giorno Tue, 27 Oct 2026 20:21:51 +0100
Alessio Ferri <alessio.ferri at mythread.it> ha scritto:

> Il giorno Wed, 14 Oct 2026 16:32:24 +0200
> Andreas Wendleder <gonsolo at gmail.com> ha scritto:
> 
> > b43_op_start() clears wl->filter_flags, but mac80211 computes
> > @changed for b43_op_configure_filter() against the flags it cached
> > from the previous run. After a down/up it can report no change, so
> > b43_adjust_opmode() is not called and MACCTL keeps the cleared
> > filter.
> > 
> > Compare the requested flags with what the hardware was programmed
> > with and add the difference to @changed.
> > 
> > Signed-off-by: Andreas Wendleder <gonsolo at gmail.com>
> > ---
> >  drivers/net/wireless/broadcom/b43/main.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/drivers/net/wireless/broadcom/b43/main.c
> > b/drivers/net/wireless/broadcom/b43/main.c index 8f4aff3..57a5935
> > 100644 --- a/drivers/net/wireless/broadcom/b43/main.c
> > +++ b/drivers/net/wireless/broadcom/b43/main.c
> > @@ -4318,6 +4318,14 @@ static void b43_op_configure_filter(struct
> > ieee80211_hw *hw, FIF_OTHER_BSS |
> >  		   FIF_BCN_PRBRESP_PROMISC;
> >  
> > +	/*
> > +	 * b43_op_start() zeroes wl->filter_flags, but mac80211
> > computes
> > +	 * @changed against its own cached flags, so after an
> > interface
> > +	 * restart it reports no change and MACCTL kept the zeroed
> > filter.
> > +	 * Compare against what the hardware was actually
> > programmed with.
> > +	 */
> > +	if (wl->filter_flags != *fflags)
> > +		changed |= wl->filter_flags ^ *fflags;
> >  	wl->filter_flags = *fflags;
> >  
> >  	if (changed && b43_status(dev) >= B43_STAT_INITIALIZED)  
> 
> Tested on DSL 3580L, with 4352 chip on 5Ghz, the chip transmit and no
> dma error arise. Without the patch the dma engine report an error on
> the descriptor. Earlier in June i wrongly asserted that the DMA on AC
> chips was needing 64 Kb segments, it was a wrong conclusion: going
> 64kb did stop the error, but for the wrong reason.
> 
> Tested-by: Alessio Ferri <alessio.ferri at mythread.it>
> 
> _______________________________________________
> b43-dev mailing list
> b43-dev at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/b43-dev

Ops, i meant to send it for PATCH 2/2, sorry to all

Sorry again
Alessio



More information about the b43-dev mailing list