6eb9f206a6
When investigating performance on UDP TX on the AR9380 I found that the following sequence was occuring: * INTR * EINPROGRESS - nothing yet * INTR * TXSTATUS - process a TX completion for an aggregate * INTR, INTR * TXSTATUS - process a TX completion for an aggregate * TXD, TXD ... populate frames from the hardware queue and submit What should be happening is a completed TXSTATUS fires off more packets that are queued on active TIDs. What /was/ happening was after that first TXSTATUS the TX queue hardware queue was still empty, so it didn't push anything into the FIFO. Only after the second TXSTATUS did any progress get made. This is one of two commits - it ensures that the software TX queue scheduler is called /after/ TX completion, otherwise no frames from the software staging queues will be processed into the hardware queues. The second commit will fix it so it populates aggregate frames correctly when the above occurs - right now ath_txq_sched() is called, but it doesn't populate anything because its pre-check conditions are wrong. Whilst here, add/tweak debugging. Tested: * AR9380 STA (testing device) -> AR9580 hostap |
||
---|---|---|
.. | ||
ath_dfs/null | ||
ath_hal | ||
ath_rate | ||
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_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_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 |