We have discovered some race conditions when using the port iterator and/or the notifications recently added. The work was done mostly with failsafe but some bugs could be reproduced with other drivers. These 11 patches are fixing all these issues. The PMDs are modified to call a new function at the end of the probing.
Matan Azrad (4): ethdev: allow ownership operations on unused port ethdev: add lock to port allocation check net/failsafe: fix sub-device ownership race ethdev: fix port removal notification timing Thomas Monjalon (7): ethdev: fix debug log of owner id net/failsafe: fix sub-device visibility ethdev: add doxygen comments for each state drivers/net: use higher level of probing helper for PCI ethdev: add probing finish function ethdev: fix port visibility before initialization ethdev: fix port probing notification drivers/net/af_packet/rte_eth_af_packet.c | 2 + drivers/net/ark/ark_ethdev.c | 2 + drivers/net/avp/avp_ethdev.c | 15 +----- drivers/net/bnx2x/bnx2x_ethdev.c | 20 ++----- drivers/net/bonding/rte_eth_bond_pmd.c | 2 + drivers/net/cxgbe/cxgbe_ethdev.c | 1 + drivers/net/cxgbe/cxgbe_main.c | 5 ++ drivers/net/cxgbe/cxgbevf_ethdev.c | 1 + drivers/net/cxgbe/cxgbevf_main.c | 5 ++ drivers/net/dpaa/dpaa_ethdev.c | 5 +- drivers/net/dpaa2/dpaa2_ethdev.c | 4 +- drivers/net/failsafe/failsafe.c | 24 +++++++-- drivers/net/failsafe/failsafe_eal.c | 59 ++++++++++++-------- drivers/net/failsafe/failsafe_ether.c | 23 ++++++++ drivers/net/failsafe/failsafe_private.h | 4 ++ drivers/net/kni/rte_eth_kni.c | 2 + drivers/net/liquidio/lio_ethdev.c | 15 +----- drivers/net/mlx4/mlx4.c | 1 + drivers/net/mlx5/mlx5.c | 2 + drivers/net/mvpp2/mrvl_ethdev.c | 1 + drivers/net/nfp/nfp_net.c | 2 + drivers/net/null/rte_eth_null.c | 2 + drivers/net/octeontx/octeontx_ethdev.c | 3 ++ drivers/net/pcap/rte_eth_pcap.c | 2 + drivers/net/ring/rte_eth_ring.c | 1 + drivers/net/softnic/rte_eth_softnic.c | 3 ++ drivers/net/szedata2/rte_eth_szedata2.c | 2 + drivers/net/tap/rte_eth_tap.c | 2 + drivers/net/vhost/rte_eth_vhost.c | 2 + drivers/net/virtio/virtio_user_ethdev.c | 3 ++ lib/librte_ethdev/rte_ethdev.c | 89 ++++++++++++++++++++----------- lib/librte_ethdev/rte_ethdev.h | 6 ++- lib/librte_ethdev/rte_ethdev_driver.h | 14 +++++ lib/librte_ethdev/rte_ethdev_pci.h | 2 + lib/librte_ethdev/rte_ethdev_version.map | 1 + test/test/virtual_pmd.c | 2 + 36 files changed, 230 insertions(+), 99 deletions(-) -- 2.16.2