numam-dpdk/drivers/net/qede/base
Rasesh Mody 4be18885d1 net/qede/base: avoid possible race condition
There's a possible race in multiple VF scenarios for base driver users
that use the optional APIs ecore_iov_pf_get_and_clear_pending_events,
ecore_iov_pf_add_pending_events. If the client doesn't synchronize the two
calls, it's possible for the PF to clear a VF pending message indication
without ever getting it [as 'get & clear' isn't atomic], leading to VF
timeout on the command.

The solution is to switch into a per-VF indication rather than having a
bitfield for the various VFs with pending events. As part of the solution,
the setting/clearing of the indications is done internally by base driver.
As a result, ecore_iov_pf_add_pending_events is no longer needed and
ecore_iov_pf_get_and_clear_pending_events loses the 'and_clear' from its
name as its now a proper getter.

A VF would be considered 'pending' [I.e., get_pending_events() should
have '1' for it in its bitfield] beginning with the PF's base driver
recognizing a message sent by that VF [in SP_DPC] and ending only when
that VF message is processed.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
2017-10-06 02:49:49 +02:00
..
bcm_osal.c net/qede/base: use crc32 OSAL macro 2017-10-06 02:49:48 +02:00
bcm_osal.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
common_hsi.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_attn_values.h qede: add interrupt handling support 2016-05-06 15:51:22 +02:00
ecore_chain.h net/qede/base: optimize cache-line access 2017-04-04 19:02:52 +02:00
ecore_cxt_api.h net/qede/base: fix code flow and remove unused code 2017-04-28 14:46:18 +02:00
ecore_cxt.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_cxt.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_dcbx_api.h net/qede/base: support non-L2 dcbx tlv application 2017-04-04 19:02:53 +02:00
ecore_dcbx.c net/qede/base: semantic changes 2017-04-04 19:02:54 +02:00
ecore_dcbx.h net/qede/base: support non-L2 dcbx tlv application 2017-04-04 19:02:53 +02:00
ecore_dev_api.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_dev.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_gtt_reg_addr.h net/qede: upgrade the FW to 8.18.9.0 2017-04-04 19:02:50 +02:00
ecore_gtt_values.h net/qede/base: formatting changes 2016-10-26 19:38:29 +02:00
ecore_hsi_common.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_hsi_debug_tools.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_hsi_eth.h net/qede: upgrade the FW to 8.18.9.0 2017-04-04 19:02:50 +02:00
ecore_hsi_init_func.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_hsi_init_tool.h net/qede: upgrade the FW to 8.18.9.0 2017-04-04 19:02:50 +02:00
ecore_hw_defs.h net/qede/base: enhance comments 2016-10-26 19:42:22 +02:00
ecore_hw.c net/qede/base: prevent DMAE transactions during recovery 2017-04-04 19:02:54 +02:00
ecore_hw.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_init_fw_funcs.c net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_init_fw_funcs.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_init_ops.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_init_ops.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_int_api.h net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_int.c net/qede/base: prevent re-assertions of parity errors 2017-10-06 02:49:49 +02:00
ecore_int.h net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_iov_api.h net/qede/base: avoid possible race condition 2017-10-06 02:49:49 +02:00
ecore_iro_values.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_iro.h net/qede: upgrade the FW to 8.18.9.0 2017-04-04 19:02:50 +02:00
ecore_l2_api.h net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_l2.c net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_l2.h net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_mcp_api.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_mcp.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_mcp.h net/qede/base: add mdump sub-commands 2017-10-06 02:49:49 +02:00
ecore_mng_tlv.c net/qede/base: change valloc to vzalloc 2017-04-04 19:02:53 +02:00
ecore_proto_if.h net/qede/base: changes for VF queue zone 2017-10-06 02:49:48 +02:00
ecore_rt_defs.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
ecore_sp_api.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_sp_commands.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_sp_commands.h net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_spq.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
ecore_spq.h net/qede/base: support ARFS mode 2017-04-04 19:02:55 +02:00
ecore_sriov.c net/qede/base: avoid possible race condition 2017-10-06 02:49:49 +02:00
ecore_sriov.h net/qede/base: avoid possible race condition 2017-10-06 02:49:49 +02:00
ecore_status.h net/qede/base: add new status code 2017-01-17 19:40:52 +01:00
ecore_utils.h net/qede/base: add macros for converting pointer 2017-01-17 19:40:52 +01:00
ecore_vf_api.h net/qede/base: multi-Txq support on same queue-zone for VFs 2017-04-04 19:02:54 +02:00
ecore_vf.c net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_vf.h net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
ecore_vfpf_if.h net/qede/base: changes for VF queue zone 2017-10-06 02:49:48 +02:00
ecore.h net/qede/base: fix to use a passed ptt handle 2017-10-06 02:49:48 +02:00
eth_common.h net/qede/base: upgrade the FW to 8.20.0.0 2017-06-12 10:41:29 +01:00
mcp_public.h net/qede/base: add EEE support 2017-10-06 02:49:49 +02:00
nvm_cfg.h net/qede/base: add SmartAN support 2017-10-06 02:49:49 +02:00
reg_addr.h net/qede/base: restrict cache line size register padding 2017-10-06 02:49:48 +02:00