Hi Marek,

On 03.11.2015 22:41, Marek Vasut wrote:
On Tuesday, November 03, 2015 at 10:24:23 PM, Oliver Hartkopp wrote:


Comparing to typical ethernet frames with 1500 bytes the 16 bytes for CAN
frames or 72 bytes for CAN FD frames are already too small in relation to
the socket buffer overhead.

If you want to improve the memory efficiency for arinc290 you should
probably consider to implement a character device based driver instead of
creating a new network protocol family.

See discussion:

http://comments.gmane.org/gmane.linux.kernel/1512019

Which is why I picked the socket variant.


Oh. This provides a completely new perspective.

So far we just discussed about the 32 bit messages to be handled and filtered by the kernel.

This could have been done by

1. A chardev interface driver

2. A netdev interface driver (drivers/net/arinc429/...) and using PF_PACKET together with Berkley packet filtering (BPF)

3. A netdev interface driver (drivers/net/arinc429/...) and using PF_CAN which would lead to a arinc data structure which needs to be struct can_frame compatible.

But if you plan to implement the transport protocols (FTP/MAC) inside the Linux kernel that have been discussed in the URL above this would be a real difference to CAN related protocols. Only from that perspective a new protocol family would make sense.

(..)
 From what I've read so far there's also the sending of cyclic messages and
label filtering outside the HW - or why did you copy/paste the can_id/label
filter mechanism from af_can.c ?

I think you might be mixing two people together here, I sent the patch and
Andrey and Aleksander are working for some other interested company.

Sorry. Will try to bash only *you* in the future :-))

The label filtering makes sense if you want to separate what you receive on
which socket in userland, which allows an application to receive only relevant
traffic.

ok.


Hardware-accelerated filtering is another thing and at this point, we should
not mix these two things. Does CAN framework have any such support for hardware
assisted can_id filtering btw ?


No. We discussed about it. But the HW filter capabilities of CAN controllers have a wide range of functionality. Most filters make only sense in ECUs that pick specific CAN IDs for their functionality. It made no real sense to have an administrative configuration interface that limits the view to the CAN bus for the entire system. An we never had performance issues with the filtering in the softirq context in af_can.c

I'd  prefer to have ARINC framework simple as it could be and separate
from  CAN,  as  these  buses are not similar, besides desire to re-use
SocketCAN interface/API to expose ARINC429 bus.


Maybe you don't need that fancy stuff that comes with PF_CAN. Did you ever
thought about implementing a chardev driver for the ARINC429 hardware?
There are out-of-tree CAN drivers (e.g. can4linux or PEAK System Linux
driver) that handle the transfer of data structures (CAN frames) from/to
kernel space via character device. See an example at
https://en.wikipedia.org/wiki/Can4linux

I guess I can answer that -- yes, I did, see above.


Ok - it seems to stick on the future plan whether it makes sense to implement the FTP/MAC transport protocols inside the kernel or not.

What's your thought about that?

Regards,
Oliver
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to