All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16
@ 2021-03-16 16:42 Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 1/3] i40e: optimize for XDP_REDIRECT in xsk path Tony Nguyen
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Tony Nguyen @ 2021-03-16 16:42 UTC (permalink / raw)
  To: davem, kuba
  Cc: Tony Nguyen, netdev, sassmann, bjorn.topel, maciej.fijalkowski,
	magnus.karlsson

This series contains updates to i40e, ixgbe, and ice drivers.

Magnus Karlsson says:

Optimize run_xdp_zc() for the XDP program verdict being XDP_REDIRECT
in the xsk zero-copy path. This path is only used when having AF_XDP
zero-copy on and in that case most packets will be directed to user
space. This provides around 100k extra packets in throughput on my
server when running l2fwd in xdpsock.

The following are changes since commit 2117fce81f6b862aac0673abe8df0c60dca64bfa:
  Merge branch 'psample-Add-additional-metadata-attributes'
and are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 40GbE

Magnus Karlsson (3):
  i40e: optimize for XDP_REDIRECT in xsk path
  ixgbe: optimize for XDP_REDIRECT in xsk path
  ice: optimize for XDP_REDIRECT in xsk path

 drivers/net/ethernet/intel/i40e/i40e_xsk.c   | 11 +++++++----
 drivers/net/ethernet/intel/ice/ice_xsk.c     | 12 ++++++++----
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 11 +++++++----
 3 files changed, 22 insertions(+), 12 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net-next 1/3] i40e: optimize for XDP_REDIRECT in xsk path
  2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
@ 2021-03-16 16:42 ` Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 2/3] ixgbe: " Tony Nguyen
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2021-03-16 16:42 UTC (permalink / raw)
  To: davem, kuba
  Cc: Magnus Karlsson, netdev, sassmann, anthony.l.nguyen, bjorn.topel,
	maciej.fijalkowski, George Kuruvinakunnel

From: Magnus Karlsson <magnus.karlsson@intel.com>

Optimize i40e_run_xdp_zc() for the XDP program verdict being
XDP_REDIRECT in the xsk zero-copy path. This path is only used when
having AF_XDP zero-copy on and in that case most packets will be
directed to user space. This provides a little over 100k extra packets
in throughput on my server when running l2fwd in xdpsock.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_xsk.c b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
index fc32c5019b0f..edddaf034638 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_xsk.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_xsk.c
@@ -160,6 +160,13 @@ static int i40e_run_xdp_zc(struct i40e_ring *rx_ring, struct xdp_buff *xdp)
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
 
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		result = !err ? I40E_XDP_REDIR : I40E_XDP_CONSUMED;
+		rcu_read_unlock();
+		return result;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
@@ -167,10 +174,6 @@ static int i40e_run_xdp_zc(struct i40e_ring *rx_ring, struct xdp_buff *xdp)
 		xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->queue_index];
 		result = i40e_xmit_xdp_tx_ring(xdp, xdp_ring);
 		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? I40E_XDP_REDIR : I40E_XDP_CONSUMED;
-		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net-next 2/3] ixgbe: optimize for XDP_REDIRECT in xsk path
  2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 1/3] i40e: optimize for XDP_REDIRECT in xsk path Tony Nguyen
@ 2021-03-16 16:42 ` Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 3/3] ice: " Tony Nguyen
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2021-03-16 16:42 UTC (permalink / raw)
  To: davem, kuba
  Cc: Magnus Karlsson, netdev, sassmann, anthony.l.nguyen, bjorn.topel,
	maciej.fijalkowski, Vishakha Jambekar

From: Magnus Karlsson <magnus.karlsson@intel.com>

Optimize ixgbe_run_xdp_zc() for the XDP program verdict being
XDP_REDIRECT in the xsk zero-copy path. This path is only used when
having AF_XDP zero-copy on and in that case most packets will be
directed to user space. This provides a little under 100k extra
packets in throughput on my server when running l2fwd in xdpsock.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Tested-by: Vishakha Jambekar <vishakha.jambekar@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
index 3771857cf887..91ad5b902673 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
@@ -104,6 +104,13 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
 
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		result = !err ? IXGBE_XDP_REDIR : IXGBE_XDP_CONSUMED;
+		rcu_read_unlock();
+		return result;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
@@ -115,10 +122,6 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,
 		}
 		result = ixgbe_xmit_xdp_ring(adapter, xdpf);
 		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? IXGBE_XDP_REDIR : IXGBE_XDP_CONSUMED;
-		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net-next 3/3] ice: optimize for XDP_REDIRECT in xsk path
  2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 1/3] i40e: optimize for XDP_REDIRECT in xsk path Tony Nguyen
  2021-03-16 16:42 ` [PATCH net-next 2/3] ixgbe: " Tony Nguyen
@ 2021-03-16 16:42 ` Tony Nguyen
  2021-03-16 21:43 ` [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Jakub Kicinski
  2021-03-16 22:40 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 7+ messages in thread
From: Tony Nguyen @ 2021-03-16 16:42 UTC (permalink / raw)
  To: davem, kuba
  Cc: Magnus Karlsson, netdev, sassmann, anthony.l.nguyen, bjorn.topel,
	maciej.fijalkowski, George Kuruvinakunnel

From: Magnus Karlsson <magnus.karlsson@intel.com>

Optimize ice_run_xdp_zc() for the XDP program verdict being
XDP_REDIRECT in the xsk zero-copy path. This path is only used when
having AF_XDP zero-copy on and in that case most packets will be
directed to user space. This provides a little over 100k extra packets
in throughput on my server when running l2fwd in xdpsock.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_xsk.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_xsk.c b/drivers/net/ethernet/intel/ice/ice_xsk.c
index 83f3c9574ed1..727f277e9d75 100644
--- a/drivers/net/ethernet/intel/ice/ice_xsk.c
+++ b/drivers/net/ethernet/intel/ice/ice_xsk.c
@@ -473,6 +473,14 @@ ice_run_xdp_zc(struct ice_ring *rx_ring, struct xdp_buff *xdp)
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
+
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		result = !err ? ICE_XDP_REDIR : ICE_XDP_CONSUMED;
+		rcu_read_unlock();
+		return result;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
@@ -480,10 +488,6 @@ ice_run_xdp_zc(struct ice_ring *rx_ring, struct xdp_buff *xdp)
 		xdp_ring = rx_ring->vsi->xdp_rings[rx_ring->q_index];
 		result = ice_xmit_xdp_buff(xdp, xdp_ring);
 		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? ICE_XDP_REDIR : ICE_XDP_CONSUMED;
-		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16
  2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
                   ` (2 preceding siblings ...)
  2021-03-16 16:42 ` [PATCH net-next 3/3] ice: " Tony Nguyen
@ 2021-03-16 21:43 ` Jakub Kicinski
  2021-03-16 22:40 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 7+ messages in thread
From: Jakub Kicinski @ 2021-03-16 21:43 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: davem, netdev, sassmann, bjorn.topel, maciej.fijalkowski,
	magnus.karlsson

On Tue, 16 Mar 2021 09:42:51 -0700 Tony Nguyen wrote:
> Optimize run_xdp_zc() for the XDP program verdict being XDP_REDIRECT
> in the xsk zero-copy path. This path is only used when having AF_XDP
> zero-copy on and in that case most packets will be directed to user
> space. This provides around 100k extra packets in throughput on my
> server when running l2fwd in xdpsock.

Looks reasonable:

