Mismatch between tcp_output.c and tcp_fastopen.c in net/ipv4
Navin P
navinp0304 at gmail.com
Tue Mar 23 09:26:42 EDT 2021
Hi,
I've a question regarding bytes_received and bytes_sent.
https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_output.c#L1385
In net/ipv4/tcp_output.c
if (skb->len != tcp_header_size) {
tcp_event_data_sent(tp, sk);
tp->data_segs_out += tcp_skb_pcount(skb);
tp->bytes_sent += skb->len - tcp_header_size;
}
https://elixir.bootlin.com/linux/latest/source/net/ipv4/tcp_fastopen.c#L220
In net/ipv4/tcp_fastopen.c
/* u64_stats_update_begin(&tp->syncp) not needed here,
* as we certainly are not changing upper 32bit value (0)
*/
tp->bytes_received = skb->len;
Above we miss tcp_header_size.
1. Shouldn't bytes_received be skb->len - tcp_header_size for
consistency ? I'm not sure if skb->len - tcp_header_size is correct .
2. Should it not be skb->len - tcp_header_size - ip_header_size -
skb->mac_len ?
Can you please clarify on these ?
Regards,
Navin
More information about the Kernelnewbies
mailing list