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