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

Commit 8ce261d0 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Marc Kleine-Budde
Browse files

can: flexcan: handle state passive -> warning transition



Once the CAN-bus is open and a packet is sent, the controller switches
into the PASSIVE state. Once the BUS is closed again it goes the back
err-warning. The TX error counter goes 0 -> 0x80 -> 0x7f.
This patch makes sure that the user learns about this state chang
(CAN_STATE_ERROR_WARNING => CAN_STATE_ERROR_PASSIVE)

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: default avatarMatthias Klein <matthias.klein@optimeas.de>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent bc03a541
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -549,6 +549,13 @@ static void do_state(struct net_device *dev,

	/* process state changes depending on the new state */
	switch (new_state) {
	case CAN_STATE_ERROR_WARNING:
		netdev_dbg(dev, "Error Warning\n");
		cf->can_id |= CAN_ERR_CRTL;
		cf->data[1] = (bec.txerr > bec.rxerr) ?
			CAN_ERR_CRTL_TX_WARNING :
			CAN_ERR_CRTL_RX_WARNING;
		break;
	case CAN_STATE_ERROR_ACTIVE:
		netdev_dbg(dev, "Error Active\n");
		cf->can_id |= CAN_ERR_PROT;