On 01/09/2015 04:06 AM, Ahmed S. Darwish wrote:
quoted
quoted
cf->can_id |= CAN_ERR_CRTL;
cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
stats->rx_over_errors++;
stats->rx_errors++;
netif_rx(skb);
stats->rx_packets++;
stats->rx_bytes += cf->can_dlc;
Another patch would be not to touch cf after netif_rx(), please
move the stats handling before calling netif_rx(). Same applies to
the kvaser_usb_rx_can_msg() function.
BTW, is it guaranteed from the SocketCAN stack that netif_rx()
netif_rx() is the generic networking stack already.
will never return NET_RX_DROPPED? Because if no guarantee
exists, I guess below fragment cannot be completely correct?
No, it's not guaranteed...
stats->rx_packets++;
stats->rx_bytes += cf->can_dlc;
netif_rx(skb);
On the other hand, I don't see evan a single CAN driver checking
netif_rx() return value, so maybe such a check is an overkill...
A quick look shows that almost no ethernet or wireless drivers take care
about the return value. In case of a RX_DROPPED some increase a drop
counter, though.
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |