• Senthil Balasubramanian's avatar
    ath9k: Fix TX hang issue with Atheros chipsets · 164ace38
    Senthil Balasubramanian authored
    The hardware doesn't generate interrupts in some cases and so work
    around this by monitoring the TX status periodically and reset the
    chip if required.
    
    This behavior of the hardware not generating the TX interrupts can
    be noticed through ath9k debugfs interrupt statistics when heavy
    traffic is being sent from STA to AP. One can easily see this behavior
    when the STA is transmitting at a higher rates. The interrupt statistics
    in the debugfs interface clearly shows that only RX interrupts alone
    being generated and TX being stuck.
    
    TX should be monitored through a timer and reset the chip only when
    frames are queued to the hardware but TX interrupts are not generated
    for the same even after one second. Also, we shouldn't remove holding
    descriptor from AC queue if it happens to be the only descriptor and
    schedule TX aggregation regarless of queue depth as it improves
    scheduling of AMPDUs from software to hardware queue.
    Signed-off-by: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
    Signed-off-by: default avatarSenthil Balasubramanian <senthilkumar@atheros.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    164ace38
main.c 71.6 KB