On 01/09/2015 04:06 AM, Ahmed S. Darwish wrote: >>> >>> 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 |
signature.asc
Description: OpenPGP digital signature