All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
To: Kurt Kanzenbach <kurt@linutronix.de>
Cc: Tony Nguyen <anthony.l.nguyen@intel.com>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Jesper Dangaard Brouer <hawk@kernel.org>,
	"John Fastabend" <john.fastabend@gmail.com>,
	Richard Cochran <richardcochran@gmail.com>,
	Sriram Yagnaraman <sriram.yagnaraman@ericsson.com>,
	Benjamin Steinke <benjamin.steinke@woks-audio.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
	<bpf@vger.kernel.org>,
	Sriram Yagnaraman <sriram.yagnaraman@est.tech>
Subject: Re: [PATCH iwl-next v9 0/6] igb: Add support for AF_XDP zero-copy
Date: Fri, 18 Oct 2024 12:10:19 +0200	[thread overview]
Message-ID: <ZxI0C/DOY/o8nyzT@boxer> (raw)
In-Reply-To: <20241018-b4-igb_zero_copy-v9-0-da139d78d796@linutronix.de>

On Fri, Oct 18, 2024 at 10:39:56AM +0200, Kurt Kanzenbach wrote:
> This is version v8 of the AF_XDP zero-copy support for igb. Since Sriram's
> duties changed I am sending this instead. Additionally, I've tested this on
> real hardware, Intel i210 [1].
> 

From my side the series is good to go.

> Changes since v8:
> 
>  - Collect tags
>  - Pass read once xsk_pool pointer to igb_xmit_zc() (Maciej)
>  - Change return type of igb_run_xdp_zc() from skb* to int (Maciej)
>  - Link to v8: https://lore.kernel.org/r/20241011-b4-igb_zero_copy-v8-0-83862f726a9e@linutronix.de
> 
> Changes since v7:
> 
>  - Collect tags
>  - Split patches (Maciej)
>  - Use read once xsk_pool pointer in igb_alloc_rx_buffers_zc() (Maciej)
>  - Add FIXME about RS bit in Tx path (Maciej)
>  - Link to v7: https://lore.kernel.org/r/20241007-b4-igb_zero_copy-v7-0-23556668adc6@linutronix.de
> 
> Changes since v6:
> 
>  - Rebase to v6.12
>  - Collect tags
>  - Merged first patch via -net
>  - Inline small functions (Maciej)
>  - Read xdp_prog only once per NAPI cycle (Maciej)
>  - Use u32 for stack based variables (Maciej)
>  - Link to v6: https://lore.kernel.org/r/20240711-b4-igb_zero_copy-v6-0-4bfb68773b18@linutronix.de
> 
> Changes since v5:
> 
>  - Rebase to 6.11
>  - Fix set-but-unused variable warnings
>  - Split first patches (Maciej)
>  - Add READ/WRITE_ONCE() for xsk_pool and xdp_prog (Maciej)
>  - Add synchronize_net() (Maciej)
>  - Remove IGB_RING_FLAG_AF_XDP_ZC (Maciej)
>  - Add NETDEV_XDP_ACT_XSK_ZEROCOPY to last patch (Maciej)
>  - Update Rx ntc handling (Maciej)
>  - Move stats update and xdp finalize to common functions (Maciej)
>  - "Likelyfy" XDP_REDIRECT case (Maciej)
>  - Check Tx disabled and carrier in igb_xmit_zc() (Maciej)
>  - RCT (Maciej)
>  - Link to v5: https://lore.kernel.org/r/20240711-b4-igb_zero_copy-v5-0-f3f455113b11@linutronix.de
> 
> Changes since v4:
> 
>  - Rebase to v6.10
>  - Fix issue reported by kernel test robot
>  - Provide napi_id for xdp_rxq_info_reg() so that busy polling works
>  - Set olinfo_status in igb_xmit_zc() so that frames are transmitted
> 
> Link to v4: https://lore.kernel.org/intel-wired-lan/20230804084051.14194-1-sriram.yagnaraman@est.tech/
> 
> [1] - https://github.com/Linutronix/TSN-Testbench/tree/main/tests/busypolling_i210
> 
> Original cover letter:
> 
> The first couple of patches adds helper funcctions to prepare for AF_XDP
> zero-copy support which comes in the last couple of patches, one each
> for Rx and TX paths.
> 
> As mentioned in v1 patchset [0], I don't have access to an actual IGB
> device to provide correct performance numbers. I have used Intel 82576EB
> emulator in QEMU [1] to test the changes to IGB driver.
> 
> The tests use one isolated vCPU for RX/TX and one isolated vCPU for the
> xdp-sock application [2]. Hope these measurements provide at the least
> some indication on the increase in performance when using ZC, especially
> in the TX path. It would be awesome if someone with a real IGB NIC can
> test the patch.
> 
> AF_XDP performance using 64 byte packets in Kpps.
> Benchmark:	XDP-SKB		XDP-DRV		XDP-DRV(ZC)
> rxdrop		220		235		350
> txpush		1.000		1.000		410
> l2fwd 		1.000		1.000		200
> 
> AF_XDP performance using 1500 byte packets in Kpps.
> Benchmark:	XDP-SKB		XDP-DRV		XDP-DRV(ZC)
> rxdrop		200		210		310
> txpush		1.000		1.000		410
> l2fwd 		0.900		1.000		160
> 
> [0]: https://lore.kernel.org/intel-wired-lan/20230704095915.9750-1-sriram.yagnaraman@est.tech/
> [1]: https://www.qemu.org/docs/master/system/devices/igb.html
> [2]: https://github.com/xdp-project/bpf-examples/tree/master/AF_XDP-example
> 
> v3->v4:
> - NULL check buffer_info in igb_dump before dereferencing (Simon Horman)
> 
> v2->v3:
> - Avoid TX unit hang when using AF_XDP zero-copy by setting time_stamp
>   on the tx_buffer_info
> - Fix uninitialized nb_buffs (Simon Horman)
> 
> v1->v2:
> - Use batch XSK APIs (Maciej Fijalkowski)
> - Follow reverse xmas tree convention and remove the ternary operator
>   use (Simon Horman)
> 
> ---
> Kurt Kanzenbach (1):
>       igb: Add XDP finalize and stats update functions
> 
> Sriram Yagnaraman (5):
>       igb: Remove static qualifiers
>       igb: Introduce igb_xdp_is_enabled()
>       igb: Introduce XSK data structures and helpers
>       igb: Add AF_XDP zero-copy Rx support
>       igb: Add AF_XDP zero-copy Tx support
> 
>  drivers/net/ethernet/intel/igb/Makefile   |   2 +-
>  drivers/net/ethernet/intel/igb/igb.h      |  58 ++-
>  drivers/net/ethernet/intel/igb/igb_main.c | 248 ++++++++-----
>  drivers/net/ethernet/intel/igb/igb_xsk.c  | 562 ++++++++++++++++++++++++++++++
>  4 files changed, 787 insertions(+), 83 deletions(-)
> ---
> base-commit: 283f6fbb370dc1adf455be5d5ac41d58d215fd8b
> change-id: 20240711-b4-igb_zero_copy-bb70a31ecb0f
> 
> Best regards,
> -- 
> Kurt Kanzenbach <kurt@linutronix.de>
> 