Reviewed-by: Jakub Kicinski <kuba@kernel.org>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16
  2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
                   ` (3 preceding siblings ...)
  2021-03-16 21:43 ` [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Jakub Kicinski
@ 2021-03-16 22:40 ` patchwork-bot+netdevbpf
  4 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-03-16 22:40 UTC (permalink / raw)
  To: Tony Nguyen
  Cc: davem, kuba, netdev, sassmann, bjorn.topel, maciej.fijalkowski,
	magnus.karlsson

Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Tue, 16 Mar 2021 09:42:51 -0700 you wrote:
> This series contains updates to i40e, ixgbe, and ice drivers.
> 
> Magnus Karlsson says:
> 
> Optimize run_xdp_zc() for the XDP program verdict being XDP_REDIRECT
> in the xsk zero-copy path. This path is only used when having AF_XDP
> zero-copy on and in that case most packets will be directed to user
> space. This provides around 100k extra packets in throughput on my
> server when running l2fwd in xdpsock.
> 
> [...]

Here is the summary with links:
  - [net-next,1/3] i40e: optimize for XDP_REDIRECT in xsk path
    https://git.kernel.org/netdev/net-next/c/346497c78d15
  - [net-next,2/3] ixgbe: optimize for XDP_REDIRECT in xsk path
    https://git.kernel.org/netdev/net-next/c/7d52fe2eaddf
  - [net-next,3/3] ice: optimize for XDP_REDIRECT in xsk path
    https://git.kernel.org/netdev/net-next/c/bb52073645a6

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH net-next 2/3] ixgbe: optimize for XDP_REDIRECT in xsk path
  2020-12-02 15:07 [PATCH net-next 0/3] i40e, ice, ixgbe: optimize for XDP_REDIRECT in xsk path Magnus Karlsson
@ 2020-12-02 15:07 ` Magnus Karlsson
  0 siblings, 0 replies; 7+ messages in thread
From: Magnus Karlsson @ 2020-12-02 15:07 UTC (permalink / raw)
  To: magnus.karlsson, bjorn.topel, intel-wired-lan, anthony.l.nguyen
  Cc: netdev, maciej.fijalkowski, maciejromanfijalkowski

From: Magnus Karlsson <magnus.karlsson@intel.com>

Optimize ixgbe_run_xdp_zc() for the XDP program verdict being
XDP_REDIRECT in the zsk zero-copy path. This path is only used when
having AF_XDP zero-copy on and in that case most packets will be
directed to user space. This provides a little under 100k extra
packets in throughput on my server when running l2fwd in xdpsock.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
index 3771857cf887..91ad5b902673 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c
@@ -104,6 +104,13 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,
 	xdp_prog = READ_ONCE(rx_ring->xdp_prog);
 	act = bpf_prog_run_xdp(xdp_prog, xdp);
 
+	if (likely(act == XDP_REDIRECT)) {
+		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
+		result = !err ? IXGBE_XDP_REDIR : IXGBE_XDP_CONSUMED;
+		rcu_read_unlock();
+		return result;
+	}
+
 	switch (act) {
 	case XDP_PASS:
 		break;
@@ -115,10 +122,6 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,
 		}
 		result = ixgbe_xmit_xdp_ring(adapter, xdpf);
 		break;
-	case XDP_REDIRECT:
-		err = xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog);
-		result = !err ? IXGBE_XDP_REDIR : IXGBE_XDP_CONSUMED;
-		break;
 	default:
 		bpf_warn_invalid_xdp_action(act);
 		fallthrough;
-- 
2.29.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-03-16 22:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-16 16:42 [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Tony Nguyen
2021-03-16 16:42 ` [PATCH net-next 1/3] i40e: optimize for XDP_REDIRECT in xsk path Tony Nguyen
2021-03-16 16:42 ` [PATCH net-next 2/3] ixgbe: " Tony Nguyen
2021-03-16 16:42 ` [PATCH net-next 3/3] ice: " Tony Nguyen
2021-03-16 21:43 ` [PATCH net-next 0/3][pull request] 40GbE Intel Wired LAN Driver Updates 2021-03-16 Jakub Kicinski
2021-03-16 22:40 ` patchwork-bot+netdevbpf
  -- strict thread matches above, loose matches on Subject: below --
2020-12-02 15:07 [PATCH net-next 0/3] i40e, ice, ixgbe: optimize for XDP_REDIRECT in xsk path Magnus Karlsson
2020-12-02 15:07 ` [PATCH net-next 2/3] " Magnus Karlsson

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.