diff options
Diffstat (limited to 'drivers/net/can/rcar_can.c')
-rw-r--r-- | drivers/net/can/rcar_can.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/net/can/rcar_can.c b/drivers/net/can/rcar_can.c index 7bd54191f962..bc46be39549d 100644 --- a/drivers/net/can/rcar_can.c +++ b/drivers/net/can/rcar_can.c | |||
@@ -241,17 +241,16 @@ static void rcar_can_error(struct net_device *ndev) | |||
241 | u8 ecsr; | 241 | u8 ecsr; |
242 | 242 | ||
243 | netdev_dbg(priv->ndev, "Bus error interrupt:\n"); | 243 | netdev_dbg(priv->ndev, "Bus error interrupt:\n"); |
244 | if (skb) { | 244 | if (skb) |
245 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; | 245 | cf->can_id |= CAN_ERR_BUSERROR | CAN_ERR_PROT; |
246 | cf->data[2] = CAN_ERR_PROT_UNSPEC; | 246 | |
247 | } | ||
248 | ecsr = readb(&priv->regs->ecsr); | 247 | ecsr = readb(&priv->regs->ecsr); |
249 | if (ecsr & RCAR_CAN_ECSR_ADEF) { | 248 | if (ecsr & RCAR_CAN_ECSR_ADEF) { |
250 | netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); | 249 | netdev_dbg(priv->ndev, "ACK Delimiter Error\n"); |
251 | tx_errors++; | 250 | tx_errors++; |
252 | writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); | 251 | writeb(~RCAR_CAN_ECSR_ADEF, &priv->regs->ecsr); |
253 | if (skb) | 252 | if (skb) |
254 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK_DEL; | 253 | cf->data[3] = CAN_ERR_PROT_LOC_ACK_DEL; |
255 | } | 254 | } |
256 | if (ecsr & RCAR_CAN_ECSR_BE0F) { | 255 | if (ecsr & RCAR_CAN_ECSR_BE0F) { |
257 | netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); | 256 | netdev_dbg(priv->ndev, "Bit Error (dominant)\n"); |
@@ -272,7 +271,7 @@ static void rcar_can_error(struct net_device *ndev) | |||
272 | rx_errors++; | 271 | rx_errors++; |
273 | writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); | 272 | writeb(~RCAR_CAN_ECSR_CEF, &priv->regs->ecsr); |
274 | if (skb) | 273 | if (skb) |
275 | cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ; | 274 | cf->data[3] = CAN_ERR_PROT_LOC_CRC_SEQ; |
276 | } | 275 | } |
277 | if (ecsr & RCAR_CAN_ECSR_AEF) { | 276 | if (ecsr & RCAR_CAN_ECSR_AEF) { |
278 | netdev_dbg(priv->ndev, "ACK Error\n"); | 277 | netdev_dbg(priv->ndev, "ACK Error\n"); |
@@ -280,7 +279,7 @@ static void rcar_can_error(struct net_device *ndev) | |||
280 | writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); | 279 | writeb(~RCAR_CAN_ECSR_AEF, &priv->regs->ecsr); |
281 | if (skb) { | 280 | if (skb) { |
282 | cf->can_id |= CAN_ERR_ACK; | 281 | cf->can_id |= CAN_ERR_ACK; |
283 | cf->data[3] |= CAN_ERR_PROT_LOC_ACK; | 282 | cf->data[3] = CAN_ERR_PROT_LOC_ACK; |
284 | } | 283 | } |
285 | } | 284 | } |
286 | if (ecsr & RCAR_CAN_ECSR_FEF) { | 285 | if (ecsr & RCAR_CAN_ECSR_FEF) { |