can: sja1000: Fix error location forwarding
According to SJA1000 documentation the location of error is available regardless of an error type. Therefore it should always be forwarded to SocketCAN. Signed-off-by: Nikita Edward Baruzdin <nebaruzdin@lvk.cs.msu.su> Signed-off-by: Alexander GQ Gerasiov <gq@cs.msu.su> Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
908578e7d5
commit
3e51a3356c
@ -438,6 +438,7 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
|
|||||||
|
|
||||||
cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
|
cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
|
||||||
|
|
||||||
|
/* set error type */
|
||||||
switch (ecc & ECC_MASK) {
|
switch (ecc & ECC_MASK) {
|
||||||
case ECC_BIT:
|
case ECC_BIT:
|
||||||
cf->data[2] |= CAN_ERR_PROT_BIT;
|
cf->data[2] |= CAN_ERR_PROT_BIT;
|
||||||
@ -449,9 +450,12 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)
|
|||||||
cf->data[2] |= CAN_ERR_PROT_STUFF;
|
cf->data[2] |= CAN_ERR_PROT_STUFF;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cf->data[3] = ecc & ECC_SEG;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set error location */
|
||||||
|
cf->data[3] = ecc & ECC_SEG;
|
||||||
|
|
||||||
/* Error occurred during transmission? */
|
/* Error occurred during transmission? */
|
||||||
if ((ecc & ECC_DIR) == 0)
|
if ((ecc & ECC_DIR) == 0)
|
||||||
cf->data[2] |= CAN_ERR_PROT_TX;
|
cf->data[2] |= CAN_ERR_PROT_TX;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user