summaryrefslogtreecommitdiff
path: root/kernel/network/tcp.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-06-26 22:02:16 +0200
committerAnton Kling <anton@kling.gg>2024-06-26 22:02:16 +0200
commit55fef89be9eb9da8b40bfdc1cc20475421ca5554 (patch)
tree99805aeaf4d525808d042dde4f3cb66ebcd96ce0 /kernel/network/tcp.c
parentfddda835a28bbc52a8d8450395a3e57e181782a8 (diff)
TCP: Delay ACKs to batch together packets ACKed
Diffstat (limited to 'kernel/network/tcp.c')
-rw-r--r--kernel/network/tcp.c3
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;
}