From: "Jonathan Lemon" <jonathan.lemon@gmail.com>
To: "Magnus Karlsson" <magnus.karlsson@gmail.com>
Cc: "Magnus Karlsson" <magnus.karlsson@intel.com>,
"Björn Töpel" <bjorn.topel@intel.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Network Development" <netdev@vger.kernel.org>,
"Jesper Dangaard Brouer" <brouer@redhat.com>,
"Maxim Mikityanskiy" <maximmi@mellanox.com>,
bpf <bpf@vger.kernel.org>,
bruce.richardson@intel.com, ciara.loftus@intel.com,
"Jakub Kicinski" <jakub.kicinski@netronome.com>,
"Ye Xiaolong" <xiaolong.ye@intel.com>,
"Zhang, Qi Z" <qi.z.zhang@intel.com>,
"Samudrala, Sridhar" <sridhar.samudrala@intel.com>,
"Kevin Laatz" <kevin.laatz@intel.com>,
ilias.apalodimas@linaro.org, Kiran <kiran.patil@intel.com>,
axboe@kernel.dk, "Fijalkowski,
Maciej" <maciej.fijalkowski@intel.com>,
"Maciej Fijalkowski" <maciejromanfijalkowski@gmail.com>,
intel-wired-lan <intel-wired-lan@lists.osuosl.org>
Subject: Re: [PATCH bpf-next v4 3/8] i40e: add support for AF_XDP need_wakeup feature
Date: Wed, 14 Aug 2019 08:42:55 -0700 [thread overview]
Message-ID: <61B6830B-7EBF-4B44-A53C-9F56D5D42426@gmail.com> (raw)
In-Reply-To: <CAJ8uoz0Tnb=i-LkGqLU87be9BuYqxmu2pN1Mte0UEWA2+f8bTQ@mail.gmail.com>
On 14 Aug 2019, at 7:59, Magnus Karlsson wrote:
> On Wed, Aug 14, 2019 at 4:48 PM Jonathan Lemon
> <jonathan.lemon@gmail.com> wrote:
>>
>>
>>
>> On 14 Aug 2019, at 0:27, Magnus Karlsson wrote:
>>
>>> This patch adds support for the need_wakeup feature of AF_XDP. If
>>> the
>>> application has told the kernel that it might sleep using the new
>>> bind
>>> flag XDP_USE_NEED_WAKEUP, the driver will then set this flag if it
>>> has
>>> no more buffers on the NIC Rx ring and yield to the application. For
>>> Tx, it will set the flag if it has no outstanding Tx completion
>>> interrupts and return to the application.
>>>
>>> Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
>>> ---
>>> drivers/net/ethernet/intel/i40e/i40e_xsk.c | 18 ++++++++++++++++++
>>> 1 file changed, 18 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
>>> b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
>>> index d0ff5d8..42c9012 100644
>>> --- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
>>> +++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
>>> @@ -626,6 +626,15 @@ int i40e_clean_rx_irq_zc(struct i40e_ring
>>> *rx_ring, int budget)
>>>
>>> i40e_finalize_xdp_rx(rx_ring, xdp_xmit);
>>> i40e_update_rx_stats(rx_ring, total_rx_bytes,
>>> total_rx_packets);
>>> +
>>> + if (xsk_umem_uses_need_wakeup(rx_ring->xsk_umem)) {
>>> + if (failure || rx_ring->next_to_clean ==
>>> rx_ring->next_to_use)
>>> + xsk_set_rx_need_wakeup(rx_ring->xsk_umem);
>>> + else
>>> + xsk_clear_rx_need_wakeup(rx_ring->xsk_umem);
>>> +
>>> + return (int)total_rx_packets;
>>> + }
>>> return failure ? budget : (int)total_rx_packets;
>>
>> Can you elaborate why we're not returning the total budget on failure
>> for the wakeup case?
>
> In the non need_wakeup case (the old behavior), when allocation fails
> from the fill queue we want to retry right away basically busy
> spinning on the fill queue until we find at least one entry and then
> go on processing packets. Works well when the app and the driver are
> on different cores, but a lousy strategy when they execute on the same
> core. That is why in the need_wakeup feature case, we do not return
> the total budget if there is a failure. We will just come back at a
> later point in time from a syscall since the need_wakeup flag will
> have been set and check the fill queue again. We do not want a
> busy-spinning behavior in this case.
That makes sense. Thanks for all the work on this, Magnus!
--
Jonathan
next prev parent reply other threads:[~2019-08-14 15:42 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-14 7:27 [PATCH bpf-next v4 0/8] add need_wakeup flag to the AF_XDP rings Magnus Karlsson
2019-08-14 7:27 ` [PATCH bpf-next v4 1/8] xsk: replace ndo_xsk_async_xmit with ndo_xsk_wakeup Magnus Karlsson
2019-08-14 14:46 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 2/8] xsk: add support for need_wakeup flag in AF_XDP rings Magnus Karlsson
2019-08-14 14:47 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 3/8] i40e: add support for AF_XDP need_wakeup feature Magnus Karlsson
2019-08-14 14:48 ` Jonathan Lemon
2019-08-14 14:59 ` Magnus Karlsson
2019-08-14 15:42 ` Jonathan Lemon [this message]
2019-08-14 15:41 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 4/8] ixgbe: " Magnus Karlsson
2019-08-14 15:41 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 5/8] libbpf: add support for need_wakeup flag in AF_XDP part Magnus Karlsson
2019-08-14 14:49 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 6/8] samples/bpf: add use of need_wakeup flag in xdpsock Magnus Karlsson
2019-08-14 14:53 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 7/8] net/mlx5e: Move the SW XSK code from NAPI poll to a separate function Magnus Karlsson
2019-08-14 14:53 ` Jonathan Lemon
2019-08-14 7:27 ` [PATCH bpf-next v4 8/8] net/mlx5e: Add AF_XDP need_wakeup support Magnus Karlsson
2019-08-14 15:40 ` Jonathan Lemon
2019-08-17 21:29 ` [PATCH bpf-next v4 0/8] add need_wakeup flag to the AF_XDP rings Daniel Borkmann
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=61B6830B-7EBF-4B44-A53C-9F56D5D42426@gmail.com \
--to=jonathan.lemon@gmail.com \
--cc=ast@kernel.org \
--cc=axboe@kernel.dk \
--cc=bjorn.topel@intel.com \
--cc=bpf@vger.kernel.org \
--cc=brouer@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=ciara.loftus@intel.com \
--cc=daniel@iogearbox.net \
--cc=ilias.apalodimas@linaro.org \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jakub.kicinski@netronome.com \
--cc=kevin.laatz@intel.com \
--cc=kiran.patil@intel.com \
--cc=maciej.fijalkowski@intel.com \
--cc=maciejromanfijalkowski@gmail.com \
--cc=magnus.karlsson@gmail.com \
--cc=magnus.karlsson@intel.com \
--cc=maximmi@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=qi.z.zhang@intel.com \
--cc=sridhar.samudrala@intel.com \
--cc=xiaolong.ye@intel.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;
as well as URLs for NNTP newsgroup(s).