Stefan Sperling <s...@stsp.name> wrote:

> This patch adds A-MSDU rx offloading support for both iwm(4) and iwx(4)
> and re-enables net80211's software A-MSDU Rx support for all 11n drivers.
> 
> Meaning iwn(4) and athn(4) will also be receiving A-MSDUs again.
> This feature has been turned off since July 2019:
> https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/net80211/ieee80211_input.c#rev1.207
> The root cause of the problem I saw at that time was related to dlg's Rx
> queue back-pressure mechanism. Once we figured this out, all wireless drivers
> were fixed to call if_input() only once per interrupt so this is no longer
> an issue.
> 
> For a very brief period we tried to enable A-MSDUs again in -current but
> we found out that iwm/iwx needed additional work for the new devices which
> received support while A-MSDU was disabled in-tree:
> https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/net80211/ieee80211_input.c#rev1.226
> The patch below completes the missing bits to make A-MSDUs work on these
> new devices.
> 
> My previous iwm-only patch and related test reports are here:
> https://marc.info/?t=161703907100001&r=1&w=2
> The iwm changes have already been extensively tested.
> For iwm, this new patch only adds an additional range check:
>     @@ -4640,7 +4640,8 @@ iwm_rx_reorder(struct iwm_softc *sc, struct mbuf 
> *m, i
>      
>       baid = (reorder_data & IWM_RX_MPDU_REORDER_BAID_MASK) >>
>               IWM_RX_MPDU_REORDER_BAID_SHIFT;
>     - if (baid == IWM_RX_REORDER_DATA_INVALID_BAID)
>     + if (baid == IWM_RX_REORDER_DATA_INVALID_BAID ||
>     +     baid >= nitems(sc->sc_rxba_data))
>               return 0;
>      
>       rxba = &sc->sc_rxba_data[baid];
> 
> 
> I have tested on the following devices:
> 
> iwm0 at pci2 dev 0 function 0 "Intel Dual Band Wireless-AC 8265" rev 0x78, msi
> iwm0: hw rev 0x230, fw ver 34.0.1, address 7c:11:xx:xx:xx:xx
> 
> iwx0 at pci5 dev 0 function 0 "Intel Wi-Fi 6 AX200" rev 0x1a, msix
> iwx0: hw rev 0x340, fw ver 48.1335886879.0, address d0:ab:xx:xx:xx:xx
> 
> iwx0 at pci0 dev 20 function 3 "Intel Wi-Fi 6 AX201" rev 0x00, msix
> iwx0: hw rev 0x350, fw ver 48.1335886879.0, address 0c:7a:xx:xx:xx:xx
> 
> ok?
> 

No regressions under normal use and a little bit of stress testing.

iwm0 at pci2 dev 0 function 0 "Intel AC 7265" rev 0x59, msi
iwm0: hw rev 0x210, fw ver 17.3216344376.0, address dc:53:xx:xx:xx:xx

Tim.

Reply via email to