Skip to content

Commit

Permalink
can: m_can: is_lec_err(): clean up LEC error handling
Browse files Browse the repository at this point in the history
The PSR register contains among other the error for the CAN
arbitration phase (LEC bits) and CAN data phase (DLEC bits).

Prepare is_lec_err() to be called with the (D)LEC value only instead
of the whole PSR register. While there rename LEC_UNUSED to
LEC_NO_CHANGE to match the latest M_CAN reference manual.

Link: https://lore.kernel.org/all/20221019211611.1605764-1-mkl@pengutronix.de
Reviewed-by: Chandrasekar Ramakrishnan <rcsekar@samsung.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
  • Loading branch information
Marc Kleine-Budde committed Oct 20, 2022
1 parent 26117d9 commit 6a8836e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
15 changes: 8 additions & 7 deletions drivers/net/can/m_can/m_can.c
Original file line number Diff line number Diff line change
Expand Up @@ -816,11 +816,9 @@ static void m_can_handle_other_err(struct net_device *dev, u32 irqstatus)
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)
Expand Down Expand Up @@ -875,9 +873,12 @@ static int m_can_handle_bus_errors(struct net_device *dev, 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) &&
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/can/m_can/m_can.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ enum m_can_lec_type {
LEC_BIT1_ERROR,
LEC_BIT0_ERROR,
LEC_CRC_ERROR,
LEC_UNUSED,
LEC_NO_CHANGE,
};

enum m_can_mram_cfg {
Expand Down

0 comments on commit 6a8836e

Please sign in to comment.