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) {
        .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,