[OpenWrt-Devel] [PATCH] ar71xx: check for stuck DMA on AR724x & fix sirq storm after recovery

Conn O'Griofa connogriofa at gmail.com
Fri Jan 8 18:34:13 EST 2016

On 08/01/16 19:17, Conn O'Griofa wrote:

> * In ag71xx_hw_enable, netif_start_queue is issued. Since this function is used for the fast restart, that should probably be changed to netif_wake_queue so that the kernel will check for anything pending in the queue to be sent (which is certain to be true). I'll check this as soon as it's possible.

This change wasn't sufficient to fix the problem. After examining your changes a bit further, there's an issue: your ag71xx_hw_disable function calls ag71xx_hw_stop, but the complement function ag71xx_hw_enable doesn't call ag71xx_hw_start. Since you're trying to avoid a link adjust, the ag71xx_hw_start function never gets called during recovery with your patch.

I tried replacing netif_start_queue(dev) with ag71xx_hw_start(ag) in ag71xx_hw_enable. With this change, when the DMA stuck issue occurs, there's no longer any tx timeouts logged, but the interface stops responding. Perhaps it's also necessary to call ag71xx_fast_reset (which only gets called during a link adjust)?

openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list