Hi,

I have been debugging a case of random loss of certain CAN frames at the RX end,
when I use the c_can driver.

I use a fairly simple setup:
        ~ For TX, I use a vector CANAnalyzer tool (which can generate CAN frames
         with high bus load) 
        ~ At RX end I use my board which has a bosch c_can core and use the
        `candump` application to dump all the frames arriving on the CAN 
interface.
        ~ For testing I compare the sent frames with the frames received by 
candump.

I driver is available in david miller's net-next here: 
http://git.kernel.org/?p=linux/kernel/git/davem/net-next-2.6.git;a=tree;f=drivers/net/can/c_can;h=3237fb1a163258cc364b366976119090d94ea27d;hb=HEAD
and is written by me.

I am wondering whether this random loss can be due to NAPI, as I remember a
case while designing a Ethernet driver that the NAPI implementation will
mitigate the RX interrupt load but sometimes some frames would be dropped
at the RX end and would never reach the stack.

In such a case the design we usually implement, to keep two buckets of RX
messages to ensure in-order reception of RX packets:
        ~ Lower Bucket: which stores the RX frames, but the interrupts of these
        lower bucket message objects are not cleared until we reach the SPLIT 
mark
        between the lower and upper bucket.
        ~ Upper Bucket: which acts as a sort of buffer for overflow objects.

Can this design and the NAPI quota combination have some impact on the number 
of frames
lost during RX?

Any ideas?

Regards,
Bhupesh
_______________________________________________
Socketcan-core mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-core

Reply via email to