[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20241029114622.2989827-7-dario.binacchi@amarulasolutions.com>
Date: Tue, 29 Oct 2024 12:45:30 +0100
From: Dario Binacchi <dario.binacchi@...rulasolutions.com>
To: linux-kernel@...r.kernel.org
Cc: linux-amarula@...rulasolutions.com,
Dario Binacchi <dario.binacchi@...rulasolutions.com>,
Andrew Lunn <andrew+netdev@...n.ch>,
"David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Gal Pressman <gal@...dia.com>,
Jakub Kicinski <kuba@...nel.org>,
Kory Maincent <kory.maincent@...tlin.com>,
Marc Kleine-Budde <mkl@...gutronix.de>,
Paolo Abeni <pabeni@...hat.com>,
Rahul Rameshbabu <rrameshbabu@...dia.com>,
Shannon Nelson <shannon.nelson@....com>,
Vincent Mailhol <mailhol.vincent@...adoo.fr>,
linux-can@...r.kernel.org,
netdev@...r.kernel.org
Subject: [RFC PATCH v3 6/6] can: dev: update the error types stats (ack, CRC, form, ...)
The patch modifies can_update_bus_error_stats() by also updating the
counters related to the types of CAN errors.
Signed-off-by: Dario Binacchi <dario.binacchi@...rulasolutions.com>
---
(no changes since v1)
drivers/net/can/dev/dev.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c
index 4ad0698b0a74..ed2bdc6fe4a1 100644
--- a/drivers/net/can/dev/dev.c
+++ b/drivers/net/can/dev/dev.c
@@ -27,16 +27,31 @@ void can_update_bus_error_stats(struct net_device *dev, struct can_frame *cf)
priv = netdev_priv(dev);
priv->can_stats.bus_error++;
- if ((cf->can_id & CAN_ERR_ACK) && cf->data[3] == CAN_ERR_PROT_LOC_ACK)
+ if ((cf->can_id & CAN_ERR_ACK) && cf->data[3] == CAN_ERR_PROT_LOC_ACK) {
+ priv->can_stats.ack_error++;
tx_errors = true;
- else if (cf->data[2] & (CAN_ERR_PROT_BIT1 | CAN_ERR_PROT_BIT0))
+ }
+
+ if (cf->data[2] & (CAN_ERR_PROT_BIT1 | CAN_ERR_PROT_BIT0)) {
+ priv->can_stats.bit_error++;
tx_errors = true;
+ }
- if (cf->data[2] & (CAN_ERR_PROT_FORM | CAN_ERR_PROT_STUFF))
+ if (cf->data[2] & CAN_ERR_PROT_FORM) {
+ priv->can_stats.form_error++;
rx_errors = true;
- else if ((cf->data[2] & CAN_ERR_PROT_BIT) &&
- (cf->data[3] == CAN_ERR_PROT_LOC_CRC_SEQ))
+ }
+
+ if (cf->data[2] & CAN_ERR_PROT_STUFF) {
+ priv->can_stats.stuff_error++;
rx_errors = true;
+ }
+
+ if ((cf->data[2] & CAN_ERR_PROT_BIT) &&
+ cf->data[3] == CAN_ERR_PROT_LOC_CRC_SEQ) {
+ priv->can_stats.crc_error++;
+ rx_errors = true;
+ }
if (rx_errors)
dev->stats.rx_errors++;
--
2.43.0
Powered by blists - more mailing lists