linux/drivers/net/ethernet
Maciej Fijalkowski 22bf877e52 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>
Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2021-10-15 07:39:03 -07:00
..
3com ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
8390 ethernet: 8390: remove direct netdev->dev_addr writes 2021-10-09 11:46:57 +01:00
actions ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
adaptec ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
aeroflex ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
agere ethernet: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
alacritech ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
allwinner ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
alteon ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
altera ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
amazon ethernet: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
amd ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
apm ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
apple ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
aquantia ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
arc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
atheros ethernet: make use of eth_hw_addr_random() where appropriate 2021-10-14 09:22:15 -07:00
broadcom ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
brocade ethernet: Remove redundant 'flush_workqueue()' calls 2021-10-10 11:33:15 +01:00
cadence ethernet: manually convert memcpy(dev_addr,..., sizeof(addr)) 2021-10-14 09:22:19 -07:00
calxeda ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
cavium ethernet: Remove redundant 'flush_workqueue()' calls 2021-10-10 11:33:15 +01:00
chelsio tcp: switch orphan_count to bare per-cpu counters 2021-10-15 11:28:34 +01:00
cirrus ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
cisco ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
cortina ethernet: make use of eth_hw_addr_random() where appropriate 2021-10-14 09:22:15 -07:00
davicom ethernet: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
dec net: tulip: winbond-840: fix build for UML 2021-10-14 19:18:53 -07:00
dlink ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
emulex ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
ezchip ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
faraday ethernet: make more use of device_get_ethdev_address() 2021-10-07 13:39:51 +01:00
freescale net: dpaa2: add adaptive interrupt coalescing 2021-10-15 14:32:41 +01:00
fujitsu ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
google gve: Track RX buffer allocation failures 2021-10-11 23:25:36 +01:00
hisilicon ethernet: make use of eth_hw_addr_random() where appropriate 2021-10-14 09:22:15 -07:00
huawei ethernet: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
i825xx ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
ibm ethernet: ibm/emac: use of_get_ethdev_address() to load dev_addr 2021-10-14 09:22:23 -07:00
intel ice: introduce XDP_TX fallback path 2021-10-15 07:39:03 -07:00
litex ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
marvell octeontx2-af: Add support to flush full CPT CTX cache 2021-10-14 20:01:06 -07:00
mediatek ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
mellanox Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
micrel ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
microchip net: microchip: lan743x: add support for PTP pulse width (duty cycle) 2021-10-14 19:05:18 -07:00
microsoft Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
moxa ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
mscc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
myricom ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
natsemi
neterion Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
netronome Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
ni ethernet: use eth_hw_addr_set() instead of ether_addr_copy() 2021-10-02 14:18:25 +01:00
nvidia ethernet: forcedeth: remove direct netdev->dev_addr writes 2021-10-09 11:46:56 +01:00
nxp ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
oki-semi ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
packetengines
pasemi ethernet: manually convert memcpy(dev_addr,..., sizeof(addr)) 2021-10-14 09:22:19 -07:00
pensando Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
qlogic Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
qualcomm ethernet: make use of eth_hw_addr_random() where appropriate 2021-10-14 09:22:15 -07:00
rdc ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
realtek ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
renesas ravb: Fix typo AVB->DMAC 2021-10-13 09:08:57 -07:00
rocker ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
samsung ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
seeq ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
sfc ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
sgi ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
silan
sis ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
smsc ethernet: replace netdev->dev_addr 16bit writes 2021-10-14 09:22:27 -07:00
socionext ethernet: make more use of device_get_ethdev_address() 2021-10-07 13:39:51 +01:00
stmicro Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-10-14 16:50:14 -07:00
sun ethernet: replace netdev->dev_addr assignment loops 2021-10-14 09:22:25 -07:00
synopsys ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
tehuti ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
ti ethernet: remove random_ether_addr() 2021-10-14 09:24:09 -07:00
toshiba ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
tundra
via
wiznet ethernet: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
xilinx ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
xircom ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
xscale ethernet: use eth_hw_addr_set() 2021-10-02 14:18:25 +01:00
dnet.c ethernet: manually convert memcpy(dev_addr,..., sizeof(addr)) 2021-10-14 09:22:19 -07:00
dnet.h
ec_bhf.c
ethoc.c ethernet: constify references to netdev->dev_addr in drivers 2021-10-14 09:22:11 -07:00
fealnx.c net: fealnx: fix build for UML 2021-10-14 19:18:22 -07:00
jme.c ethernet: use eth_hw_addr_set() for dev->addr_len cases 2021-10-05 13:16:48 +01:00
jme.h
Kconfig net: korina: select CRC32 2021-10-13 13:28:35 -07:00
korina.c ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
lantiq_etop.c
lantiq_xrx200.c ethernet: use of_get_ethdev_address() 2021-10-07 13:39:51 +01:00
Makefile