Skip to content

Commit

Permalink
can: f81604: f81604_handle_can_bus_errors(): fix {rx,tx}_errors stati…
Browse files Browse the repository at this point in the history
…stics

[ Upstream commit d7b9165 ]

The f81604_handle_can_bus_errors() function only incremented the receive
error counter and never the transmit error counter, even if the ECC_DIR
flag reported that an error had occurred during transmission.

Increment the receive/transmit error counter based on the value of the
ECC_DIR flag.

Fixes: 88da174 ("can: usb: f81604: add Fintek F81604 support")
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Link: https://patch.msgid.link/20241122221650.633981-13-dario.binacchi@amarulasolutions.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
passgat authored and gregkh committed Dec 14, 2024
1 parent 51251ed commit 02b10fd
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/net/can/usb/f81604.c
Original file line number Diff line number Diff line change
Expand Up @@ -526,7 +526,6 @@ static void f81604_handle_can_bus_errors(struct f81604_port_priv *priv,
netdev_dbg(netdev, "bus error interrupt\n");

priv->can.can_stats.bus_error++;
stats->rx_errors++;

if (skb) {
cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
Expand All @@ -548,10 +547,15 @@ static void f81604_handle_can_bus_errors(struct f81604_port_priv *priv,

/* set error location */
cf->data[3] = data->ecc & F81604_SJA1000_ECC_SEG;
}

/* Error occurred during transmission? */
if ((data->ecc & F81604_SJA1000_ECC_DIR) == 0)
/* Error occurred during transmission? */
if ((data->ecc & F81604_SJA1000_ECC_DIR) == 0) {
stats->tx_errors++;
if (skb)
cf->data[2] |= CAN_ERR_PROT_TX;
} else {
stats->rx_errors++;
}

set_bit(F81604_CLEAR_ECC, &priv->clear_flags);
Expand Down

0 comments on commit 02b10fd

Please sign in to comment.