diff options
author | Anton Kling <anton@kling.gg> | 2024-06-26 22:02:16 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-06-26 22:02:16 +0200 |
commit | 55fef89be9eb9da8b40bfdc1cc20475421ca5554 (patch) | |
tree | 99805aeaf4d525808d042dde4f3cb66ebcd96ce0 /kernel/network | |
parent | fddda835a28bbc52a8d8450395a3e57e181782a8 (diff) |
TCP: Delay ACKs to batch together packets ACKed
Diffstat (limited to 'kernel/network')
-rw-r--r-- | kernel/network/tcp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/network/tcp.c b/kernel/network/tcp.c index bb48f53..e6febba 100644 --- a/kernel/network/tcp.c +++ b/kernel/network/tcp.c @@ -84,6 +84,7 @@ void tcp_send_empty_payload(struct TcpConnection *con, u8 flags) { header.dst_port = htons(con->outgoing_port); header.seq_num = htonl(con->snd_nxt); if (flags & ACK) { + con->should_send_ack = 0; header.ack_num = htonl(con->rcv_nxt); } else { header.ack_num = 0; @@ -282,7 +283,7 @@ void handle_tcp(ipv4_t src_ip, ipv4_t dst_ip, const u8 *payload, int rc = ringbuffer_write(&con->incoming_buffer, tcp_payload, tcp_payload_length); con->rcv_nxt += rc; - tcp_send_empty_payload(con, ACK); + con->should_send_ack = 1; } break; } |