freebsd-nq/sys/dev/ath
Adrian Chadd c50346bcf5 ath: bump the default node queue size to 128 frames, not 64
It turns out that, silly adrian, setting it to 64 means only two
AMPDU frames of 32 subframes each.  Thus, whilst those are in-flight,
any subsequent queues frames to that node get dropped.

This ends up being pretty no bueno for performance if any receive
is also going on at that point.

Instead, set it to 128 for the time being to ensure that SOME
frames get queued in the meantime.  This results in some frames
being immediately available in the software queue for transmit
when the two existing A-MPDU frames have been completely sent,
rather than the queue remaining empty until at least one is sent.

It's not the best solution - I still think I'm scheduling receive
far more often than giving time to schedule transmit work -
but at least now I'm not starving the transmit side.

Before this, a bidirectional iperf would show receive at ~ 150mbit/sec.
but the transmit side at like 10kbit/sec.  With it set to 128 it's
now 150mbit/sec receive, and ~ 10mbit receive.  It's better than 10kbit/sec,
but still not as far as I'd like it to be.

Tested:

* AR9380/QCA934x (TL-WDR4300 AP), Macbook pro test STA + AR9380 test STA
2021-05-22 21:23:00 -07:00
..
ath_dfs/null
ath_hal
ath_rate
ah_osdep_ar5210.c
ah_osdep_ar5211.c
ah_osdep_ar5212.c
ah_osdep_ar5416.c
ah_osdep_ar9300.c
ah_osdep.c
ah_osdep.h
if_ath_ahb.c
if_ath_alq.c
if_ath_alq.h
if_ath_beacon.c
if_ath_beacon.h
if_ath_btcoex_mci.c
if_ath_btcoex_mci.h
if_ath_btcoex.c
if_ath_btcoex.h
if_ath_debug.c
if_ath_debug.h
if_ath_descdma.c
if_ath_descdma.h
if_ath_dfs.c
if_ath_drv.c
if_ath_ioctl.c
if_ath_ioctl.h
if_ath_keycache.c
if_ath_keycache.h
if_ath_led.c
if_ath_led.h
if_ath_lna_div.c
if_ath_lna_div.h
if_ath_misc.h
if_ath_pci_devlist.h
if_ath_pci.c
if_ath_rate.c
if_ath_rx_edma.c
if_ath_rx_edma.h
if_ath_rx.c
if_ath_rx.h
if_ath_spectral.c
if_ath_spectral.h
if_ath_sysctl.c
if_ath_sysctl.h
if_ath_tdma.c
if_ath_tdma.h
if_ath_tsf.h
if_ath_tx_edma.c
if_ath_tx_edma.h
if_ath_tx_ht.c
if_ath_tx_ht.h
if_ath_tx.c
if_ath_tx.h
if_ath.c
if_athdfs.h
if_athioctl.h
if_athrate.h
if_athvar.h