| Submitter | Eric Dumazet |
|---|---|
| Date | Dec. 10, 2012, 4:54 p.m. |
| Message ID | <1355158471.27891.44.camel@edumazet-glaptop> |
| Download | mbox | patch |
| Permalink | /patch/204972/ |
| State | RFC |
| Delegated to: | David Miller |
| Headers | show |
Comments
> -----Original Message----- > From: Eric Dumazet [mailto:eric.dumazet@gmail.com] > Sent: Monday, December 10, 2012 6:55 PM > To: Dmitry Kravkov > Cc: Eric Dumazet; netdev@vger.kernel.org > Subject: RE: ipgre rss is broken since gro > > On Mon, 2012-12-10 at 11:32 +0000, Dmitry Kravkov wrote: > > > dropped:51610 so obviously one cpu is fully loaded. Link partner continued pushing data overnight > > 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 : > > > 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); > } > Yep, this resolved the issue - Interface is functional after 3 and 100 TCP connections. Thanks
Patch
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); }