From: Ilias Apalodimas <ilias.apalodi...@linaro.org> Date: Fri, 14 Dec 2018 10:59:00 +0200
> Running pktgen with packets sizes > 512b ends up in the interface Txq > getting stuck. > "netsec 522d0000.ethernet eth0: netsec_netdev_start_xmit: TxQFull!" > appears on dmesg but the interface never recovers. It requires an > ifconfig down/up to make the interface usable again. > > The reason that triggers this, is a race condition between > .ndo_start_xmit and the napi completion. The available budget is > calculated first and indicates the queue is full. Due to a costly > netif_err() the queue is not stopped in time while the napi completion > runs, clears the irq and frees up descriptors, thus the queue never wakes > up again. > > Fix this by moving the print after stopping the queue, make the print > ratelimited, add barriers and check for cleaned descriptors.. > > Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> Applied.