From 61abb577384910e45485cb19438c9088147de705 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 18 Apr 2013 15:00:59 -0400 Subject: [PATCH] --- yaml --- r: 369291 b: refs/heads/master c: c1cb0d3b569b1d21ada8666efb42dfd437617a09 h: refs/heads/master i: 369289: dae0a5af5f4c3734e89ea3d87b4b72ea08dad4f6 369287: 58d8f60b07345b8c995d05523bc54d7f53cc021d v: v3 --- [refs] | 2 +- trunk/drivers/net/ethernet/freescale/fec_main.c | 5 ----- trunk/include/uapi/linux/snmp.h | 1 + trunk/net/ipv4/proc.c | 1 + trunk/net/ipv4/tcp_output.c | 7 +++++++ 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index f9e37704acc5..ab8053aca63b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8c5afd6d7ba6516985ed69076927b01d2882e346 +refs/heads/master: c1cb0d3b569b1d21ada8666efb42dfd437617a09 diff --git a/trunk/drivers/net/ethernet/freescale/fec_main.c b/trunk/drivers/net/ethernet/freescale/fec_main.c index d4089925a5df..20890874ead7 100644 --- a/trunk/drivers/net/ethernet/freescale/fec_main.c +++ b/trunk/drivers/net/ethernet/freescale/fec_main.c @@ -52,11 +52,6 @@ #include -#ifndef CONFIG_ARM -#include -#include -#endif - #include "fec.h" #if defined(CONFIG_ARM) diff --git a/trunk/include/uapi/linux/snmp.h b/trunk/include/uapi/linux/snmp.h index e00013a1debc..fefdec91c68b 100644 --- a/trunk/include/uapi/linux/snmp.h +++ b/trunk/include/uapi/linux/snmp.h @@ -247,6 +247,7 @@ enum LINUX_MIB_TCPFASTOPENPASSIVEFAIL, /* TCPFastOpenPassiveFail */ LINUX_MIB_TCPFASTOPENLISTENOVERFLOW, /* TCPFastOpenListenOverflow */ LINUX_MIB_TCPFASTOPENCOOKIEREQD, /* TCPFastOpenCookieReqd */ + LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES, /* TCPSpuriousRtxHostQueues */ __LINUX_MIB_MAX }; diff --git a/trunk/net/ipv4/proc.c b/trunk/net/ipv4/proc.c index b6f2ea174898..6da51d55d03a 100644 --- a/trunk/net/ipv4/proc.c +++ b/trunk/net/ipv4/proc.c @@ -269,6 +269,7 @@ static const struct snmp_mib snmp4_net_list[] = { SNMP_MIB_ITEM("TCPFastOpenPassiveFail", LINUX_MIB_TCPFASTOPENPASSIVEFAIL), SNMP_MIB_ITEM("TCPFastOpenListenOverflow", LINUX_MIB_TCPFASTOPENLISTENOVERFLOW), SNMP_MIB_ITEM("TCPFastOpenCookieReqd", LINUX_MIB_TCPFASTOPENCOOKIEREQD), + SNMP_MIB_ITEM("TCPSpuriousRtxHostQueues", LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES), SNMP_MIB_SENTINEL }; diff --git a/trunk/net/ipv4/tcp_output.c b/trunk/net/ipv4/tcp_output.c index d12694353540..5f28131eb37e 100644 --- a/trunk/net/ipv4/tcp_output.c +++ b/trunk/net/ipv4/tcp_output.c @@ -846,6 +846,13 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, __net_timestamp(skb); if (likely(clone_it)) { + const struct sk_buff *fclone = skb + 1; + + if (unlikely(skb->fclone == SKB_FCLONE_ORIG && + fclone->fclone == SKB_FCLONE_CLONE)) + NET_INC_STATS_BH(sock_net(sk), + LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES); + if (unlikely(skb_cloned(skb))) skb = pskb_copy(skb, gfp_mask); else