mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
can: c_can: Always update error stats
If the allocation of the error skb fails, we still want to see the error statistics. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Alexander Stein <alexander.stein@systec-electronic.com> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
097aec1968
commit
1da394d889
@ -378,6 +378,9 @@ static int c_can_handle_lost_msg_obj(struct net_device *dev,
|
||||
priv->write_reg(priv, C_CAN_IFACE(MSGCTRL_REG, iface), ctrl);
|
||||
c_can_object_put(dev, iface, objno, IF_COMM_CONTROL);
|
||||
|
||||
stats->rx_errors++;
|
||||
stats->rx_over_errors++;
|
||||
|
||||
/* create an error msg */
|
||||
skb = alloc_can_err_skb(dev, &frame);
|
||||
if (unlikely(!skb))
|
||||
@ -385,8 +388,6 @@ static int c_can_handle_lost_msg_obj(struct net_device *dev,
|
||||
|
||||
frame->can_id |= CAN_ERR_CRTL;
|
||||
frame->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
|
||||
stats->rx_errors++;
|
||||
stats->rx_over_errors++;
|
||||
|
||||
netif_receive_skb(skb);
|
||||
return 1;
|
||||
@ -996,6 +997,10 @@ static int c_can_handle_bus_err(struct net_device *dev,
|
||||
if (!(priv->can.ctrlmode & CAN_CTRLMODE_BERR_REPORTING))
|
||||
return 0;
|
||||
|
||||
/* common for all type of bus errors */
|
||||
priv->can.can_stats.bus_error++;
|
||||
stats->rx_errors++;
|
||||
|
||||
/* propagate the error condition to the CAN stack */
|
||||
skb = alloc_can_err_skb(dev, &cf);
|
||||
if (unlikely(!skb))
|
||||
@ -1005,10 +1010,6 @@ static int c_can_handle_bus_err(struct net_device *dev,
|
||||
* check for 'last error code' which tells us the
|
||||
* type of the last error to occur on the CAN bus
|
||||
*/
|
||||
|
||||
/* common for all type of bus errors */
|
||||
priv->can.can_stats.bus_error++;
|
||||
stats->rx_errors++;
|
||||
cf->can_id |= CAN_ERR_PROT | CAN_ERR_BUSERROR;
|
||||
cf->data[2] |= CAN_ERR_PROT_UNSPEC;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user