Example with LWIP +Zero-copy ethernet driver

anisba wrote on Friday, January 15, 2010:


Please I would like to know if you have any example with FreeRTOS and LWIP, using a zero-copy ethernet driver (no copy from receive ethernet driver buffer to stack buffer) .

I tried to look at many LWIP examples in FreeRTOS package, but I don’t see any implementing such mechanism.


dsnejko wrote on Friday, January 15, 2010:

I think it is a question not to FreeRtos forum but more to LwIP forum. I don’t like to say  it is impossible to implement a zero-copy driver for LwIP but it should really depend on your hardware. The main idea was discussed already in LwIP forum: you should set pbuf size to maximum packet size, preallocate some pbufs for MAC buffers and replace any taken buffer with a new preallocated pbuf. For sending it is easier just deallocate the sent pbuf and return it back to LwIP.  Some problems may arise: most MACs with DMA will need right alignment for the buffers so it could be tricky since pbufs have byte alignment.


anisba wrote on Friday, January 15, 2010:

Thanks for these interesting infos.

I’m using an STM32 micro with ethernet, according to the doc,  the MAC DMA supports byte aligned buffers, so this may help to easly implement a zero-copy driver.