aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2019-07-15 20:53:08 +0200
committerMarc Kleine-Budde <mkl@pengutronix.de>2019-11-04 21:47:22 +0100
commitc4409e9fbea954fdae7927205283dfc3ed8e2d6e (patch)
tree0d0d2a6626a95e94f447fdc71d3e47aa9be65f3f /drivers/net/can
parentcan: flexcan: increase error counters if skb enqueueing via can_rx_offload_queue_sorted() fails (diff)
downloadlinux-dev-c4409e9fbea954fdae7927205283dfc3ed8e2d6e.tar.xz
linux-dev-c4409e9fbea954fdae7927205283dfc3ed8e2d6e.zip
can: ti_hecc: ti_hecc_error(): increase error counters if skb enqueueing via can_rx_offload_queue_sorted() fails
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>
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/ti_hecc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/can/ti_hecc.c b/drivers/net/can/ti_hecc.c
index f8b19eef5d26..91188e6d4f78 100644
--- a/drivers/net/can/ti_hecc.c
+++ b/drivers/net/can/ti_hecc.c
@@ -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;
}