Thread (20 messages) 20 messages, 4 authors, 2021-09-22

RE: [Intel-wired-lan] [PATCH v7 intel-next 8/9] ice: introduce XDP_TX fallback path

From: Kuruvinakunnel, George <hidden>
Date: 2021-09-03 06:51:06
Also in: intel-wired-lan, netdev

From: Intel-wired-lan <redacted> On Behalf Of Maciej
Fijalkowski
Sent: Thursday, August 19, 2021 5:30 PM
To: intel-wired-lan@lists.osuosl.org
Cc: joamaki@gmail.com; Lobakin, Alexandr <redacted>;
netdev@vger.kernel.org; toke@redhat.com; bjorn@kernel.org; kuba@kernel.org;
bpf@vger.kernel.org; davem@davemloft.net; Karlsson, Magnus
[off-list ref]
Subject: [Intel-wired-lan] [PATCH v7 intel-next 8/9] ice: introduce XDP_TX fallback
path

Under rare circumstances there might be a situation where a requirement of having
XDP Tx queue per CPU could not be fulfilled and some of the Tx resources have
to be shared between CPUs. This yields a need for placing accesses to xdp_ring
inside a critical section protected by spinlock.
These accesses happen to be in the hot path, so let's introduce the static branch
that will be triggered from the control plane when driver could not provide Tx queue
dedicated for XDP on each CPU.

Currently, the design that has been picked is to allow any number of XDP Tx
queues that is at least half of a count of CPUs that platform has.
For lower number driver will bail out with a response to user that there were not
enough Tx resources that would allow configuring XDP. The sharing of rings is
signalled via static branch enablement which in turn indicates that lock for xdp_ring
accesses needs to be taken in hot path.

Approach based on static branch has no impact on performance of a non-fallback
path. One thing that is needed to be mentioned is a fact that the static branch will
act as a global driver switch, meaning that if one PF got out of Tx resources, then
other PFs that ice driver is servicing will suffer. However, given the fact that HW
that ice driver is handling has 1024 Tx queues per each PF, this is currently an
unlikely scenario.

Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
---
 drivers/net/ethernet/intel/ice/ice.h          |  3 ++
 drivers/net/ethernet/intel/ice/ice_lib.c      |  4 +-
 drivers/net/ethernet/intel/ice/ice_main.c     | 53 ++++++++++++++++---
 drivers/net/ethernet/intel/ice/ice_txrx.c     | 16 +++++-
 drivers/net/ethernet/intel/ice/ice_txrx.h     |  1 +
 drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  7 ++-
 6 files changed, 75 insertions(+), 9 deletions(-)
Tested-by: George Kuruvinakunnel <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help