OpenCloudOS-Kernel/drivers/net/ethernet/intel/ixgbe
Maxim Mikityanskiy c0fdccfd22 net/ixgbe: Fix concurrency issues between config flow and XSK
Use synchronize_rcu to wait until the XSK wakeup function finishes
before destroying the resources it uses:

1. ixgbe_down already calls synchronize_rcu after setting __IXGBE_DOWN.

2. After switching the XDP program, call synchronize_rcu to let
ixgbe_xsk_wakeup exit before the XDP program is freed.

3. Changing the number of channels brings the interface down.

4. Disabling UMEM sets __IXGBE_TX_DISABLED before closing hardware
resources and resetting xsk_umem. Check that bit in ixgbe_xsk_wakeup to
avoid using the XDP ring when it's already destroyed. synchronize_rcu is
called from ixgbe_txrx_ring_disable.

Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20191217162023.16011-5-maximmi@mellanox.com
2019-12-19 16:20:49 +01:00
..
Makefile ixgbe/ixgbevf: fix XFRM_ALGO dependency 2018-10-31 10:53:15 -07:00
ixgbe.h ixgbe: Use LLDP ethertype define ETH_P_LLDP 2019-06-05 13:04:29 -07:00
ixgbe_82598.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_82599.c ixgbe: remove magic constant in ixgbe_reset_hw_82599() 2019-02-05 16:08:54 -08:00
ixgbe_common.c ixgbe: remove redundant function ixgbe_fw_recovery_mode() 2018-10-03 12:28:04 -07:00
ixgbe_common.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb_82598.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb_82598.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb_82599.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb_82599.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_dcb_nl.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_debugfs.c ixgbe: no need to check return value of debugfs_create functions 2019-08-10 15:25:48 -07:00
ixgbe_ethtool.c ixgbe: Check DDM existence in transceiver before access 2019-06-26 09:18:54 -07:00
ixgbe_fcoe.c ixgbe: Replace GFP_ATOMIC with GFP_KERNEL 2018-08-24 08:52:35 -07:00
ixgbe_fcoe.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_ipsec.c ixgbe: Use kzfree() rather than its implementation. 2019-09-05 12:06:04 +02:00
ixgbe_ipsec.h ixgbe: add VF IPsec management 2018-08-28 14:33:03 -07:00
ixgbe_lib.c ixgbe: Make use of cpumask_local_spread to improve RSS locality 2019-11-04 13:12:15 -08:00
ixgbe_main.c net/ixgbe: Fix concurrency issues between config flow and XSK 2019-12-19 16:20:49 +01:00
ixgbe_mbx.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_mbx.h ixgbe: add VF IPsec offload request message handling 2018-08-28 14:33:14 -07:00
ixgbe_model.h ixgbe: cleanup sparse warnings 2018-05-17 08:24:30 -07:00
ixgbe_phy.c ixgbe: fix mdio bus registration 2019-03-26 16:14:24 -07:00
ixgbe_phy.h ixgbe: Check DDM existence in transceiver before access 2019-06-26 09:18:54 -07:00
ixgbe_ptp.c ixgbe: fix potential u32 overflow on shift 2019-06-28 15:59:38 -07:00
ixgbe_sriov.c ixgbe: Use LLDP ethertype define ETH_P_LLDP 2019-06-05 13:04:29 -07:00
ixgbe_sriov.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_sysfs.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_txrx_common.h xsk: replace ndo_xsk_async_xmit with ndo_xsk_wakeup 2019-08-17 23:07:31 +02:00
ixgbe_type.h ixgbe: implement support for SDP/PPS output on X550 hardware 2019-06-05 13:04:30 -07:00
ixgbe_x540.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_x540.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
ixgbe_x550.c ixgbe: recognize 1000BaseLX SFP modules as 1Gbps 2018-11-28 08:29:49 -08:00
ixgbe_xsk.c net/ixgbe: Fix concurrency issues between config flow and XSK 2019-12-19 16:20:49 +01:00