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: Xi Wang <xi.wang@gmail.com> Acked-by: Wolfgang Grandegger <wg@grandegger.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
e3f240f460
commit
44b0052c5c
@ -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)
|
|||||||
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;
|
||||||
|
Loading…
Reference in New Issue
Block a user