netdev_err(dev, "Message RAM access failure occurred\n");
 }
 
-static inline bool is_lec_err(u32 psr)
+static inline bool is_lec_err(u8 lec)
 {
-       psr &= LEC_UNUSED;
-
-       return psr && (psr != LEC_UNUSED);
+       return lec != LEC_NO_ERROR && lec != LEC_NO_CHANGE;
 }
 
 static inline bool m_can_is_protocol_err(u32 irqstatus)
                work_done += m_can_handle_lost_msg(dev);
 
        /* handle lec errors on the bus */
-       if ((cdev->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) &&
-           is_lec_err(psr))
-               work_done += m_can_handle_lec_err(dev, psr & LEC_UNUSED);
+       if (cdev->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) {
+               u8 lec = FIELD_GET(PSR_LEC_MASK, psr);
+
+               if (is_lec_err(lec))
+                       work_done += m_can_handle_lec_err(dev, lec);
+       }
 
        /* handle protocol errors in arbitration phase */
        if ((cdev->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING) &&