1. lwip在调用tcp_write后不会当即发送数据,而会等到tcp_slow_tmr中再发送。如需当即发送,能够在tcp_write后调用tcp_output。lwip的这种处理方式对连续调用tcp_write的场合(例如要发送的App层报文头在A处,报文数据在B处)很是合适:在最后一次tcp_write后调用tcp_output。tcp
2. 若是抓包工具报告有不连续的tcp报文(例如本该是报文1,2,3,只捕获到报文1,3),多是过于频繁的调用了tcp_output,致使上次tcp_output还没有完成(low_level_output的DMA进行中),下次的tcp_out又开始low_level_output。ST的Demo未能很好的处理该问题。可在ethernetif中为low_level_output创建link list,当发送engine忙时,暂时将待发数据link起来。性能要求不严格的状况下,避免频繁调用tcp_output便可。工具
3. PHY配置为自动协商,*不*要强制为Full Duplex/100MHz,不然会遇到PHY数据包丢失的问题(多是由于线缆顺序、极性等缘由)。性能