Skip to main content
Visitor II
June 21, 2021
Question

Second buffer in ethernet DMA is not transmitted

  • June 21, 2021
  • 1 reply
  • 574 views

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.

    This topic has been closed for replies.

    1 reply

    Visitor II
    July 8, 2021

    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