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 <[email protected]> Cc: Eric Dumazet <[email protected]> Cc: Neal Cardwell <[email protected]> Cc: Soheil Hassas Yeganeh <[email protected]> Cc: Willem de Bruijn <[email protected]> Cc: Yuchung Cheng <[email protected]> --- net/ipv4/tcp_output.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index d21a78f..e71336c 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -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; } } -- 2.5.1
