Вот боролся с похожей проблемой. Только со стеком uC-TCPIP-V1.92 + uC-OS-II.
Делал имитацию "шторма" пакетов от клиента (комп №1) путем:
for (cntsend = 0; cntsend < 1000; cntsend++)
{
this.tcpSocket.Send(frame.Query, 0, frame.Query.Length, SocketFlags.None);
}
после установления TCP соединения с девайсом (TCP сервер на 3 соединения).
Попутно выяснил, что надо приоритеты задач расставить согласно:
Также, обязательно нужно включать NET_ERR_CFG_ARG_CHK_DBG_EN (When ENABLED, internal arguments are checked/validated to debug the network protocol suite), иначе происходило зацикливание задачи стека, обрабатывающей приходящие пакеты NetOS_IF_RxTask, зацикливание при освобождении выделенных ранее буферов.
Дополнительно, ввел задержку задачи NetOS_IF_RxTask на 10 тиков, что также помогает не сваливаться в зацикливание при отключенной NET_ERR_CFG_ARG_CHK_DBG_EN.
В итоге добился, что при "штормящем" компе №1 соединение девайса с компом №2 продолжает работать и лишь изредка теряется TCP соединение (затем снова реконнект и продолжает работать).
Может в lwip нужно сделать что-то подобное? Или все что я сделал - это лишь временная "припарка"?