gianfar: Fix Rx BSY error handling
The Rx BSY error interrupt indicates that a frame was received and discarded due to lack of buffers, so it's a rx ring overflow condition and has nothing to do with with bad rx packets. Use the right counter. BSY conditions happen when the SoC is under performance stress. Doing *more* work in stress situations by trying to schedule NAPI is not a good idea as the stressed system becomes still more stressed. The Rx interrupt is already at work making sure the NAPI is scheduled. So calling gfar_receive() here does not help. This issue was present since day 1. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
15bf176db1
commit
1de65a5ea3
@ -3462,11 +3462,9 @@ static irqreturn_t gfar_error(int irq, void *grp_id)
|
||||
netif_dbg(priv, tx_err, dev, "Transmit Error\n");
|
||||
}
|
||||
if (events & IEVENT_BSY) {
|
||||
dev->stats.rx_errors++;
|
||||
dev->stats.rx_over_errors++;
|
||||
atomic64_inc(&priv->extra_stats.rx_bsy);
|
||||
|
||||
gfar_receive(irq, grp_id);
|
||||
|
||||
netif_dbg(priv, rx_err, dev, "busy error (rstat: %x)\n",
|
||||
gfar_read(®s->rstat));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user