this tcp_output() from tcp_input() is causing enormous amount of empty ack towards the other end point.Of course that's not too good, but noone has provided a decent, working solution for this, yet. Feel free to provide one :-)One accepted improvement are "delayed ACKs" where we only send an empty ACK for every 2nd segment.
We are already delaying ACKs. See tcp_ack() macro.
RFC 1122 says a receiver is only allowed to stretch 2 MSS, so every 2 * MSS there must be an ACK. I believe our stack is ACKing every 2 segments regardless of the size, but I’ve seen this behavior in other stacks (either FreeBSD or NetBSD).
enormous amount of empty ack towards the other end point.
More than every 2 segments, i.e. for every segment? If not, then things are working as intended