diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r-- | net/ipv4/tcp_output.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index d12694353540..5f28131eb37e 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -846,6 +846,13 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, | |||
846 | __net_timestamp(skb); | 846 | __net_timestamp(skb); |
847 | 847 | ||
848 | if (likely(clone_it)) { | 848 | if (likely(clone_it)) { |
849 | const struct sk_buff *fclone = skb + 1; | ||
850 | |||
851 | if (unlikely(skb->fclone == SKB_FCLONE_ORIG && | ||
852 | fclone->fclone == SKB_FCLONE_CLONE)) | ||
853 | NET_INC_STATS_BH(sock_net(sk), | ||
854 | LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES); | ||
855 | |||
849 | if (unlikely(skb_cloned(skb))) | 856 | if (unlikely(skb_cloned(skb))) |
850 | skb = pskb_copy(skb, gfp_mask); | 857 | skb = pskb_copy(skb, gfp_mask); |
851 | else | 858 | else |