Anirban was seeing netfront received MTU size packets, which downgraded throughput. The following patch makes netfront use GRO API which improves throughput for that case. Signed-off-by: Wei Liu <wei.liu2@citrix.com> Cc: Anirban Chakraborty <abchak@juniper.net> Cc: Ian Campbell <ian.campbell@citrix.com> Acked-by: Konrad Wilk <konrad.wilk@oracle.com> --- drivers/net/xen-netfront.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 36808bf..dd1011e 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -952,7 +952,7 @@ static int handle_incoming_queue(struct net_device *dev, u64_stats_update_end(&stats->syncp); /* Pass it up. */ - netif_receive_skb(skb); + napi_gro_receive(&np->napi, skb); } return packets_dropped; @@ -1051,6 +1051,8 @@ err: if (work_done < budget) { int more_to_do = 0; + napi_gro_flush(napi, false); + local_irq_save(flags); RING_FINAL_CHECK_FOR_RESPONSES(&np->rx, more_to_do); -- 1.7.10.4
On Mon, 2013-09-30 at 13:46 +0100, Wei Liu wrote:> Anirban was seeing netfront received MTU size packets, which downgraded > throughput. The following patch makes netfront use GRO API which > improves throughput for that case. > > Signed-off-by: Wei Liu <wei.liu2@citrix.com> > Cc: Anirban Chakraborty <abchak@juniper.net>Acked-by: Ian Campbell <ian.campbell@citrix.com>> Acked-by: Konrad Wilk <konrad.wilk@oracle.com> > --- > drivers/net/xen-netfront.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c > index 36808bf..dd1011e 100644 > --- a/drivers/net/xen-netfront.c > +++ b/drivers/net/xen-netfront.c > @@ -952,7 +952,7 @@ static int handle_incoming_queue(struct net_device *dev, > u64_stats_update_end(&stats->syncp); > > /* Pass it up. */ > - netif_receive_skb(skb); > + napi_gro_receive(&np->napi, skb); > } > > return packets_dropped; > @@ -1051,6 +1051,8 @@ err: > if (work_done < budget) { > int more_to_do = 0; > > + napi_gro_flush(napi, false); > + > local_irq_save(flags); > > RING_FINAL_CHECK_FOR_RESPONSES(&np->rx, more_to_do);
Anirban Chakraborty
2013-Oct-01 20:32 UTC
Re: [PATCH net-next] xen-netfront: convert to GRO API
On Sep 30, 2013, at 6:24 AM, Ian Campbell <Ian.Campbell@citrix.com> wrote:> On Mon, 2013-09-30 at 13:46 +0100, Wei Liu wrote: >> Anirban was seeing netfront received MTU size packets, which downgraded >> throughput. The following patch makes netfront use GRO API which >> improves throughput for that case. >> >> Signed-off-by: Wei Liu <wei.liu2@citrix.com> >> Cc: Anirban Chakraborty <abchak@juniper.net> > > Acked-by: Ian Campbell <ian.campbell@citrix.com> > >> Acked-by: Konrad Wilk <konrad.wilk@oracle.com> >> --- >> drivers/net/xen-netfront.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c >> index 36808bf..dd1011e 100644 >> --- a/drivers/net/xen-netfront.c >> +++ b/drivers/net/xen-netfront.c >> @@ -952,7 +952,7 @@ static int handle_incoming_queue(struct net_device *dev, >> u64_stats_update_end(&stats->syncp); >> >> /* Pass it up. */ >> - netif_receive_skb(skb); >> + napi_gro_receive(&np->napi, skb); >> } >> >> return packets_dropped; >> @@ -1051,6 +1051,8 @@ err: >> if (work_done < budget) { >> int more_to_do = 0; >> >> + napi_gro_flush(napi, false); >> + >> local_irq_save(flags); >> >> RING_FINAL_CHECK_FOR_RESPONSES(&np->rx, more_to_do); >We should apply it to stable as well. Thanks. Anirban
From: Wei Liu <wei.liu2@citrix.com> Date: Mon, 30 Sep 2013 13:46:34 +0100> Anirban was seeing netfront received MTU size packets, which downgraded > throughput. The following patch makes netfront use GRO API which > improves throughput for that case. > > Signed-off-by: Wei Liu <wei.liu2@citrix.com> > Cc: Anirban Chakraborty <abchak@juniper.net> > Cc: Ian Campbell <ian.campbell@citrix.com> > Acked-by: Konrad Wilk <konrad.wilk@oracle.com>Applied, to net-next. Anirban suggested to queue this to -stable but that is absolutely not appropriate so I''m not doing that.