summaryrefslogtreecommitdiffstats
path: root/drivers/net/can/pch_can.c
diff options
context:
space:
mode:
authorXi Wang <xi.wang@gmail.com>2011-12-12 08:16:20 +0100
committerMarc Kleine-Budde <mkl@pengutronix.de>2012-02-03 00:25:22 +0100
commit44b0052c5cb4e75389ed3eb9e98c29295a7dadfb (patch)
tree6ad88cbbf1b75e65f98220e449b62ac1acb387d1 /drivers/net/can/pch_can.c
parentcan: ti_hecc: use netif_rx in the interrupt (diff)
downloadlinux-44b0052c5cb4e75389ed3eb9e98c29295a7dadfb.tar.xz
linux-44b0052c5cb4e75389ed3eb9e98c29295a7dadfb.zip
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>
Diffstat (limited to 'drivers/net/can/pch_can.c')
-rw-r--r--drivers/net/can/pch_can.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
index d11fbb2b95ff..6edc25e0dd15 100644
--- a/drivers/net/can/pch_can.c
+++ b/drivers/net/can/pch_can.c
@@ -66,6 +66,7 @@
#define PCH_IF_CREQ_BUSY BIT(15)
#define PCH_STATUS_INT 0x8000
+#define PCH_RP 0x00008000
#define PCH_REC 0x00007f00
#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++;
state = CAN_STATE_ERROR_PASSIVE;
cf->can_id |= CAN_ERR_CRTL;
- if (((errc & PCH_REC) >> 8) > 127)
+ if (errc & PCH_RP)
cf->data[1] |= CAN_ERR_CRTL_RX_PASSIVE;
if ((errc & PCH_TEC) > 127)
cf->data[1] |= CAN_ERR_CRTL_TX_PASSIVE;