From: Eric Dumazet <eric.dumazet@gmail.com>
To: Edward Cree <ecree@solarflare.com>,
Eric Dumazet <eric.dumazet@gmail.com>,
Paolo Abeni <pabeni@redhat.com>,
David Miller <davem@davemloft.net>
Cc: netdev <netdev@vger.kernel.org>
Subject: Re: [RFC PATCH net-next 0/3] net: batched receive in GRO path
Date: Wed, 10 Jul 2019 19:39:29 +0200 [thread overview]
Message-ID: <38ff0ce0-7e26-1683-90f0-adc9c0ac9abe@gmail.com> (raw)
In-Reply-To: <4516a34a-5a88-88ef-e761-7512dff4f3ce@solarflare.com>
On 7/10/19 6:47 PM, Edward Cree wrote:
> On 10/07/2019 16:41, Eric Dumazet wrote:
>> On 7/10/19 4:52 PM, Edward Cree wrote:
>>> Hmm, I was caught out by the call to napi_poll() actually being a local
>>> function pointer, not the static function of the same name. How did a
>>> shadow like that ever get allowed?
>>> But in that case I _really_ don't understand napi_busy_loop(); nothing
>>> in it seems to ever flush GRO, so it's relying on either
>>> (1) stuff getting flushed because the bucket runs out of space, or
>>> (2) the next napi poll after busy_poll_stop() doing the flush.
>>> What am I missing, and where exactly in napi_busy_loop() should the
>>> gro_normal_list() call go?
>> Please look at busy_poll_stop()
> I did look there, but now I've looked again and harder, and I think I get it:
> busy_poll_stop() calls napi->poll(), which (eventually, possibly in the
> subsequent poll that we schedule if rc == budget) calls napi_complete_done()
> which does the flush.
> In which case, the same applies to the napi->rx_list, which similarly gets
> handled in napi_complete_done(). So I don't think napi_busy_loop() needs a
> gro_normal_list() adding to it(?)
I advise you to try busypoll then, with TCP_RR, with say 50 usec delay in /proc/sys/net/core/busy_read
Holding a small packet in the list up to the point we call busy_poll_stop()
will basically make busypoll non working anymore.
napi_complete_done() has special behavior when busy polling is active.
>
> As a general rule, I think we need to gro_normal_list() in those places, and
> only those places, that call napi_gro_flush(). But as I mentioned in the
> patch 3/3 description, I'm still confused by the (few) drivers that call
> napi_gro_flush() themselves.
>
> -Ed
>
next prev parent reply other threads:[~2019-07-10 17:39 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-09 19:27 [RFC PATCH net-next 0/3] net: batched receive in GRO path Edward Cree
2019-07-09 19:28 ` [RFC PATCH net-next 1/3] sfc: don't score irq moderation points for GRO Edward Cree
2019-07-09 19:29 ` [RFC PATCH net-next 2/3] sfc: falcon: " Edward Cree
2019-07-09 19:29 ` [RFC PATCH net-next 3/3] net: use listified RX for handling GRO_NORMAL skbs Edward Cree
2019-07-10 7:27 ` [RFC PATCH net-next 0/3] net: batched receive in GRO path Paolo Abeni
2019-07-10 14:52 ` Edward Cree
2019-07-10 15:41 ` Eric Dumazet
2019-07-10 16:47 ` Edward Cree
2019-07-10 17:39 ` Eric Dumazet [this message]
2019-07-12 15:59 ` Edward Cree
2019-07-12 16:48 ` Eric Dumazet
2019-07-12 18:30 ` David Miller
2019-07-24 21:49 ` Edward Cree
2019-07-30 20:02 ` Edward Cree
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=38ff0ce0-7e26-1683-90f0-adc9c0ac9abe@gmail.com \
--to=eric.dumazet@gmail.com \
--cc=davem@davemloft.net \
--cc=ecree@solarflare.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox