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數據包丟失的問題(多是由於線纜順序、極性等緣由)。性能