Commit 118469f8 authored by Frank Jungclaus's avatar Frank Jungclaus Committed by Marc Kleine-Budde

can: esd_usb: Move mislocated storage of SJA1000_ECC_SEG bits in case of a bus error

Move the supply for cf->data[3] (bit stream position of CAN error), in
case of a bus- or protocol-error, outside of the "switch (ecc &
SJA1000_ECC_MASK){}"-statement, because this bit stream position is
independent of the error type.

Fixes: 96d8e903 ("can: Add driver for esd CAN-USB/2 device")
Signed-off-by: default avatarFrank Jungclaus <frank.jungclaus@esd.eu>
Link: https://lore.kernel.org/all/20230216190450.3901254-2-frank.jungclaus@esd.euSigned-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 470ac62d
...@@ -286,7 +286,6 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv, ...@@ -286,7 +286,6 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
cf->data[2] |= CAN_ERR_PROT_STUFF; cf->data[2] |= CAN_ERR_PROT_STUFF;
break; break;
default: default:
cf->data[3] = ecc & SJA1000_ECC_SEG;
break; break;
} }
...@@ -294,6 +293,9 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv, ...@@ -294,6 +293,9 @@ static void esd_usb_rx_event(struct esd_usb_net_priv *priv,
if (!(ecc & SJA1000_ECC_DIR)) if (!(ecc & SJA1000_ECC_DIR))
cf->data[2] |= CAN_ERR_PROT_TX; cf->data[2] |= CAN_ERR_PROT_TX;
/* Bit stream position in CAN frame as the error was detected */
cf->data[3] = ecc & SJA1000_ECC_SEG;
if (priv->can.state == CAN_STATE_ERROR_WARNING || if (priv->can.state == CAN_STATE_ERROR_WARNING ||
priv->can.state == CAN_STATE_ERROR_PASSIVE) { priv->can.state == CAN_STATE_ERROR_PASSIVE) {
cf->data[1] = (txerr > rxerr) ? cf->data[1] = (txerr > rxerr) ?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment