@@ -483,15 +483,16 @@ static void handle_core_msg_rxtxdone(struct acc_core *core,
can_frame_set_cc_len(cf, msg->dlc.rx.len & ACC_CAN_DLC_MASK,
priv->can.ctrlmode);
- if (msg->dlc.rx.len & ACC_CAN_RTR_FLAG)
+ if (msg->dlc.rx.len & ACC_CAN_RTR_FLAG) {
cf->can_id |= CAN_RTR_FLAG;
- else
+ } else {
memcpy(cf->data, msg->data, cf->len);
+ stats->rx_bytes += cf->len;
+ }
+ stats->rx_packets++;
skb_hwtstamps(skb)->hwtstamp = acc_ts2ktime(priv->ov, msg->ts);
- stats->rx_packets++;
- stats->rx_bytes += cf->len;
netif_rx(skb);
}
}
The actual payload length of the CAN Remote Transmission Request (RTR) frames is always 0, i.e. nothing is transmitted on the wire. However, those RTR frames still use the DLC to indicate the length of the requested frame. As such, net_device_stats:rx_bytes should not be increased for the RTR frames. This patch brings the esd_402_pci driver in line with the other CAN drivers which have been changed after a suggestion of Vincent Mailhol. Suggested-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Signed-off-by: Stefan Mätje <stefan.maetje@esd.eu> --- drivers/net/can/esd/esdacc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)