@@ -336,16 +336,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++;
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Change-Id: I8d8974ae8502086cf43ffeea70964f4fb34d3e6c --- drivers/net/can/dev/dev.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-)