cancel
Showing results for 
Search instead for 
Did you mean: 

Second buffer in ethernet DMA is not transmitted

IKayk.1
Associate II

Hi, I'm using STM32H7 nucleo board and I have written a simple UDP client that receives a message and loops it back.

I was using the LwIP Socket API for this (lwip_sendto) and using Wireshark I can see that packets are coming out of the board, but the data section is filled with 0s (the header looks fine).

After debugging it for a while, and using udp api directly (udp_send) - where I was successful using this loop test, I found out that the difference was that when I used the socket API I just passed the data as a local buffer, the API itself allocated the pbuf (using pbuf_alloc) and when it does so, it does not leave space for the header, which is later added as another pbuf that points to my data.

I followed the code up until these pbufs are loaded into the DMA TxBuffers in ETH_Prepare_Tx_Descriptors function, they are copied correctly into the right descriptors and they updated the length correctly, but for some reason. The DMA does not transmit the second TxBuffer on DESC1.

I need the socket API for my final solution (for design purposes) so using the udp API is not an option unfortunately.

I would appreciated any advice.

1 REPLY 1

Hello @IKayk.1​ ,

Your issue has been reported internally and is being investigated. I will keep you informed.

Thanks for your contribution.

BeST Regards,

Walid