Commit 44b0052c authored by Xi Wang's avatar Xi Wang Committed by Marc Kleine-Budde

can: pch_can: fix error passive level test

The test (((errc & PCH_REC) >> 8) > 127) would always be false because
the receive error counter ((errc & PCH_REC) >> 8) is at most 127, where
PCH_REC is defined as 0x7f00.  To test whether the receive error counter
has reached the error passive level, the RP bit (15) should be used.
Signed-off-by: default avatarXi Wang <xi.wang@gmail.com>
Acked-by: default avatarWolfgang Grandegger <wg@grandegger.com>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent e3f240f4
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
#define PCH_IF_CREQ_BUSY BIT(15) #define PCH_IF_CREQ_BUSY BIT(15)
#define PCH_STATUS_INT 0x8000 #define PCH_STATUS_INT 0x8000
#define PCH_RP 0x00008000
#define PCH_REC 0x00007f00 #define PCH_REC 0x00007f00
#define PCH_TEC 0x000000ff #define PCH_TEC 0x000000ff
...@@ -527,7 +528,7 @@ static void pch_can_error(struct net_device *ndev, u32 status) ...@@ -527,7 +528,7 @@ static void pch_can_error(struct net_device *ndev, u32 status)
priv->can.can_stats.error_passive++; priv->can.can_stats.error_passive++;
state = CAN_STATE_ERROR_PASSIVE; state = CAN_STATE_ERROR_PASSIVE;
cf->can_id |= CAN_ERR_CRTL; cf->can_id |= CAN_ERR_CRTL;
if (((errc & PCH_REC) >> 8) > 127) if (errc & PCH_RP)
cf->data[1] |= CAN_ERR_CRTL_RX_PASSIVE; cf->data[1] |= CAN_ERR_CRTL_RX_PASSIVE;
if ((errc & PCH_TEC) > 127) if ((errc & PCH_TEC) > 127)
cf->data[1] |= CAN_ERR_CRTL_TX_PASSIVE; cf->data[1] |= CAN_ERR_CRTL_TX_PASSIVE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment