[dpdk-dev] [PATCH v3 00/29] cleanup ethdev close operation
Stephen Hemminger
stephen at networkplumber.org
Tue Sep 29 01:33:50 CEST 2020
On Tue, 29 Sep 2020 01:14:08 +0200
Thomas Monjalon <thomas at monjalon.net> wrote:
> This is the end of a process started two years ago,
> to have a close which reliably releases an ethdev port
> without the need of removing the device (which can have more ports).
>
> Unfortunately, some drivers might be broken because did not follow
> the migration recommendations. We cannot wait more,
> this should be merged before the 20.11-rc1 release.
>
>
> v3:
> - integrate NXP patches for dpaa, dpaa2, enetc and pfe
> - fix crash in rte_eth_dev_release_port() because of early memset 0
>
> v2 (big thanks to Ferruh for the reviews):
> - rebase on top of cxgbe updates
> - integrate updated patches for tap, bnx2x, qede
> - return 0 in atlantic PMD
> - fix failsafe mutex free
> - remove useless check in pcap
> - fix testpmd port state transition
> - add primary process check
> - reset more pointers in rte_eth_dev_release_port()
> - remove dev_started reset in rte_eth_dev_close()
> - return int from rte_eth_dev_close()
>
> Note for future: fix old memory leak when releasing port,
> i.e. free callbacks link_intr_cbs, post_rx_burst_cbs, pre_tx_burst_cbs.
>
> The last 3 patches are optional changes to ethdev close/release
> which were requested by Ferruh but may take longer to be accepted:
> - memset 0
> - keep start state
> - int return
>
>
> Rasesh Mody (2):
> net/bnx2x: release port upon close
> net/qede: release port upon close
>
> Sachin Saxena (4):
> net/dpaa: release port upon close
> net/dpaa2: release port upon close
> net/enetc: release port upon close
> net/pfe: release port upon close
>
> Thomas Monjalon (22):
> ethdev: reset device and interrupt pointers on release
> ethdev: allow drivers to return error on close
> net/af_packet: release port upon close
> net/atlantic: release port upon close
> net/axgbe: release port upon close
> net/bonding: release port upon close
> net/failsafe: release port upon close
> net/mlx4: release port upon close
> net/null: release port upon close
> net/octeontx: release port upon close
> net/pcap: release port upon close
> net/ring: release port upon close
> net/softnic: release port upon close
> ethdev: remove old close behaviour
> drivers/net: accept removing device without any port
> drivers/net: check process type in close operation
> drivers/net: remove redundant MAC addresses freeing
> app/testpmd: reset port status on close notification
> app/testpmd: align behaviour of multi-port detach
> ethdev: remove forcing stopped state upon close
> ethdev: reset all when releasing a port
> ethdev: allow close function to return an error
>
> Yunjian Wang (1):
> net/tap: release port upon close
>
> MAINTAINERS | 6 +-
> app/test-pmd/config.c | 7 +-
> app/test-pmd/testpmd.c | 53 +++------
> app/test/virtual_pmd.c | 6 +-
> doc/guides/rel_notes/deprecation.rst | 7 --
> doc/guides/rel_notes/release_20_11.rst | 4 +-
> drivers/net/af_packet/rte_eth_af_packet.c | 58 +++++-----
> drivers/net/af_xdp/rte_eth_af_xdp.c | 9 +-
> drivers/net/ark/ark_ethdev.c | 17 ++-
> drivers/net/atlantic/atl_ethdev.c | 62 ++++-------
> drivers/net/avp/avp_ethdev.c | 10 +-
> drivers/net/axgbe/axgbe_ethdev.c | 17 +--
> drivers/net/bnx2x/bnx2x_ethdev.c | 16 ++-
> drivers/net/bnxt/bnxt_ethdev.c | 16 ++-
> drivers/net/bnxt/bnxt_reps.c | 11 +-
> drivers/net/bnxt/bnxt_reps.h | 2 +-
> drivers/net/bonding/eth_bond_private.h | 2 +-
> drivers/net/bonding/rte_eth_bond_pmd.c | 33 +++---
> drivers/net/cxgbe/cxgbe_ethdev.c | 18 ++--
> drivers/net/cxgbe/cxgbe_main.c | 2 -
> drivers/net/cxgbe/cxgbe_pfvf.h | 2 +-
> drivers/net/cxgbe/cxgbevf_ethdev.c | 5 +-
> drivers/net/cxgbe/cxgbevf_main.c | 2 -
> drivers/net/dpaa/dpaa_ethdev.c | 124 ++++++++++------------
> drivers/net/dpaa2/dpaa2_ethdev.c | 96 +++++++----------
> drivers/net/e1000/em_ethdev.c | 18 ++--
> drivers/net/e1000/igb_ethdev.c | 36 +++----
> drivers/net/ena/ena_ethdev.c | 20 ++--
> drivers/net/enetc/enetc_ethdev.c | 17 +--
> drivers/net/enic/enic_ethdev.c | 9 +-
> drivers/net/enic/enic_vf_representor.c | 8 +-
> drivers/net/failsafe/failsafe.c | 24 +----
> drivers/net/failsafe/failsafe_ether.c | 6 +-
> drivers/net/failsafe/failsafe_ops.c | 67 ++++++++----
> drivers/net/failsafe/failsafe_private.h | 1 +
> drivers/net/fm10k/fm10k_ethdev.c | 22 +---
> drivers/net/hinic/hinic_pmd_ethdev.c | 22 ++--
> drivers/net/hns3/hns3_ethdev.c | 15 +--
> drivers/net/hns3/hns3_ethdev_vf.c | 16 +--
> drivers/net/i40e/i40e_ethdev.c | 16 +--
> drivers/net/i40e/i40e_ethdev_vf.c | 17 ++-
> drivers/net/iavf/iavf_ethdev.c | 18 ++--
> drivers/net/ice/ice_dcf_ethdev.c | 12 +--
> drivers/net/ice/ice_ethdev.c | 21 ++--
> drivers/net/igc/igc_ethdev.c | 17 ++-
> drivers/net/ionic/ionic_ethdev.c | 17 ++-
> drivers/net/ipn3ke/ipn3ke_ethdev.c | 6 +-
> drivers/net/ipn3ke/ipn3ke_representor.c | 7 +-
> drivers/net/ixgbe/ixgbe_ethdev.c | 33 ++----
> drivers/net/kni/rte_eth_kni.c | 25 ++---
> drivers/net/liquidio/lio_ethdev.c | 11 +-
> drivers/net/memif/rte_eth_memif.c | 11 +-
> drivers/net/mlx4/mlx4.c | 7 +-
> drivers/net/mlx5/linux/mlx5_os.c | 2 -
> drivers/net/mlx5/mlx5.c | 16 +--
> drivers/net/mlx5/mlx5.h | 2 +-
> drivers/net/mvneta/mvneta_ethdev.c | 15 +--
> drivers/net/mvpp2/mrvl_ethdev.c | 15 +--
> drivers/net/netvsc/hn_ethdev.c | 19 ++--
> drivers/net/netvsc/hn_var.h | 2 +-
> drivers/net/netvsc/hn_vf.c | 7 +-
> drivers/net/nfb/nfb_ethdev.c | 11 +-
> drivers/net/nfp/nfp_net.c | 11 +-
> drivers/net/null/rte_eth_null.c | 26 +++--
> drivers/net/octeontx/octeontx_ethdev.c | 17 ++-
> drivers/net/octeontx2/otx2_ethdev.c | 8 +-
> drivers/net/pcap/rte_eth_pcap.c | 31 +++---
> drivers/net/pfe/pfe_ethdev.c | 51 ++++-----
> drivers/net/qede/qede_ethdev.c | 20 ++--
> drivers/net/ring/rte_eth_ring.c | 53 +++++----
> drivers/net/sfc/sfc_ethdev.c | 35 +++---
> drivers/net/softnic/rte_eth_softnic.c | 67 ++++++------
> drivers/net/szedata2/rte_eth_szedata2.c | 23 ++--
> drivers/net/tap/rte_eth_tap.c | 52 +++++----
> drivers/net/thunderx/nicvf_ethdev.c | 11 +-
> drivers/net/vhost/rte_eth_vhost.c | 15 +--
> drivers/net/virtio/virtio_ethdev.c | 17 ++-
> drivers/net/virtio/virtio_user_ethdev.c | 4 +-
> drivers/net/vmxnet3/vmxnet3_ethdev.c | 16 ++-
> lib/librte_ethdev/rte_ethdev.c | 32 ++----
> lib/librte_ethdev/rte_ethdev.h | 13 +--
> lib/librte_ethdev/rte_ethdev_driver.h | 2 +-
> lib/librte_ethdev/rte_ethdev_pci.h | 14 +--
> 83 files changed, 763 insertions(+), 928 deletions(-)
>
Looks good, thanks for cleaning up the drivers. It is great to make sure all
the devices work right.
Acked-by: Stephen Hemminger <stephen at networkplumber.org>
More information about the dev
mailing list