numam-dpdk/drivers/net/qede
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
..
base net/qede/base: avoid possible race condition 2017-10-06 02:49:49 +02:00
LICENSE.qede_pmd qede: add base driver 2016-05-06 15:51:22 +02:00
Makefile net/qede: refactoring multi-queue implementation 2017-06-12 10:41:29 +01:00
qede_ethdev.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
qede_ethdev.h net/qede: update PMD version 2.5.2.1 2017-07-31 19:58:41 +02:00
qede_fdir.c net/qede: fix CFLAGS for base files 2017-04-28 14:46:18 +02:00
qede_if.h net/qede/base: add EEE support 2017-10-06 02:49:49 +02:00
qede_logs.h net/qede: change debug verbosity of messages 2017-07-06 15:00:57 +02:00
qede_main.c net/qede/base: use passed ptt handler 2017-10-06 02:49:49 +02:00
qede_rxtx.c net/qede/base: interchangeably use SB between PF and VF 2017-10-06 02:49:48 +02:00
qede_rxtx.h net/qede: add Tx offloads for MPLS-in-UDP packets 2017-07-06 15:00:57 +02:00
rte_pmd_qede_version.map qede: add core driver 2016-05-06 15:51:22 +02:00