Hello,

I have been experimenting on the SabreLite imx6 board and the network
driver provided by libethdrivers.

I've been successful in getting it to work "out of the box" and, testing
with a simple UDP echo client running on Linux, I've verified that I can
send and receive small UDP messages as long as they were not fragmented.

I immediately noticed that the fragmentation performed by Linux was
different than the one performed by lwip on seL4. Lwip was successfully
reassembling a message fragmented in two, but it wasn't fragmenting it when
sending it back out.

The driver reports an MTU of 1536 and this is likely the reason for lwip
not to perform output fragmentation. Hacking the driver slightly, I had it
report an MTU of 1500 to lwip, while using the 1536 value internally to
allocate buffers. This has allowed me to successfully receive and send UDP
messages of up to ~2950 bytes (ie. under 3 frames).

When size is increased above that amount, lwip starts behaving
"suspiciously" and I can only see the two first two fragments going out,
while the third one is never sent (causing the linux host to timeout on the
IP reassembly). Debugging the driver, it seems the third fragment is never
actually written

Has anybody had any experience in getting bigger UDP messages across?

Any suggestions on how to enable it if not?

Thanks,
-Andrea

tl;dr: Got UDP working on imx6 with libethdrivers+lwip, can only send up to
2950 bytes, would like to send more, help needed.



-- 
Andrea Sorbini
Software Engineer
[email protected]
+1.408.990.7475
www.rti.com

RTI - Your systems. Working as one.
_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to