at91_can: RX queue could get stuck at high bus load
Subsystems (2)
PATCH 1/1 at91_can: RX queue could get stuck at high bus load
At high bus load it could happen that "at91_poll()" enters with all RX message boxes filled up. If then at the end the "quota" is exceeded as well, "rx_next" will not be reset to the first RX mailbox and hence the interrupts remain disabled.
Signed-off-by Wolfgang Grandegger <[email protected]>
Tested-by Amr Bekhit <[email protected]>
--- drivers/net/can/at91_can.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/can/at91_can.c +3 -2
@@ -712,9 +712,10 @@ static int at91_poll_rx(struct net_device *dev, int quota)/* upper group completed, look again in lower */ if (priv->rx_next >get_mb_rx_low_last (priv) && - quota >0 && mb >get_mb_rx_last (priv)) { + mb >get_mb_rx_last (priv)) { priv->rx_next =get_mb_rx_first (priv); - goto again; +if (quota >0 ) + goto again; }return received;
Signature · 1 line
1.9.1
Quoted 7 lines · Wolfgang Grandegger
At high bus load it could happen that "
at91_poll()" enters with all RX message boxes filled up. If then at the end the "quota" is exceeded as well, "rx_next" will not be reset to the first RX mailbox and hence the interrupts remain disabled.Signed-off-by Wolfgang Grandegger <[email protected]>Tested-by Amr Bekhit <[email protected]>
Applied to can/master + stable on Cc.
tnx,
Marc
Signature · 4 lines
Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |