Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e51a335 authored by Alexander Gerasiov's avatar Alexander Gerasiov Committed by Marc Kleine-Budde
Browse files

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: default avatarNikita Edward Baruzdin <nebaruzdin@lvk.cs.msu.su>
Signed-off-by: default avatarAlexander GQ Gerasiov <gq@cs.msu.su>
Acked-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 908578e7
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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;

		/* set error type */
		switch (ecc & ECC_MASK) {
		case ECC_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;
			break;
		default:
			cf->data[3] = ecc & ECC_SEG;
			break;
		}

		/* set error location */
		cf->data[3] = ecc & ECC_SEG;

		/* Error occurred during transmission? */
		if ((ecc & ECC_DIR) == 0)
			cf->data[2] |= CAN_ERR_PROT_TX;