Commit c2d095ef authored by Jeroen Hofstee's avatar Jeroen Hofstee Committed by Marc Kleine-Budde

can: sun4i_can: sun4i_can_err(): don't count arbitration lose as an error

Losing arbitration is normal in a CAN-bus network, it means that a higher
priority frame is being send and the pending message will be retried later.
Hence most driver only increment arbitration_lost, but the sun4i driver also
incremeants tx_error, causing errors to be reported on a normal functioning
CAN-bus. So stop counting them as errors.

Fixes: 0738eff1 ("can: Allwinner A10/A20 CAN Controller support - Kernel module")
Signed-off-by: default avatarJeroen Hofstee <jhofstee@victronenergy.com>
Link: https://lore.kernel.org/r/20201127095941.21609-1-jhofstee@victronenergy.com
[mkl: split into two seperate patches]
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent bd0ccb92
...@@ -604,7 +604,6 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status) ...@@ -604,7 +604,6 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status)
netdev_dbg(dev, "arbitration lost interrupt\n"); netdev_dbg(dev, "arbitration lost interrupt\n");
alc = readl(priv->base + SUN4I_REG_STA_ADDR); alc = readl(priv->base + SUN4I_REG_STA_ADDR);
priv->can.can_stats.arbitration_lost++; priv->can.can_stats.arbitration_lost++;
stats->tx_errors++;
if (likely(skb)) { if (likely(skb)) {
cf->can_id |= CAN_ERR_LOSTARB; cf->can_id |= CAN_ERR_LOSTARB;
cf->data[0] = (alc >> 8) & 0x1f; cf->data[0] = (alc >> 8) & 0x1f;
......
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