@@ -1125,6 +1125,8 @@ static void tcp_fragment_tstamp(struct sk_buff *skb, struct sk_buff *skb2)
swap(shinfo->tskey, shinfo2->tskey);
TCP_SKB_CB(skb2)->txstamp_ack = TCP_SKB_CB(skb)->txstamp_ack;
TCP_SKB_CB(skb)->txstamp_ack = 0;
+ TCP_SKB_CB(skb2)->eor_info = TCP_SKB_CB(skb)->eor_info;
+ TCP_SKB_CB(skb)->eor_info = 0;
}
}
@@ -2456,6 +2458,8 @@ void tcp_skb_collapse_tstamp(struct sk_buff *skb,
shinfo->tskey = next_shinfo->tskey;
TCP_SKB_CB(skb)->txstamp_ack =
!!(shinfo->tx_flags & SKBTX_ACK_TSTAMP);
+ if (TCP_SKB_CB(next_skb)->eor_info)
+ TCP_SKB_CB(skb)->eor_info = 1;
}
}
Like txstamp_ack bit, if needed, the eor_info bit should also be carried to the new skb2 when splitting a skb or to the prev skb from the next_skb when collapsing skbs. Signed-off-by: Martin KaFai Lau <kafai@fb.com> Cc: Eric Dumazet <edumazet@google.com> Cc: Neal Cardwell <ncardwell@google.com> Cc: Soheil Hassas Yeganeh <soheil.kdev@gmail.com> Cc: Willem de Bruijn <willemb@google.com> Cc: Yuchung Cheng <ycheng@google.com> --- net/ipv4/tcp_output.c | 4 ++++ 1 file changed, 4 insertions(+)