linux/drivers/net/ethernet/pensando/ionic
Brett Creeley 3c0bf13f5d ionic: Allow XDP program to be hot swapped
Using examples of other driver(s), add the ability to hot-swap an XDP
program without having to reconfigure the queues. To prevent the
q->xdp_prog to be read/written more than once use READ_ONCE() and
WRITE_ONCE() on the q->xdp_prog.

The q->xdp_prog was being checked in multiple different for loops in the
hot path. The change to allow xdp_prog hot swapping created the
possibility for many READ_ONCE(q->xdp_prog) calls during a single napi
callback. Refactor the Rx napi handling to allow a previous
READ_ONCE(q->xdp_prog) (or NULL for hwstamp_rxq) to be passed into the
relevant functions.

Also, move other Rx related hotpath handling into the newly created
ionic_rx_cq_service() function to reduce the scope of the xdp_prog
local variable and put all Rx handling in one function similar to Tx.

Signed-off-by: Brett Creeley <brett.creeley@amd.com>
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Link: https://patch.msgid.link/20240906232623.39651-8-brett.creeley@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-09-09 19:18:15 -07:00
..
ionic_bus_pci.c ionic: Only run the doorbell workaround for certain asic_type 2024-06-19 18:31:49 -07:00
ionic_bus.h
ionic_debugfs.c ionic: Remove redundant null pointer checks in ionic_debugfs_add_qcq() 2024-09-04 16:58:37 -07:00
ionic_debugfs.h
ionic_dev.c ionic: Only run the doorbell workaround for certain asic_type 2024-06-19 18:31:49 -07:00
ionic_dev.h ionic: convert Rx queue buffers to use page_pool 2024-09-09 19:18:15 -07:00
ionic_devlink.c ionic: catch failure from devlink_alloc 2023-05-03 09:14:47 +01:00
ionic_devlink.h
ionic_ethtool.c ionic: Remove setting of RX software timestamp 2024-09-03 15:17:48 -07:00
ionic_ethtool.h
ionic_fw.c ionic: check cmd_regs before copying in or out 2024-02-27 13:03:32 +01:00
ionic_if.h ionic: fix up ionic_if.h kernel-doc issues 2024-05-30 18:10:35 -07:00
ionic_lif.c ionic: Allow XDP program to be hot swapped 2024-09-09 19:18:15 -07:00
ionic_lif.h ionic: Fully reconfigure queues when going to/from a NULL XDP program 2024-09-09 19:18:15 -07:00
ionic_main.c ionic: add private workqueue per-device 2024-06-19 18:31:48 -07:00
ionic_phc.c ionic: Don't overwrite the cyclecounter bitmask 2023-04-12 09:36:25 +01:00
ionic_regs.h
ionic_rx_filter.c ionic: Convert comma to semicolon 2024-09-06 18:06:27 -07:00
ionic_rx_filter.h ionic: Remove unused declarations 2023-08-22 10:30:06 -07:00
ionic_stats.c ionic: Add XDP_REDIRECT support 2024-02-16 08:48:08 +00:00
ionic_stats.h
ionic_txrx.c ionic: Allow XDP program to be hot swapped 2024-09-09 19:18:15 -07:00
ionic_txrx.h ionic: Allow XDP program to be hot swapped 2024-09-09 19:18:15 -07:00
ionic.h ionic: Only run the doorbell workaround for certain asic_type 2024-06-19 18:31:49 -07:00
Makefile