On Tue, 29 Sep 2020 01:14:08 +0200 Thomas Monjalon <tho...@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 <step...@networkplumber.org>