From patchwork Mon Dec 10 16:54:31 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: ipgre rss is broken since gro From: Eric Dumazet X-Patchwork-Id: 204972 Message-Id: <1355158471.27891.44.camel@edumazet-glaptop> To: Dmitry Kravkov Cc: Eric Dumazet , "netdev@vger.kernel.org" Date: Mon, 10 Dec 2012 08:54:31 -0800 On Mon, 2012-12-10 at 11:32 +0000, Dmitry Kravkov wrote: > CPU is not loaded at all > > > cat /proc/net/softnet_stat > Please find attached. > > For gre interface RX and DROP statistics are advancing simultaneously (by one each ICMP request): > > [root@ ~]# ifconfig gre > gre Link encap:UNSPEC HWaddr C0-A8-0A-40-73-72-83-D2-00-00-00-00-00-00-00-00 > inet addr:8.0.0.1 P-t-P:8.0.0.1 Mask:255.255.255.0 > inet6 addr: fe80::5efe:c0a8:a40/64 Scope:Link > UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1 > RX packets:1646824 errors:0 dropped:51610 overruns:0 frame:0 > TX packets:140519 errors:1 dropped:0 overruns:0 carrier:1 > collisions:0 txqueuelen:0 > RX bytes:2357650904 (2.1 GiB) TX bytes:7309072 (6.9 MiB) dropped:51610 so obviously one cpu is fully loaded. I believe performance problem might come from the skb_set_queue_mapping(skb, 0); in __skb_tunnel_rx() So all packets are queued into a single GRO queue, instead of being split as intended in multiple queues. I cant find why we must clear queue_mapping, so could you try : --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/include/net/dst.h b/include/net/dst.h index 9a78810..4cb27df 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -329,7 +329,6 @@ static inline void __skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev) */ if (!skb->l4_rxhash) skb->rxhash = 0; - skb_set_queue_mapping(skb, 0); skb_dst_drop(skb); nf_reset(skb); }