| From 590eb2b7d8cfafb27e8108d52d4bf4850626d31d Mon Sep 17 00:00:00 2001 |
| From: Stephane Grosjean <s.grosjean@peak-system.com> |
| Date: Fri, 25 Jun 2021 15:09:29 +0200 |
| Subject: can: peak_usb: pcan_usb_handle_bus_evt(): fix reading rxerr/txerr values |
| |
| From: Stephane Grosjean <s.grosjean@peak-system.com> |
| |
| commit 590eb2b7d8cfafb27e8108d52d4bf4850626d31d upstream. |
| |
| This patch fixes an incorrect way of reading error counters in messages |
| received for this purpose from the PCAN-USB interface. These messages |
| inform about the increase or decrease of the error counters, whose values |
| are placed in bytes 1 and 2 of the message data (not 0 and 1). |
| |
| Fixes: ea8b33bde76c ("can: pcan_usb: add support of rxerr/txerr counters") |
| Link: https://lore.kernel.org/r/20210625130931.27438-4-s.grosjean@peak-system.com |
| Cc: linux-stable <stable@vger.kernel.org> |
| Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com> |
| Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/can/usb/peak_usb/pcan_usb.c | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/net/can/usb/peak_usb/pcan_usb.c |
| +++ b/drivers/net/can/usb/peak_usb/pcan_usb.c |
| @@ -117,7 +117,8 @@ MODULE_SUPPORTED_DEVICE("PEAK-System PCA |
| #define PCAN_USB_BERR_MASK (PCAN_USB_ERR_RXERR | PCAN_USB_ERR_TXERR) |
| |
| /* identify bus event packets with rx/tx error counters */ |
| -#define PCAN_USB_ERR_CNT 0x80 |
| +#define PCAN_USB_ERR_CNT_DEC 0x00 /* counters are decreasing */ |
| +#define PCAN_USB_ERR_CNT_INC 0x80 /* counters are increasing */ |
| |
| /* private to PCAN-USB adapter */ |
| struct pcan_usb { |
| @@ -611,11 +612,12 @@ static int pcan_usb_handle_bus_evt(struc |
| |
| /* acccording to the content of the packet */ |
| switch (ir) { |
| - case PCAN_USB_ERR_CNT: |
| + case PCAN_USB_ERR_CNT_DEC: |
| + case PCAN_USB_ERR_CNT_INC: |
| |
| /* save rx/tx error counters from in the device context */ |
| - pdev->bec.rxerr = mc->ptr[0]; |
| - pdev->bec.txerr = mc->ptr[1]; |
| + pdev->bec.rxerr = mc->ptr[1]; |
| + pdev->bec.txerr = mc->ptr[2]; |
| break; |
| |
| default: |