[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