WARNING: multiple messages have this Message-ID (diff)
From: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
To: Kurt Kanzenbach <kurt@linutronix.de>
Cc: Tony Nguyen <anthony.l.nguyen@intel.com>,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Jesper Dangaard Brouer <hawk@kernel.org>,
	"John Fastabend" <john.fastabend@gmail.com>,
	Richard Cochran <richardcochran@gmail.com>,
	Sriram Yagnaraman <sriram.yagnaraman@ericsson.com>,
	Benjamin Steinke <benjamin.steinke@woks-audio.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	<intel-wired-lan@lists.osuosl.org>, <netdev@vger.kernel.org>,
	<bpf@vger.kernel.org>,
	Sriram Yagnaraman <sriram.yagnaraman@est.tech>
Subject: Re: [Intel-wired-lan] [PATCH iwl-next v9 0/6] igb: Add support for AF_XDP zero-copy
Date: Fri, 18 Oct 2024 12:10:19 +0200	[thread overview]
Message-ID: <ZxI0C/DOY/o8nyzT@boxer> (raw)
In-Reply-To: <20241018-b4-igb_zero_copy-v9-0-da139d78d796@linutronix.de>

On Fri, Oct 18, 2024 at 10:39:56AM +0200, Kurt Kanzenbach wrote:
> This is version v8 of the AF_XDP zero-copy support for igb. Since Sriram's
> duties changed I am sending this instead. Additionally, I've tested this on
> real hardware, Intel i210 [1].
> 

From my side the series is good to go.

