Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Alexander Gerasiov and committed by
Marc Kleine-Budde
3e51a335 908578e7

+5 -1
+5 -1
drivers/net/can/sja1000/sja1000.c
··· 438 438 439 439 cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR; 440 440 441 + /* set error type */ 441 442 switch (ecc & ECC_MASK) { 442 443 case ECC_BIT: 443 444 cf->data[2] |= CAN_ERR_PROT_BIT; ··· 450 449 cf->data[2] |= CAN_ERR_PROT_STUFF; 451 450 break; 452 451 default: 453 - cf->data[3] = ecc & ECC_SEG; 454 452 break; 455 453 } 454 + 455 + /* set error location */ 456 + cf->data[3] = ecc & ECC_SEG; 457 + 456 458 /* Error occurred during transmission? */ 457 459 if ((ecc & ECC_DIR) == 0) 458 460 cf->data[2] |= CAN_ERR_PROT_TX;