So many chips use DMA for the MAC.  I had to put the LWIP Pbuf in a non
cached section of RAM on an M7 to work. Specifically the M7 data cache was
causing problems polling for when DMA was done as DMA wrote to SRAM but the
processor was reading the cached version of SRAM.   Often when you need to
add magical delays or debugging makes a difference it is either a caching
problem or volatile data access being done incorrectly.

Trampas

On Tue, Aug 18, 2020 at 11:27 AM Sachs, Nico <nico.sa...@trumpf.com> wrote:

> Hi Felix,
>
> I've also got very similar issues with Stm32F7,
> It's somehow due to bugs in STMs HAL libraries.
> I ended up with a quick fix which just waits a little before the packet
> gets sent out within low_level_output(...).
> I had this one:
>
> //dirty solution
> for(uint32_t i = 0; i < 40000; i++) __nop();
> /* Prepare transmit descriptors to give to DMA */
> HAL_ETH_TransmitFrame(&heth, framelength);
>
> If you access the page with chrome and display developer information, you
> can see the load times of your page. And there I've seen that after a
> timeout of 2seconds the files are getting requested again and then it works.
>
> Also use Wireshark to spot what's going on.
>
> This quick fix might not help in your case.
>
> Cheers
>
>
> -----Ursprüngliche Nachricht-----
> Von: lwip-users <lwip-users-bounces+nico.sachs=trumpf....@nongnu.org> Im
> Auftrag von Felix Frey
> Gesendet: Montag, 17. August 2020 15:41
> An: lwip-users@nongnu.org
> Betreff: [EXTERNAL MAIL][lwip-users] very poor performance of httpd
>
> Hi,
>
> I've running an application on a STM32F429 using LwIP 2.0.3 and it's httpd.
> Basically it works fine, however the performance of the httpd is very poor.
>
> When the browser does a http request for a total of five files (statically
> linked) with a total amount of 40kB, it takes about 5sec to complete the
> request.
> It seems like the httpd gets stalled.
> In the log I can see several of the entrys below:
> -----
> 00006.560: http_poll: pcb=0x2000d7b8 hs=0x2000db08 pcb_state=ESTABLISHED
>
> 00006.560: http_poll: try to send more data
>
> 00006.560: http_send: hs=0x2000db08 pcb=0x2000d7b8 left=22030
>
> 00006.560: Trying to send 0 bytes
>
> 00006.560: Sent 0 bytes
>
> 00006.560: send_data end.
>
> 00006.560: tcp_output
> -----
> This is repeated every 500ms for about 2sec until sending moves on.
> It looks like it simply doesn't anything during this time. Why??
>
> My memory settings are:
> #define MEM_LIBC_MALLOC 1
> #define MEMP_NUM_TCP_PCB 8
> #define MEMP_NUM_PBUF 32
> #define TCP_MSS 1460
> #define TCP_WND 2920
>
> I've already played with configuration settings, however, it didn't change
> a lot.
> Can anybody explain this behaviour or even help to improve it?
>
> Thanks in advance.
> Felix
>
> _______________________________________________
> lwip-users mailing list
> lwip-users@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/lwip-users
> _______________________________________________
> lwip-users mailing list
> lwip-users@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/lwip-users
_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to