> Changes since v8:
> 
>  - Collect tags
>  - Pass read once xsk_pool pointer to igb_xmit_zc() (Maciej)
>  - Change return type of igb_run_xdp_zc() from skb* to int (Maciej)
>  - Link to v8: https://lore.kernel.org/r/20241011-b4-igb_zero_copy-v8-0-83862f726a9e@linutronix.de
> 
> Changes since v7:
> 
>  - Collect tags
>  - Split patches (Maciej)
>  - Use read once xsk_pool pointer in igb_alloc_rx_buffers_zc() (Maciej)
>  - Add FIXME about RS bit in Tx path (Maciej)
>  - Link to v7: https://lore.kernel.org/r/20241007-b4-igb_zero_copy-v7-0-23556668adc6@linutronix.de
> 
> Changes since v6:
> 
>  - Rebase to v6.12
>  - Collect tags
>  - Merged first patch via -net
>  - Inline small functions (Maciej)
>  - Read xdp_prog only once per NAPI cycle (Maciej)
>  - Use u32 for stack based variables (Maciej)
>  - Link to v6: https://lore.kernel.org/r/20240711-b4-igb_zero_copy-v6-0-4bfb68773b18@linutronix.de
> 
> Changes since v5:
> 
>  - Rebase to 6.11
>  - Fix set-but-unused variable warnings
>  - Split first patches (Maciej)
>  - Add READ/WRITE_ONCE() for xsk_pool and xdp_prog (Maciej)
>  - Add synchronize_net() (Maciej)
>  - Remove IGB_RING_FLAG_AF_XDP_ZC (Maciej)
>  - Add NETDEV_XDP_ACT_XSK_ZEROCOPY to last patch (Maciej)
>  - Update Rx ntc handling (Maciej)
>  - Move stats update and xdp finalize to common functions (Maciej)
>  - "Likelyfy" XDP_REDIRECT case (Maciej)
>  - Check Tx disabled and carrier in igb_xmit_zc() (Maciej)
>  - RCT (Maciej)
>  - Link to v5: https://lore.kernel.org/r/20240711-b4-igb_zero_copy-v5-0-f3f455113b11@linutronix.de
> 
> Changes since v4:
> 
>  - Rebase to v6.10
>  - Fix issue reported by kernel test robot
>  - Provide napi_id for xdp_rxq_info_reg() so that busy polling works
>  - Set olinfo_status in igb_xmit_zc() so that frames are transmitted
> 
> Link to v4: https://lore.kernel.org/intel-wired-lan/20230804084051.14194-1-sriram.yagnaraman@est.tech/
> 
> [1] - https://github.com/Linutronix/TSN-Testbench/tree/main/tests/busypolling_i210
> 
> Original cover letter:
> 
> The first couple of patches adds helper funcctions to prepare for AF_XDP
> zero-copy support which comes in the last couple of patches, one each
> for Rx and TX paths.
> 
> As mentioned in v1 patchset [0], I don't have access to an actual IGB
> device to provide correct performance numbers. I have used Intel 82576EB
> emulator in QEMU [1] to test the changes to IGB driver.
> 
> The tests use one isolated vCPU for RX/TX and one isolated vCPU for the
> xdp-sock application [2]. Hope these measurements provide at the least
> some indication on the increase in performance when using ZC, especially
> in the TX path. It would be awesome if someone with a real IGB NIC can
> test the patch.
> 
> AF_XDP performance using 64 byte packets in Kpps.
> Benchmark:	XDP-SKB		XDP-DRV		XDP-DRV(ZC)
> rxdrop		220		235		350
> txpush		1.000		1.000		410
> l2fwd 		1.000		1.000		200
> 
> AF_XDP performance using 1500 byte packets in Kpps.
> Benchmark:	XDP-SKB		XDP-DRV		XDP-DRV(ZC)
> rxdrop		200		210		310
> txpush		1.000		1.000		410
> l2fwd 		0.900		1.000		160
> 
> [0]: https://lore.kernel.org/intel-wired-lan/20230704095915.9750-1-sriram.yagnaraman@est.tech/
> [1]: https://www.qemu.org/docs/master/system/devices/igb.html
> [2]: https://github.com/xdp-project/bpf-examples/tree/master/AF_XDP-example
> 
> v3->v4:
> - NULL check buffer_info in igb_dump before dereferencing (Simon Horman)
> 
> v2->v3:
> - Avoid TX unit hang when using AF_XDP zero-copy by setting time_stamp
>   on the tx_buffer_info
> - Fix uninitialized nb_buffs (Simon Horman)
> 
> v1->v2:
> - Use batch XSK APIs (Maciej Fijalkowski)
> - Follow reverse xmas tree convention and remove the ternary operator
>   use (Simon Horman)
> 
> ---
> Kurt Kanzenbach (1):
>       igb: Add XDP finalize and stats update functions
> 
> Sriram Yagnaraman (5):
>       igb: Remove static qualifiers
>       igb: Introduce igb_xdp_is_enabled()
>       igb: Introduce XSK data structures and helpers
>       igb: Add AF_XDP zero-copy Rx support
>       igb: Add AF_XDP zero-copy Tx support
> 
>  drivers/net/ethernet/intel/igb/Makefile   |   2 +-
>  drivers/net/ethernet/intel/igb/igb.h      |  58 ++-
>  drivers/net/ethernet/intel/igb/igb_main.c | 248 ++++++++-----
>  drivers/net/ethernet/intel/igb/igb_xsk.c  | 562 ++++++++++++++++++++++++++++++
>  4 files changed, 787 insertions(+), 83 deletions(-)
> ---
> base-commit: 283f6fbb370dc1adf455be5d5ac41d58d215fd8b
> change-id: 20240711-b4-igb_zero_copy-bb70a31ecb0f
> 
> Best regards,
> -- 
> Kurt Kanzenbach <kurt@linutronix.de>
> 

  parent reply	other threads:[~2024-10-18 10:10 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-18  8:39 [PATCH iwl-next v9 0/6] igb: Add support for AF_XDP zero-copy Kurt Kanzenbach
2024-10-18  8:39 ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-18  8:39 ` [PATCH iwl-next v9 1/6] igb: Remove static qualifiers Kurt Kanzenbach
2024-10-18  8:39   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:57   ` Kuruvinakunnel, George
2024-10-26 16:57     ` Kuruvinakunnel, George
2024-10-18  8:39 ` [PATCH iwl-next v9 2/6] igb: Introduce igb_xdp_is_enabled() Kurt Kanzenbach
2024-10-18  8:39   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:55   ` Kuruvinakunnel, George
2024-10-26 16:55     ` Kuruvinakunnel, George
2024-10-18  8:39 ` [PATCH iwl-next v9 3/6] igb: Introduce XSK data structures and helpers Kurt Kanzenbach
2024-10-18  8:39   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:54   ` Kuruvinakunnel, George
2024-10-26 16:54     ` Kuruvinakunnel, George
2024-10-18  8:40 ` [PATCH iwl-next v9 4/6] igb: Add XDP finalize and stats update functions Kurt Kanzenbach
2024-10-18  8:40   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:53   ` Kuruvinakunnel, George
2024-10-26 16:53     ` Kuruvinakunnel, George
2024-10-18  8:40 ` [PATCH iwl-next v9 5/6] igb: Add AF_XDP zero-copy Rx support Kurt Kanzenbach
2024-10-18  8:40   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:51   ` Kuruvinakunnel, George
2024-10-26 16:51     ` Kuruvinakunnel, George
2024-10-18  8:40 ` [PATCH iwl-next v9 6/6] igb: Add AF_XDP zero-copy Tx support Kurt Kanzenbach
2024-10-18  8:40   ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-18 10:07   ` Maciej Fijalkowski
2024-10-18 10:07     ` [Intel-wired-lan] " Maciej Fijalkowski
2024-10-18 10:45     ` Kurt Kanzenbach
2024-10-18 10:45       ` [Intel-wired-lan] " Kurt Kanzenbach
2024-10-26 16:45   ` Kuruvinakunnel, George
2024-10-26 16:45     ` Kuruvinakunnel, George
2024-10-18 10:10 ` Maciej Fijalkowski [this message]
2024-10-18 10:10   ` [Intel-wired-lan] [PATCH iwl-next v9 0/6] igb: Add support for AF_XDP zero-copy Maciej Fijalkowski

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=ZxI0C/DOY/o8nyzT@boxer \
    --to=maciej.fijalkowski@intel.com \
    --cc=anthony.l.nguyen@intel.com \
    --cc=ast@kernel.org \
    --cc=benjamin.steinke@woks-audio.com \
    --cc=bigeasy@linutronix.de \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hawk@kernel.org \
    --cc=intel-wired-lan@lists.osuosl.org \
    --cc=john.fastabend@gmail.com \
    --cc=kuba@kernel.org \
    --cc=kurt@linutronix.de \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=przemyslaw.kitszel@intel.com \
    --cc=richardcochran@gmail.com \
    --cc=sriram.yagnaraman@ericsson.com \
    --cc=sriram.yagnaraman@est.tech \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.