AnsweredAssumed Answered

Lwip send udp packets larger than MTU

Question asked by jacob.ariel on May 16, 2015
Latest reply on May 20, 2015 by jacob.ariel
Dear Forum,
I bring forth a probably trivial question yet I'm uncertain how to approach it.

Using ST STM32F427, RTOS, lwip and sending data over UDP, If I try to send data small than the MTU:
     e.g:     netbuf_ref(buf, dataPointer, 1000);
Everything works fine.

If the data is bigger then MTU (e.g 4000):
     1. I don't see any data being sent (using wireshark).
     2. The lwip buffer will ran out (under low_level_output()) after several iterations (ETH_TXBUFNB = 8)
     
In stackoverflow I found this "solution":
     Delete the definition of CHECKSUM_BY_HARDWARE     

Questions:
1. Can I send data bigger than MTU with Hardware checksum? How?
     Should I break my data into segments?
     How can I insert markers into my stream while avoiding unnecessary copy
          (Write header to tempBuff, copy dataBuff to tempBuff, in low_level_output copy tempBuff to Tx_Buff)

2. Is there a zero-copy implementation for Cube? 
     Despite reading ST's answer that the copy time is insignificant it is consumes time and unnecessary memory.

3. Any tips for proper system configuration (e.g how much mem to allocate, MEM_SIZE, MEMP_NUM_PBUF)

Outcomes