diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index f2416b530c9a..b222d86b501f 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -2526,6 +2526,8 @@ struct softnet_data { unsigned int time_squeeze; unsigned int cpu_collision; unsigned int received_rps; + unsigned int gro_coalesced; + #ifdef CONFIG_RPS struct softnet_data *rps_ipi_list; #endif diff --git a/net/core/dev.c b/net/core/dev.c index 5e213494bb0f..f1a645cc3573 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4093,6 +4093,7 @@ static int napi_gro_complete(struct sk_buff *skb) } out: + __this_cpu_add(softnet_data.gro_coalesced, NAPI_GRO_CB(skb)->count > 1); return netif_receive_skb_internal(skb); } diff --git a/net/core/net-procfs.c b/net/core/net-procfs.c index 2bf83299600a..77969b71a50a 100644 --- a/net/core/net-procfs.c +++ b/net/core/net-procfs.c @@ -159,10 +159,11 @@ static int softnet_seq_show(struct seq_file *seq, void *v) #endif seq_printf(seq, - "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", + "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n", sd->processed, sd->dropped, sd->time_squeeze, 0, 0, 0, 0, 0, /* was fastroute */ - sd->cpu_collision, sd->received_rps, flow_limit_count); + sd->cpu_collision, sd->received_rps, flow_limit_count, + sd->gro_coalesced); return 0; }