diff options
-rw-r--r-- | net/ipv4/tcp_output.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 77af7faf38a9..61445b57610c 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1767,11 +1767,9 @@ static void tcp_collapse_retrans(struct sock *sk, struct sk_buff *skb) | |||
1767 | struct tcp_sock *tp = tcp_sk(sk); | 1767 | struct tcp_sock *tp = tcp_sk(sk); |
1768 | struct sk_buff *next_skb = tcp_write_queue_next(sk, skb); | 1768 | struct sk_buff *next_skb = tcp_write_queue_next(sk, skb); |
1769 | int skb_size, next_skb_size; | 1769 | int skb_size, next_skb_size; |
1770 | u16 flags; | ||
1771 | 1770 | ||
1772 | skb_size = skb->len; | 1771 | skb_size = skb->len; |
1773 | next_skb_size = next_skb->len; | 1772 | next_skb_size = next_skb->len; |
1774 | flags = TCP_SKB_CB(skb)->flags; | ||
1775 | 1773 | ||
1776 | BUG_ON(tcp_skb_pcount(skb) != 1 || tcp_skb_pcount(next_skb) != 1); | 1774 | BUG_ON(tcp_skb_pcount(skb) != 1 || tcp_skb_pcount(next_skb) != 1); |
1777 | 1775 | ||
@@ -1791,9 +1789,8 @@ static void tcp_collapse_retrans(struct sock *sk, struct sk_buff *skb) | |||
1791 | /* Update sequence range on original skb. */ | 1789 | /* Update sequence range on original skb. */ |
1792 | TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(next_skb)->end_seq; | 1790 | TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(next_skb)->end_seq; |
1793 | 1791 | ||
1794 | /* Merge over control information. */ | 1792 | /* Merge over control information. This moves PSH/FIN etc. over */ |
1795 | flags |= TCP_SKB_CB(next_skb)->flags; /* This moves PSH/FIN etc. over */ | 1793 | TCP_SKB_CB(skb)->flags |= TCP_SKB_CB(next_skb)->flags; |
1796 | TCP_SKB_CB(skb)->flags = flags; | ||
1797 | 1794 | ||
1798 | /* All done, get rid of second SKB and account for it so | 1795 | /* All done, get rid of second SKB and account for it so |
1799 | * packet counting does not break. | 1796 | * packet counting does not break. |