can: peak_usb: always ask for BERR reporting for PCAN-USB devices
authorStephane Grosjean <s.grosjean@peak-system.com>
Thu, 21 Oct 2021 08:15:04 +0000 (10:15 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Sat, 6 Nov 2021 16:33:44 +0000 (17:33 +0100)
Since for the PCAN-USB, the management of the transition to the
ERROR_WARNING or ERROR_PASSIVE state is done according to the error
counters, these must be requested unconditionally.

Link: https://lore.kernel.org/all/20211021081505.18223-2-s.grosjean@peak-system.com
Fixes: c11dcee75830 ("can: peak_usb: pcan_usb_decode_error(): upgrade handling of bus state changes")
Cc: stable@vger.kernel.org
Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/usb/peak_usb/pcan_usb.c

index 837b3fe..af8d3da 100644 (file)
@@ -841,14 +841,14 @@ static int pcan_usb_start(struct peak_usb_device *dev)
        pdev->bec.rxerr = 0;
        pdev->bec.txerr = 0;
 
-       /* be notified on error counter changes (if requested by user) */
-       if (dev->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) {
-               err = pcan_usb_set_err_frame(dev, PCAN_USB_BERR_MASK);
-               if (err)
-                       netdev_warn(dev->netdev,
-                                   "Asking for BERR reporting error %u\n",
-                                   err);
-       }
+       /* always ask the device for BERR reporting, to be able to switch from
+        * WARNING to PASSIVE state
+        */
+       err = pcan_usb_set_err_frame(dev, PCAN_USB_BERR_MASK);
+       if (err)
+               netdev_warn(dev->netdev,
+                           "Asking for BERR reporting error %u\n",
+                           err);
 
        /* if revision greater than 3, can put silent mode on/off */
        if (dev->device_rev > 3) {
@@ -986,7 +986,6 @@ const struct peak_usb_adapter pcan_usb = {
        .device_id = PCAN_USB_PRODUCT_ID,
        .ctrl_count = 1,
        .ctrlmode_supported = CAN_CTRLMODE_3_SAMPLES | CAN_CTRLMODE_LISTENONLY |
-                             CAN_CTRLMODE_BERR_REPORTING |
                              CAN_CTRLMODE_CC_LEN8_DLC,
        .clock = {
                .freq = PCAN_USB_CRYSTAL_HZ / 2,