linux/drivers/net/ethernet/intel/i40e
Magnus Karlsson 1f459bdc20 i40e: fix potential RX buffer starvation for AF_XDP
When the RX rings are created they are also populated with buffers
so that packets can be received. Usually these are kernel buffers,
but for AF_XDP in zero-copy mode, these are user-space buffers and
in this case the application might not have sent down any buffers
to the driver at this point. And if no buffers are allocated at ring
creation time, no packets can be received and no interrupts will be
generated so the NAPI poll function that allocates buffers to the
rings will never get executed.

To rectify this, we kick the NAPI context of any queue with an
attached AF_XDP zero-copy socket in two places in the code. Once
after an XDP program has loaded and once after the umem is registered.
This take care of both cases: XDP program gets loaded first then AF_XDP
socket is created, and the reverse, AF_XDP socket is created first,
then XDP program is loaded.

Fixes: 0a714186d3 ("i40e: add AF_XDP zero-copy Rx support")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2019-09-11 09:10:46 -07:00
..
i40e_adminq_cmd.h i40e: mark additional missing bits as reserved 2019-09-11 09:10:46 -07:00
i40e_adminq.c i40e: Add drop mode parameter to set mac config 2019-08-22 13:24:13 -07:00
i40e_adminq.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_alloc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_client.c i40e: Use struct_size() in kzalloc() 2019-05-04 17:34:43 -07:00
i40e_client.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_common.c i40e: Implement debug macro hw_dbg using dev_dbg 2019-09-09 11:22:20 -07:00
i40e_dcb_nl.c i40e/i40evf: cleanup incorrect function doxygen comments 2018-04-30 09:09:04 -07:00
i40e_dcb.c i40e: Persistent LLDP support 2019-08-22 13:24:14 -07:00
i40e_dcb.h i40e: Persistent LLDP support 2019-08-22 13:24:14 -07:00
i40e_ddp.c i40e: Implement DDP support in i40e driver 2019-04-16 15:10:21 -07:00
i40e_debugfs.c i40e: Remove EMPR traces from debugfs facility 2019-09-09 11:36:43 -07:00
i40e_devids.h i40e: Add support for X710 B/P & SFP+ cards 2019-05-04 17:24:48 -07:00
i40e_diag.c net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_diag.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_ethtool.c i40e: Check if transceiver implements DDM before access 2019-08-22 13:24:13 -07:00
i40e_hmc.c i40e: Implement debug macro hw_dbg using dev_dbg 2019-09-09 11:22:20 -07:00
i40e_hmc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_lan_hmc.c i40e: fix hw_dbg usage in i40e_hmc_get_object_va 2019-09-09 10:18:18 -07:00
i40e_lan_hmc.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_main.c i40e: Fix message for other card without FEC. 2019-09-11 09:10:46 -07:00
i40e_nvm.c i40e: Persistent LLDP support 2019-08-22 13:24:14 -07:00
i40e_osdep.h i40e: Implement debug macro hw_dbg using dev_dbg 2019-09-09 11:22:20 -07:00
i40e_prototype.h i40e: Persistent LLDP support 2019-08-22 13:24:14 -07:00
i40e_ptp.c i40e: use ktime_get_real_ts64 instead of ktime_to_timespec64 2019-09-11 09:10:45 -07:00
i40e_register.h i40e: check_recovery_mode had wrong if statement 2019-08-22 13:24:13 -07:00
i40e_status.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_trace.h net: intel: Cleanup the copyright/license headers 2018-04-27 14:00:04 -04:00
i40e_txrx_common.h i40e: DRY rx_ptype handling code 2018-12-12 15:46:02 -08:00
i40e_txrx.c net: Use skb_frag_off accessors 2019-07-30 14:21:32 -07:00
i40e_txrx.h net: Use skb accessors in network drivers 2019-07-22 20:47:56 -07:00
i40e_type.h i40e: Persistent LLDP support 2019-08-22 13:24:14 -07:00
i40e_virtchnl_pf.c i40e: clear __I40E_VIRTCHNL_OP_PENDING on invalid min Tx rate 2019-09-11 09:10:46 -07:00
i40e_virtchnl_pf.h i40e: don't report link up for a VF who hasn't enabled queues 2019-08-05 11:42:05 -07:00
i40e_xsk.c i40e: fix potential RX buffer starvation for AF_XDP 2019-09-11 09:10:46 -07:00
i40e_xsk.h xsk: replace ndo_xsk_async_xmit with ndo_xsk_wakeup 2019-08-17 23:07:31 +02:00
i40e.h i40e: use BIT macro to specify the cloud filter field flags 2019-09-11 09:10:46 -07:00
Makefile i40e: Implement DDP support in i40e driver 2019-04-16 15:10:21 -07:00