can: ti_hecc: ti_hecc_error(): increase error counters if skb enqueueing via can_rx_o...
authorMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 15 Jul 2019 18:53:08 +0000 (20:53 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 4 Nov 2019 20:47:22 +0000 (21:47 +0100)
The call to can_rx_offload_queue_sorted() may fail and return an error
(in the current implementation due to resource shortage). The passed skb
is consumed.

This patch adds incrementing of the appropriate error counters to let
the device statistics reflect that there's a problem.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/ti_hecc.c

index f8b19eef5d26868f6132b2d465af7de18136dfdc..91188e6d4f789864020c4e1a31eebe5c7fc69cb9 100644 (file)
@@ -558,6 +558,7 @@ static int ti_hecc_error(struct net_device *ndev, int int_status,
        struct can_frame *cf;
        struct sk_buff *skb;
        u32 timestamp;
+       int err;
 
        /* propagate the error condition to the can stack */
        skb = alloc_can_err_skb(ndev, &cf);
@@ -639,7 +640,9 @@ static int ti_hecc_error(struct net_device *ndev, int int_status,
        }
 
        timestamp = hecc_read(priv, HECC_CANLNT);
-       can_rx_offload_queue_sorted(&priv->offload, skb, timestamp);
+       err = can_rx_offload_queue_sorted(&priv->offload, skb, timestamp);
+       if (err)
+               ndev->stats.rx_fifo_errors++;
 
        return 0;
 }