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 <ka...@fb.com>
Cc: Eric Dumazet <eduma...@google.com>
Cc: Neal Cardwell <ncardw...@google.com>
Cc: Soheil Hassas Yeganeh <soheil.k...@gmail.com>
Cc: Willem de Bruijn <will...@google.com>
Cc: Yuchung Cheng <ych...@google.com>
---
 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

Reply via email to