[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241029-poised-augmented-binturong-1fde9f-mkl@pengutronix.de>
Date: Tue, 29 Oct 2024 09:49:22 +0100
From: Marc Kleine-Budde <mkl@...gutronix.de>
To: Dario Binacchi <dario.binacchi@...rulasolutions.com>
Cc: linux-kernel@...r.kernel.org, linux-amarula@...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>, Paolo Abeni <pabeni@...hat.com>,
Sabrina Dubroca <sd@...asysnail.net>, Shannon Nelson <shannon.nelson@....com>,
Simon Horman <horms@...nel.org>, Vincent Mailhol <mailhol.vincent@...adoo.fr>,
linux-can@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [RFC PATCH v2 1/6] can: dev: add generic function
can_update_bus_error_stats()
Hello Dario,
On 29.10.2024 09:44:45, Dario Binacchi wrote:
> The function aims to generalize the statistics update by centralizing
> the related code, thus avoiding code duplication.
>
> Signed-off-by: Dario Binacchi <dario.binacchi@...rulasolutions.com>
> ---
no proper review, just found that double assignment.
Marc
>
> (no changes since v1)
>
> drivers/net/can/dev/dev.c | 30 ++++++++++++++++++++++++++++++
> include/linux/can/dev.h | 1 +
> 2 files changed, 31 insertions(+)
>
> diff --git a/drivers/net/can/dev/dev.c b/drivers/net/can/dev/dev.c
> index 6792c14fd7eb..0a3b1aad405b 100644
> --- a/drivers/net/can/dev/dev.c
> +++ b/drivers/net/can/dev/dev.c
> @@ -16,6 +16,36 @@
> #include <linux/gpio/consumer.h>
> #include <linux/of.h>
>
> +void can_update_bus_error_stats(struct net_device *dev, struct can_frame *cf)
> +{
> + struct can_priv *priv = netdev_priv(dev);
^^^^^^^^^^^^^^^^
> + bool rx_errors = false, tx_errors = false;
> +
> + if (!cf || !(cf->can_id & (CAN_ERR_PROT | CAN_ERR_BUSERROR)))
> + return;
> +
> + priv = netdev_priv(dev);
^^^^^^^^^^^^^^^^
> + priv->can_stats.bus_error++;
> +
> + if ((cf->can_id & CAN_ERR_ACK) && cf->data[3] == CAN_ERR_PROT_LOC_ACK)
> + tx_errors = true;
> + else if (cf->data[2] & (CAN_ERR_PROT_BIT1 | CAN_ERR_PROT_BIT0))
> + tx_errors = true;
> +
> + if (cf->data[2] & (CAN_ERR_PROT_FORM | CAN_ERR_PROT_STUFF))
> + rx_errors = true;
> + else if ((cf->data[2] & CAN_ERR_PROT_BIT) &&
> + (cf->data[3] == CAN_ERR_PROT_LOC_CRC_SEQ))
> + rx_errors = true;
> +
> + if (rx_errors)
> + dev->stats.rx_errors++;
> +
> + if (tx_errors)
> + dev->stats.tx_errors++;
> +}
> +EXPORT_SYMBOL_GPL(can_update_bus_error_stats);
> +
> static void can_update_state_error_stats(struct net_device *dev,
> enum can_state new_state)
> {
> diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h
> index 23492213ea35..0977656b366d 100644
> --- a/include/linux/can/dev.h
> +++ b/include/linux/can/dev.h
> @@ -201,6 +201,7 @@ void can_state_get_by_berr_counter(const struct net_device *dev,
> enum can_state *rx_state);
> void can_change_state(struct net_device *dev, struct can_frame *cf,
> enum can_state tx_state, enum can_state rx_state);
> +void can_update_bus_error_stats(struct net_device *dev, struct can_frame *cf);
>
> #ifdef CONFIG_OF
> void of_can_transceiver(struct net_device *dev);
> --
> 2.43.0
>
>
--
Pengutronix e.K. | Marc Kleine-Budde |
Embedded Linux | https://www.pengutronix.de |
Vertretung Nürnberg | Phone: +49-5121-206917-129 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
Download attachment "signature.asc" of type "application/pgp-signature" (489 bytes)
Powered by blists - more mailing lists