Знатоки LWIP, подскажите. Делаю отправку через вебсокет на вебморду устройства копию экрана. Использую raw tcp, при открытии порта делаю tcp_nagle_disable, TCP_MSS задан 1460.
Данных может быть много, десятки кб, если перерисовывается весь экран, и допустим пара кб, если перерисовывается только часть экрана.
Так вот когда данных много, все хорошо: идут два подряд пакета размером с TCP_MSS, комп тут же шлет ACK, тут же вызывается callback tcp_sent, где отправляется новая пачка данных, снова два пакета и тд.
А когда данных около 2 кб, то происходит странное: отправляется два пакета, в Wireshark видно что тут же прилетает ACK, но коллбек tcp_sent вызывается только через примерно 0,5 секунды.
Соответственно возникает дикий тормоз, т.к. за эти 0,5 сек уже давно есть новые данные, и надо бы их отправить.
Сделал TCP_TMR_INTERVAL равным 100 вместо 250, задержка стала 0.2 с, т.е. tcp_sent вызывается не по факту прихода ACK, а по медленному таймеру.
Что за дичь и как с этим бороться?