In the driver for the esd CAN-USB/2 the CAN RX and TX error counters
were fetched interchanged from the ESD_EV_CAN_ERROR_EXT message and
therefore delivered wrong to the user.
To verify the now correct behavior call the candump tool to print CAN
error frames with extra infos (including CAN RX and TX error counters)
like "candump -e -x can4,0:0,#fffffffff".
Then send a CAN frame to the open (no other node) but terminated CAN
bus. The TX error counter must increase by 8 for each transmit attempt
until CAN_STATE_ERROR_PASSIVE is reached.
Stefan Mätje (1):
can: usb: esd_usb2: Fix the interchange of the CAN RX and TX error
counters.
drivers/net/can/usb/esd_usb2.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
base-commit: cbe8cd7d83e251bff134a57ea4b6378db992ad82
--
2.25.1
This patch fixes the interchanged fetch of the CAN RX and TX error counters
from the ESD_EV_CAN_ERROR_EXT message. The RX error counter is really in
struct rx_msg::data[2] and the TX error counter is in struct rx_msg::data[3].
Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu>
---
drivers/net/can/usb/esd_usb2.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c
index 7370981e9b34..c6068a251fbe 100644
--- a/drivers/net/can/usb/esd_usb2.c
+++ b/drivers/net/can/usb/esd_usb2.c
@@ -224,8 +224,8 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv,
if (id == ESD_EV_CAN_ERROR_EXT) {
u8 state = msg->msg.rx.data[0];
u8 ecc = msg->msg.rx.data[1];
- u8 txerr = msg->msg.rx.data[2];
- u8 rxerr = msg->msg.rx.data[3];
+ u8 rxerr = msg->msg.rx.data[2];
+ u8 txerr = msg->msg.rx.data[3];
skb = alloc_can_err_skb(priv->netdev, &cf);
if (skb == NULL) {--
2.25.1
On 25.08.2021 23:52:26, Stefan Mätje wrote:
In the driver for the esd CAN-USB/2 the CAN RX and TX error counters
were fetched interchanged from the ESD_EV_CAN_ERROR_EXT message and
therefore delivered wrong to the user.
To verify the now correct behavior call the candump tool to print CAN
error frames with extra infos (including CAN RX and TX error counters)
like "candump -e -x can4,0:0,#fffffffff".
Then send a CAN frame to the open (no other node) but terminated CAN
bus. The TX error counter must increase by 8 for each transmit attempt
until CAN_STATE_ERROR_PASSIVE is reached.
Stefan Mätje (1):
can: usb: esd_usb2: Fix the interchange of the CAN RX and TX error
counters.
drivers/net/can/usb/esd_usb2.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Applied to linux-can/testing.
Thanks,
Marc
base-commit: cbe8cd7d83e251bff134a57ea4b6378db992ad82
BTW: Thanks for including a base-commit. Your base is
linux-can-next-for-5.15-20210825, but this is a bug-fix patch. It should
be based on the latest can pull request, can/master or net/master
instead. It doesn't matter here, as the patch applies without problems.
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung West/Dortmund | Phone: +49-231-2826-924 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |