summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/netdevice.h2
-rw-r--r--net/core/dev.c1
-rw-r--r--net/core/net-procfs.c5
3 files changed, 6 insertions, 2 deletions
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;
}