Commit 1de65a5e authored by Claudiu Manoil's avatar Claudiu Manoil Committed by David S. Miller

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: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 15bf176d
...@@ -3462,11 +3462,9 @@ static irqreturn_t gfar_error(int irq, void *grp_id) ...@@ -3462,11 +3462,9 @@ static irqreturn_t gfar_error(int irq, void *grp_id)
netif_dbg(priv, tx_err, dev, "Transmit Error\n"); netif_dbg(priv, tx_err, dev, "Transmit Error\n");
} }
if (events & IEVENT_BSY) { if (events & IEVENT_BSY) {
dev->stats.rx_errors++; dev->stats.rx_over_errors++;
atomic64_inc(&priv->extra_stats.rx_bsy); atomic64_inc(&priv->extra_stats.rx_bsy);
gfar_receive(irq, grp_id);
netif_dbg(priv, rx_err, dev, "busy error (rstat: %x)\n", netif_dbg(priv, rx_err, dev, "busy error (rstat: %x)\n",
gfar_read(&regs->rstat)); gfar_read(&regs->rstat));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment