For drivers/net/i40e,

Acked-by: Jeff Guo <jia....@intel.com>

> -----Original Message-----
> From: Thomas Monjalon <tho...@monjalon.net>
> Sent: Tuesday, September 29, 2020 7:14 AM
> To: dev@dpdk.org
> Cc: Yigit, Ferruh <ferruh.yi...@intel.com>; arybche...@solarflare.com;
> Shijith Thotton <sthot...@marvell.com>; Srisivasubramanian Srinivasan
> <sriniva...@marvell.com>; Heinrich Kuhn
> <heinrich.k...@netronome.com>; Alfredo Cardigliano
> <cardigli...@ntop.org>; Liron Himi <lir...@marvell.com>; Ray Kinsella
> <m...@ashroe.eu>; Neil Horman <nhor...@tuxdriver.com>; John W.
> Linville <linvi...@tuxdriver.com>; Loftus, Ciara <ciara.lof...@intel.com>;
> Zhang, Qi Z <qi.z.zh...@intel.com>; Shepard Siegel
> <shepard.sie...@atomicrules.com>; Ed Czeck <ed.cz...@atomicrules.com>;
> John Miller <john.mil...@atomicrules.com>; Igor Russkikh
> <igor.russk...@aquantia.com>; Pavel Belous <pavel.bel...@aquantia.com>;
> Steven Webster <steven.webs...@windriver.com>; Matt Peters
> <matt.pet...@windriver.com>; Somalapuram Amaranath
> <asoma...@amd.com>; Rasesh Mody <rm...@marvell.com>; Shahed
> Shaikh <shsha...@marvell.com>; Ajit Khaparde
> <ajit.khapa...@broadcom.com>; Somnath Kotur
> <somnath.ko...@broadcom.com>; Chas Williams <ch...@att.com>; Wei Hu
> (Xavier) <xavier.hu...@huawei.com>; Rahul Lakkireddy
> <rahul.lakkire...@chelsio.com>; Hemant Agrawal
> <hemant.agra...@nxp.com>; Sachin Saxena <sachin.sax...@oss.nxp.com>;
> Guo, Jia <jia....@intel.com>; Wang, Haiyue <haiyue.w...@intel.com>;
> Marcin Wojtas <m...@semihalf.com>; Michal Krawczyk <m...@semihalf.com>;
> Guy Tzalik <gtza...@amazon.com>; Evgeny Schemeilin
> <evge...@amazon.com>; Igor Chauskin <igo...@amazon.com>;
> Gagandeep Singh <g.si...@nxp.com>; John Daley <johnd...@cisco.com>;
> Hyong Youb Kim <hyon...@cisco.com>; Gaetan Rivet <gr...@u256.net>;
> Wang, Xiao W <xiao.w.w...@intel.com>; Ziyang Xuan
> <xuanziya...@huawei.com>; Xiaoyun Wang
> <cloud.wangxiao...@huawei.com>; Guoyang Zhou
> <zhouguoy...@huawei.com>; Min Hu (Connor) <humi...@huawei.com>;
> Yisen Zhuang <yisen.zhu...@huawei.com>; Xing, Beilei
> <beilei.x...@intel.com>; Wu, Jingjing <jingjing...@intel.com>; Yang, Qiming
> <qiming.y...@intel.com>; Jakub Grajciar <jgraj...@cisco.com>; Matan
> Azrad <ma...@nvidia.com>; Shahaf Shuler <shah...@nvidia.com>;
> Viacheslav Ovsiienko <viachesl...@nvidia.com>; Zyta Szpak
> <z...@semihalf.com>; Stephen Hemminger <sthem...@microsoft.com>; K. Y.
> Srinivasan <k...@microsoft.com>; Haiyang Zhang <haiya...@microsoft.com>;
> Long Li <lon...@microsoft.com>; Martin Spinler <spin...@cesnet.cz>;
> Tetsuya Mukawa <mtetsu...@gmail.com>; Harman Kalra
> <hka...@marvell.com>; Jerin Jacob <jer...@marvell.com>; Nithin Dabilpuram
> <ndabilpu...@marvell.com>; Kiran Kumar K <kirankum...@marvell.com>;
> Akhil Goyal <akhil.go...@nxp.com>; Richardson, Bruce
> <bruce.richard...@intel.com>; Singh, Jasvinder
> <jasvinder.si...@intel.com>; Dumitrescu, Cristian
> <cristian.dumitre...@intel.com>; Wiles, Keith <keith.wi...@intel.com>;
> Maxime Coquelin <maxime.coque...@redhat.com>; Xia, Chenbo
> <chenbo....@intel.com>; Wang, Zhihong <zhihong.w...@intel.com>; Yong
> Wang <yongw...@vmware.com>
> Subject: [PATCH v3 21/29] ethdev: remove old close behaviour
> 
> The temporary flag RTE_ETH_DEV_CLOSE_REMOVE is removed.
> It was introduced in DPDK 18.11 in order to give time for PMDs to migrate.
> 
> The old behaviour was to free only queues when closing a port.
> The new behaviour is calling rte_eth_dev_release_port() which does three
> more tasks:
>       - trigger event callback
>       - reset state and few pointers
>       - free all generic port resources
> 
> The private port resources must be released in the .dev_close callback.
> 
> The .remove callback should:
>       - call .dev_close callback
>       - call rte_eth_dev_release_port()
>       - free multi-port device shared resources
> 
> Despite waiting two years, some drivers have not migrated, so they may hit
> issues with the incompatible new behaviour.
> After sending emails, adding logs, and announcing the deprecation, the only
> last solution is to declare these drivers as unmaintained:
>       ionic, liquidio, nfp
> Below is a summary of what to implement in those drivers.
> 
> * The freeing of private port resources must be moved from the
> ".remove(device)" function to the ".dev_close(port)" function.
> 
> * If a generic resource (.mac_addrs or .hash_mac_addrs) cannot be freed, it
> must be set to NULL in ".dev_close" function to protect from subsequent
> rte_eth_dev_release_port() freeing.
> 
> * Note 1:
> The generic resources are freed in rte_eth_dev_release_port(), after
> ".dev_close" is called in rte_eth_dev_close(), but not when calling
> ".dev_close" directly from the ".remove" PMD function.
> That's why rte_eth_dev_release_port() must still be called explicitly from
> ".remove(device)" after calling the ".dev_close" PMD function.
> 
> * Note 2:
> If a device can have multiple ports, the common resources must be freed
> only in the ".remove(device)" function.
> 
> * Note 3:
> The port is supposed to be in a stopped state when it is closed.
> If it is not the case, it is free to the PMD implementation how to react when
> trying to close a non-stopped port:
> either try to stop it automatically or just return an error.
> 
> Cc: Shijith Thotton <sthot...@marvell.com>
> Cc: Srisivasubramanian Srinivasan <sriniva...@marvell.com>
> Cc: Heinrich Kuhn <heinrich.k...@netronome.com>
> Cc: Alfredo Cardigliano <cardigli...@ntop.org>
> 
> Signed-off-by: Thomas Monjalon <tho...@monjalon.net>
> Reviewed-by: Liron Himi <lir...@marvell.com>
> ---
>  MAINTAINERS                               |  6 +++---
>  doc/guides/rel_notes/deprecation.rst      |  6 ------
>  drivers/net/af_packet/rte_eth_af_packet.c |  1 -
>  drivers/net/af_xdp/rte_eth_af_xdp.c       |  2 --
>  drivers/net/ark/ark_ethdev.c              |  2 --
>  drivers/net/atlantic/atl_ethdev.c         |  2 --
>  drivers/net/avp/avp_ethdev.c              |  2 --
>  drivers/net/axgbe/axgbe_ethdev.c          |  1 -
>  drivers/net/bnx2x/bnx2x_ethdev.c          |  5 -----
>  drivers/net/bnxt/bnxt_ethdev.c            |  5 -----
>  drivers/net/bnxt/bnxt_reps.c              |  4 ----
>  drivers/net/bonding/rte_eth_bond_pmd.c    |  1 -
>  drivers/net/cxgbe/cxgbe_main.c            |  2 --
>  drivers/net/cxgbe/cxgbevf_main.c          |  2 --
>  drivers/net/dpaa/dpaa_ethdev.c            |  1 -
>  drivers/net/dpaa2/dpaa2_ethdev.c          |  1 -
>  drivers/net/e1000/em_ethdev.c             |  5 -----
>  drivers/net/e1000/igb_ethdev.c            | 10 ----------
>  drivers/net/ena/ena_ethdev.c              |  6 ------
>  drivers/net/enetc/enetc_ethdev.c          |  1 -
>  drivers/net/enic/enic_ethdev.c            |  2 --
>  drivers/net/enic/enic_vf_representor.c    |  3 +--
>  drivers/net/failsafe/failsafe.c           |  1 -
>  drivers/net/fm10k/fm10k_ethdev.c          |  5 -----
>  drivers/net/hinic/hinic_pmd_ethdev.c      |  6 ------
>  drivers/net/hns3/hns3_ethdev.c            |  5 -----
>  drivers/net/hns3/hns3_ethdev_vf.c         |  5 -----
>  drivers/net/i40e/i40e_ethdev.c            |  5 -----
>  drivers/net/i40e/i40e_ethdev_vf.c         |  5 -----
>  drivers/net/iavf/iavf_ethdev.c            |  5 -----
>  drivers/net/ice/ice_dcf_ethdev.c          |  2 --
>  drivers/net/ice/ice_ethdev.c              |  5 -----
>  drivers/net/igc/igc_ethdev.c              |  5 -----
>  drivers/net/ixgbe/ixgbe_ethdev.c          | 10 ----------
>  drivers/net/kni/rte_eth_kni.c             |  2 --
>  drivers/net/memif/rte_eth_memif.c         |  3 ---
>  drivers/net/mlx4/mlx4.c                   |  1 -
>  drivers/net/mlx5/linux/mlx5_os.c          |  2 --
>  drivers/net/mvneta/mvneta_ethdev.c        |  3 ---
>  drivers/net/mvpp2/mrvl_ethdev.c           |  3 ---
>  drivers/net/netvsc/hn_ethdev.c            |  3 ---
>  drivers/net/nfb/nfb_ethdev.c              |  3 ---
>  drivers/net/null/rte_eth_null.c           |  1 -
>  drivers/net/octeontx/octeontx_ethdev.c    |  1 -
>  drivers/net/octeontx2/otx2_ethdev.c       |  1 -
>  drivers/net/pcap/rte_eth_pcap.c           |  1 -
>  drivers/net/pfe/pfe_ethdev.c              |  2 --
>  drivers/net/qede/qede_ethdev.c            |  5 -----
>  drivers/net/ring/rte_eth_ring.c           |  1 -
>  drivers/net/sfc/sfc_ethdev.c              |  4 +---
>  drivers/net/softnic/rte_eth_softnic.c     |  1 -
>  drivers/net/szedata2/rte_eth_szedata2.c   |  3 ---
>  drivers/net/tap/rte_eth_tap.c             |  2 +-
>  drivers/net/vhost/rte_eth_vhost.c         |  2 +-
>  drivers/net/virtio/virtio_ethdev.c        |  5 -----
>  drivers/net/vmxnet3/vmxnet3_ethdev.c      |  3 ---
>  lib/librte_ethdev/rte_ethdev.c            | 17 +----------------
>  lib/librte_ethdev/rte_ethdev.h            |  8 +-------
>  58 files changed, 9 insertions(+), 197 deletions(-)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 49a6dfa7a5..6aaf80d483 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -604,7 +604,7 @@ F: drivers/net/thunderx/
>  F: doc/guides/nics/thunderx.rst
>  F: doc/guides/nics/features/thunderx.ini
> 
> -Cavium LiquidIO
> +Cavium LiquidIO - UNMAINTAINED
>  M: Shijith Thotton <sthot...@marvell.com>
>  M: Srisivasubramanian Srinivasan <sriniva...@marvell.com>
>  T: git://dpdk.org/next/dpdk-next-net-mrvl
> @@ -793,7 +793,7 @@ F: drivers/net/nfb/
>  F: doc/guides/nics/nfb.rst
>  F: doc/guides/nics/features/nfb.ini
> 
> -Netronome nfp
> +Netronome nfp - UNMAINTAINED
>  M: Heinrich Kuhn <heinrich.k...@netronome.com>
>  F: drivers/net/nfp/
>  F: doc/guides/nics/nfp.rst
> @@ -829,7 +829,7 @@ F: doc/guides/nics/pfe.rst
>  F: drivers/net/pfe/
>  F: doc/guides/nics/features/pfe.ini
> 
> -Pensando ionic
> +Pensando ionic - UNMAINTAINED
>  M: Alfredo Cardigliano <cardigli...@ntop.org>
>  F: drivers/net/ionic/
>  F: doc/guides/nics/ionic.rst
> diff --git a/doc/guides/rel_notes/deprecation.rst
> b/doc/guides/rel_notes/deprecation.rst
> index 9691f2c57d..d07b4eeb47 100644
> --- a/doc/guides/rel_notes/deprecation.rst
> +++ b/doc/guides/rel_notes/deprecation.rst
> @@ -137,12 +137,6 @@ Deprecation Notices
>    - ``rte_eth_dev_stop``
>    - ``rte_eth_dev_close``
> 
> -* ethdev: The temporary flag RTE_ETH_DEV_CLOSE_REMOVE will be
> removed in 20.11.
> -  As a consequence, the new behaviour introduced in 18.11 will be effective
> -  for all drivers: generic port resources are freed on close operation.
> -  Private resources are expected to be released in the ``dev_close`` 
> callback.
> -  More details in
> http://inbox.dpdk.org/dev/5248162.j6AOsuQRmx@thomas/
> -
>  * ethdev: New offload flags ``DEV_RX_OFFLOAD_FLOW_MARK`` will be
> added in 19.11.
>    This will allow application to enable or disable PMDs from updating
>    ``rte_mbuf::hash::fdir``.
> diff --git a/drivers/net/af_packet/rte_eth_af_packet.c
> b/drivers/net/af_packet/rte_eth_af_packet.c
> index 12c202cba4..25876224f8 100644
> --- a/drivers/net/af_packet/rte_eth_af_packet.c
> +++ b/drivers/net/af_packet/rte_eth_af_packet.c
> @@ -859,7 +859,6 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
>       data->nb_tx_queues = (uint16_t)nb_queues;
>       data->dev_link = pmd_link;
>       data->mac_addrs = &(*internals)->eth_addr;
> -     data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       (*eth_dev)->dev_ops = &ops;
> 
> diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c
> b/drivers/net/af_xdp/rte_eth_af_xdp.c
> index badbce63fb..60add9ead4 100644
> --- a/drivers/net/af_xdp/rte_eth_af_xdp.c
> +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
> @@ -1274,8 +1274,6 @@ init_internals(struct rte_vdev_device *dev, const
> char *if_name,
>       eth_dev->dev_ops = &ops;
>       eth_dev->rx_pkt_burst = eth_af_xdp_rx;
>       eth_dev->tx_pkt_burst = eth_af_xdp_tx;
> -     /* Let rte_eth_dev_close() release the port resources. */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>  #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG)
>       AF_XDP_LOG(INFO, "Zero copy between umem and mbuf
> enabled.\n"); diff --git a/drivers/net/ark/ark_ethdev.c
> b/drivers/net/ark/ark_ethdev.c index 5f2ed4b7b7..83dc4ecd2c 100644
> --- a/drivers/net/ark/ark_ethdev.c
> +++ b/drivers/net/ark/ark_ethdev.c
> @@ -260,8 +260,6 @@ eth_ark_dev_init(struct rte_eth_dev *dev)
>       /* Use dummy function until setup */
>       dev->rx_pkt_burst = &eth_ark_recv_pkts_noop;
>       dev->tx_pkt_burst = &eth_ark_xmit_pkts_noop;
> -     /* Let rte_eth_dev_close() release the port resources */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       ark->bar0 = (uint8_t *)pci_dev->mem_resource[0].addr;
>       ark->a_bar = (uint8_t *)pci_dev->mem_resource[2].addr; diff --git
> a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c
> index d3babeff94..2217511ca0 100644
> --- a/drivers/net/atlantic/atl_ethdev.c
> +++ b/drivers/net/atlantic/atl_ethdev.c
> @@ -380,8 +380,6 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev)
>       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
>               return 0;
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Vendor and Device ID need to be set before init of shared code */
>       hw->device_id = pci_dev->id.device_id;
>       hw->vendor_id = pci_dev->id.vendor_id; diff --git
> a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index
> 2eed6acc3f..c730b7ab86 100644
> --- a/drivers/net/avp/avp_ethdev.c
> +++ b/drivers/net/avp/avp_ethdev.c
> @@ -957,8 +957,6 @@ eth_avp_dev_init(struct rte_eth_dev *eth_dev)
>       eth_dev->dev_ops = &avp_eth_dev_ops;
>       eth_dev->rx_pkt_burst = &avp_recv_pkts;
>       eth_dev->tx_pkt_burst = &avp_xmit_pkts;
> -     /* Let rte_eth_dev_close() release the port resources */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
>               /*
> diff --git a/drivers/net/axgbe/axgbe_ethdev.c
> b/drivers/net/axgbe/axgbe_ethdev.c
> index 2dd64180ad..cf085487cc 100644
> --- a/drivers/net/axgbe/axgbe_ethdev.c
> +++ b/drivers/net/axgbe/axgbe_ethdev.c
> @@ -1959,7 +1959,6 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev)
>       int ret;
> 
>       eth_dev->dev_ops = &axgbe_eth_dev_ops;
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       eth_dev->rx_descriptor_status = axgbe_dev_rx_descriptor_status;
>       eth_dev->tx_descriptor_status = axgbe_dev_tx_descriptor_status;
> diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c
> b/drivers/net/bnx2x/bnx2x_ethdev.c
> index 8dc46384af..40225b2f44 100644
> --- a/drivers/net/bnx2x/bnx2x_ethdev.c
> +++ b/drivers/net/bnx2x/bnx2x_ethdev.c
> @@ -735,11 +735,6 @@ bnx2x_common_dev_init(struct rte_eth_dev
> *eth_dev, int is_vf)
>                       goto out;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       return 0;
> 
>  out:
> diff --git a/drivers/net/bnxt/bnxt_ethdev.c
> b/drivers/net/bnxt/bnxt_ethdev.c index e726d078ec..a77bab661d 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -5802,11 +5802,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev, void
> *params __rte_unused)
> 
>       bnxt_alloc_switch_domain(bp);
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       PMD_DRV_LOG(INFO,
>                   DRV_MODULE_NAME "found at mem %" PRIX64 ", node
> addr %pM\n",
>                   pci_dev->mem_resource[0].phys_addr,
> diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c
> index 2b6c0a277b..df8680c113 100644
> --- a/drivers/net/bnxt/bnxt_reps.c
> +++ b/drivers/net/bnxt/bnxt_reps.c
> @@ -203,10 +203,6 @@ int bnxt_vf_representor_init(struct rte_eth_dev
> *eth_dev, void *params)
>       PMD_DRV_LOG(INFO, "calling bnxt_print_link_info\n");
>       bnxt_print_link_info(eth_dev);
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       PMD_DRV_LOG(INFO,
>                   "Switch domain id %d: Representor Device %d init done\n",
>                   vf_rep_bp->switch_domain_id, vf_rep_bp->vf_id); diff --
> git a/drivers/net/bonding/rte_eth_bond_pmd.c
> b/drivers/net/bonding/rte_eth_bond_pmd.c
> index a9ed5d8e12..1f761c7c9e 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -3209,7 +3209,6 @@ bond_alloc(struct rte_vdev_device *dev, uint8_t
> mode)
>       }
> 
>       internals = eth_dev->data->dev_private;
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       eth_dev->data->nb_rx_queues = (uint16_t)1;
>       eth_dev->data->nb_tx_queues = (uint16_t)1;
> 
> diff --git a/drivers/net/cxgbe/cxgbe_main.c
> b/drivers/net/cxgbe/cxgbe_main.c index da4ae25d47..53b08a64af 100644
> --- a/drivers/net/cxgbe/cxgbe_main.c
> +++ b/drivers/net/cxgbe/cxgbe_main.c
> @@ -2142,8 +2142,6 @@ int cxgbe_probe(struct adapter *adapter)
>                       goto out_free;
>               }
> 
> -             pi->eth_dev->data->dev_flags |=
> RTE_ETH_DEV_CLOSE_REMOVE;
> -
>               if (i > 0) {
>                       /* First port will be notified by upper layer */
>                       rte_eth_dev_probing_finish(eth_dev);
> diff --git a/drivers/net/cxgbe/cxgbevf_main.c
> b/drivers/net/cxgbe/cxgbevf_main.c
> index 35d873402b..9ee060504f 100644
> --- a/drivers/net/cxgbe/cxgbevf_main.c
> +++ b/drivers/net/cxgbe/cxgbevf_main.c
> @@ -261,8 +261,6 @@ int cxgbevf_probe(struct adapter *adapter)
>                       goto out_free;
>               }
> 
> -             pi->eth_dev->data->dev_flags |=
> RTE_ETH_DEV_CLOSE_REMOVE;
> -
>               if (i > 0) {
>                       /* First port will be notified by upper layer */
>                       rte_eth_dev_probing_finish(eth_dev);
> diff --git a/drivers/net/dpaa/dpaa_ethdev.c
> b/drivers/net/dpaa/dpaa_ethdev.c index 8f986683e2..a01c8f3fc6 100644
> --- a/drivers/net/dpaa/dpaa_ethdev.c
> +++ b/drivers/net/dpaa/dpaa_ethdev.c
> @@ -2127,7 +2127,6 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv,
> 
>       qman_ern_register_cb(dpaa_free_mbuf);
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       if (dpaa_drv->drv_flags & RTE_DPAA_DRV_INTR_LSC)
>               eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
> 
> diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c
> b/drivers/net/dpaa2/dpaa2_ethdev.c
> index 7bd3208a19..d8624514df 100644
> --- a/drivers/net/dpaa2/dpaa2_ethdev.c
> +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
> @@ -2793,7 +2793,6 @@ rte_dpaa2_probe(struct rte_dpaa2_driver
> *dpaa2_drv,
>       dpaa2_dev->eth_dev = eth_dev;
>       eth_dev->data->rx_mbuf_alloc_failed = 0;
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       if (dpaa2_drv->drv_flags & RTE_DPAA2_DRV_INTR_LSC)
>               eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
> 
> diff --git a/drivers/net/e1000/em_ethdev.c
> b/drivers/net/e1000/em_ethdev.c index 2d0e071448..6a6ae0e9d5 100644
> --- a/drivers/net/e1000/em_ethdev.c
> +++ b/drivers/net/e1000/em_ethdev.c
> @@ -297,11 +297,6 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)
>       rte_ether_addr_copy((struct rte_ether_addr *)hw->mac.addr,
>               eth_dev->data->mac_addrs);
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* initialize the vfta */
>       memset(shadow_vfta, 0, sizeof(*shadow_vfta));
> 
> diff --git a/drivers/net/e1000/igb_ethdev.c
> b/drivers/net/e1000/igb_ethdev.c index 9e4aefe00c..f8778207ef 100644
> --- a/drivers/net/e1000/igb_ethdev.c
> +++ b/drivers/net/e1000/igb_ethdev.c
> @@ -841,11 +841,6 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
>       rte_ether_addr_copy((struct rte_ether_addr *)hw->mac.addr,
>                       &eth_dev->data->mac_addrs[0]);
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* initialize the vfta */
>       memset(shadow_vfta, 0, sizeof(*shadow_vfta));
> 
> @@ -997,11 +992,6 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev)
>               return -ENOMEM;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Generate a random MAC address, if none was assigned by PF. */
>       if (rte_is_zero_ether_addr(perm_addr)) {
>               rte_eth_random_addr(perm_addr->addr_bytes);
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index ae6daad892..cf1c0b9795 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -1863,12 +1863,6 @@ static int eth_ena_dev_init(struct rte_eth_dev
> *eth_dev)
>                       get_feat_ctx.dev_attr.mac_addr,
>                       (struct rte_ether_addr *)adapter->mac_addr);
> 
> -     /*
> -      * Pass the information to the rte_eth_dev_close() that it should also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       adapter->drv_stats = rte_zmalloc("adapter stats",
>                                        sizeof(*adapter->drv_stats),
>                                        RTE_CACHE_LINE_SIZE);
> diff --git a/drivers/net/enetc/enetc_ethdev.c
> b/drivers/net/enetc/enetc_ethdev.c
> index afb658df3d..325c93b92a 100644
> --- a/drivers/net/enetc/enetc_ethdev.c
> +++ b/drivers/net/enetc/enetc_ethdev.c
> @@ -877,7 +877,6 @@ enetc_dev_init(struct rte_eth_dev *eth_dev)
>       eth_dev->dev_ops = &enetc_ops;
>       eth_dev->rx_pkt_burst = &enetc_recv_pkts;
>       eth_dev->tx_pkt_burst = &enetc_xmit_pkts;
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       /* Retrieving and storing the HW base address of device */
>       hw->hw.reg = (void *)pci_dev->mem_resource[0].addr; diff --git
> a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index
> ed03d53608..27f60b45b8 100644
> --- a/drivers/net/enic/enic_ethdev.c
> +++ b/drivers/net/enic/enic_ethdev.c
> @@ -1292,8 +1292,6 @@ static int eth_enic_dev_init(struct rte_eth_dev
> *eth_dev,
>       enic->port_id = eth_dev->data->port_id;
>       enic->rte_dev = eth_dev;
>       enic->dev_data = eth_dev->data;
> -     /* Let rte_eth_dev_close() release the port resources */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       pdev = RTE_ETH_DEV_TO_PCI(eth_dev);
>       rte_eth_copy_pci_info(eth_dev, pdev);
> diff --git a/drivers/net/enic/enic_vf_representor.c
> b/drivers/net/enic/enic_vf_representor.c
> index c528be2b98..169c611a68 100644
> --- a/drivers/net/enic/enic_vf_representor.c
> +++ b/drivers/net/enic/enic_vf_representor.c
> @@ -670,8 +670,7 @@ int enic_vf_representor_init(struct rte_eth_dev
> *eth_dev, void *init_params)
> 
>       eth_dev->device->driver = pf->rte_dev->device->driver;
>       eth_dev->dev_ops = &enic_vf_representor_dev_ops;
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR
> -             | RTE_ETH_DEV_CLOSE_REMOVE;
> +     eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
>       eth_dev->data->representor_id = vf->vf_id;
>       eth_dev->data->mac_addrs = rte_zmalloc("enic_mac_addr_vf",
>               sizeof(struct rte_ether_addr) *
> diff --git a/drivers/net/failsafe/failsafe.c b/drivers/net/failsafe/failsafe.c
> index 44d47e8f72..b921e101e6 100644
> --- a/drivers/net/failsafe/failsafe.c
> +++ b/drivers/net/failsafe/failsafe.c
> @@ -180,7 +180,6 @@ fs_eth_dev_create(struct rte_vdev_device *vdev)
>               ERROR("Unable to allocate rte_eth_dev");
>               return -1;
>       }
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       priv = PRIV(dev);
>       priv->data = dev->data;
>       priv->rxp = FS_RX_PROXY_INIT;
> diff --git a/drivers/net/fm10k/fm10k_ethdev.c
> b/drivers/net/fm10k/fm10k_ethdev.c
> index 533f976709..23f4d04068 100644
> --- a/drivers/net/fm10k/fm10k_ethdev.c
> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> @@ -3129,11 +3129,6 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
>               &dev->data->mac_addrs[0]);
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Reset the hw statistics */
>       diag = fm10k_stats_reset(dev);
>       if (diag != 0) {
> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c
> b/drivers/net/hinic/hinic_pmd_ethdev.c
> index 5f2e97d3bd..623534fda4 100644
> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
> @@ -3100,12 +3100,6 @@ static int hinic_func_init(struct rte_eth_dev
> *eth_dev)
>               goto mc_addr_fail;
>       }
> 
> -     /*
> -      * Pass the information to the rte_eth_dev_close() that it should also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* create hardware nic_device */
>       rc = hinic_nic_dev_create(eth_dev);
>       if (rc) {
> diff --git a/drivers/net/hns3/hns3_ethdev.c
> b/drivers/net/hns3/hns3_ethdev.c index 3b395a1ccf..dd03bd62b2 100644
> --- a/drivers/net/hns3/hns3_ethdev.c
> +++ b/drivers/net/hns3/hns3_ethdev.c
> @@ -5678,11 +5678,6 @@ hns3_dev_init(struct rte_eth_dev *eth_dev)
>                           &eth_dev->data->mac_addrs[0]);
> 
>       hw->adapter_state = HNS3_NIC_INITIALIZED;
> -     /*
> -      * Pass the information to the rte_eth_dev_close() that it should also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       if (rte_atomic16_read(&hns->hw.reset.schedule) ==
> SCHEDULE_PENDING) {
>               hns3_err(hw, "Reschedule reset service after dev_init"); diff
> --git a/drivers/net/hns3/hns3_ethdev_vf.c
> b/drivers/net/hns3/hns3_ethdev_vf.c
> index e0ca5a6ac2..436d864b5f 100644
> --- a/drivers/net/hns3/hns3_ethdev_vf.c
> +++ b/drivers/net/hns3/hns3_ethdev_vf.c
> @@ -2684,11 +2684,6 @@ hns3vf_dev_init(struct rte_eth_dev *eth_dev)
>                           &eth_dev->data->mac_addrs[0]);
> 
>       hw->adapter_state = HNS3_NIC_INITIALIZED;
> -     /*
> -      * Pass the information to the rte_eth_dev_close() that it should also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       if (rte_atomic16_read(&hns->hw.reset.schedule) ==
> SCHEDULE_PENDING) {
>               hns3_err(hw, "Reschedule reset service after dev_init"); diff
> --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index 804f0128ab..6fb88148b8 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -1699,11 +1699,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void
> *init_params __rte_unused)
>       rte_ether_addr_copy((struct rte_ether_addr *)hw-
> >mac.perm_addr,
>                                       &dev->data->mac_addrs[0]);
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Init dcb to sw mode by default */
>       ret = i40e_dcb_init_configure(dev, TRUE);
>       if (ret != I40E_SUCCESS) {
> diff --git a/drivers/net/i40e/i40e_ethdev_vf.c
> b/drivers/net/i40e/i40e_ethdev_vf.c
> index 61aad8c415..4aaf41956c 100644
> --- a/drivers/net/i40e/i40e_ethdev_vf.c
> +++ b/drivers/net/i40e/i40e_ethdev_vf.c
> @@ -1586,11 +1586,6 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev)
>       hw->adapter_stopped = 1;
>       hw->adapter_closed = 0;
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       if(i40evf_init_vf(eth_dev) != 0) {
>               PMD_INIT_LOG(ERR, "Init vf failed");
>               return -1;
> diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
> index 8f46c4588f..512ade2ad0 100644
> --- a/drivers/net/iavf/iavf_ethdev.c
> +++ b/drivers/net/iavf/iavf_ethdev.c
> @@ -1412,11 +1412,6 @@ iavf_dev_init(struct rte_eth_dev *eth_dev)
>       adapter->eth_dev = eth_dev;
>       adapter->stopped = 1;
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       if (iavf_init_vf(eth_dev) != 0) {
>               PMD_INIT_LOG(ERR, "Init vf failed");
>               return -1;
> diff --git a/drivers/net/ice/ice_dcf_ethdev.c
> b/drivers/net/ice/ice_dcf_ethdev.c
> index 5b626cb641..33dd0c44f2 100644
> --- a/drivers/net/ice/ice_dcf_ethdev.c
> +++ b/drivers/net/ice/ice_dcf_ethdev.c
> @@ -908,8 +908,6 @@ ice_dcf_dev_init(struct rte_eth_dev *eth_dev)
>       if (rte_eal_process_type() != RTE_PROC_PRIMARY)
>               return 0;
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       adapter->real_hw.vc_event_msg_cb =
> ice_dcf_handle_pf_event_msg;
>       if (ice_dcf_init_hw(eth_dev, &adapter->real_hw) != 0) {
>               PMD_INIT_LOG(ERR, "Failed to init DCF hardware"); diff --git
> a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index
> b4ac5e3f81..85a3ca6a2d 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -2245,11 +2245,6 @@ ice_dev_init(struct rte_eth_dev *dev)
>               goto err_init_mac;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       ret = ice_res_pool_init(&pf->msix_pool, 1,
>                               hw-
> >func_caps.common_cap.num_msix_vectors - 1);
>       if (ret) {
> diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index
> 11397c5c1d..9d27fc0d07 100644
> --- a/drivers/net/igc/igc_ethdev.c
> +++ b/drivers/net/igc/igc_ethdev.c
> @@ -1323,11 +1323,6 @@ eth_igc_dev_init(struct rte_eth_dev *dev)
>               goto err_late;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       hw->mac.get_link_status = 1;
>       igc->stopped = 0;
> 
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c
> b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 5a863ca4bf..600e9d6928 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -1248,11 +1248,6 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev,
> void *init_params __rte_unused)
>               return -ENOMEM;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* initialize the vfta */
>       memset(shadow_vfta, 0, sizeof(*shadow_vfta));
> 
> @@ -1663,11 +1658,6 @@ eth_ixgbevf_dev_init(struct rte_eth_dev
> *eth_dev)
>               return -ENOMEM;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Generate a random MAC address, if none was assigned by PF. */
>       if (rte_is_zero_ether_addr(perm_addr)) {
>               generate_random_mac_addr(perm_addr);
> diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
> index aa365a57de..45ab1b17a8 100644
> --- a/drivers/net/kni/rte_eth_kni.c
> +++ b/drivers/net/kni/rte_eth_kni.c
> @@ -387,8 +387,6 @@ eth_kni_create(struct rte_vdev_device *vdev,
>       data->promiscuous = 1;
>       data->all_multicast = 1;
> 
> -     data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       rte_eth_random_addr(internals->eth_addr.addr_bytes);
> 
>       eth_dev->dev_ops = &eth_kni_ops;
> diff --git a/drivers/net/memif/rte_eth_memif.c
> b/drivers/net/memif/rte_eth_memif.c
> index 1a2411c838..ff8a58081f 100644
> --- a/drivers/net/memif/rte_eth_memif.c
> +++ b/drivers/net/memif/rte_eth_memif.c
> @@ -1527,9 +1527,6 @@ memif_create(struct rte_vdev_device *vdev,
> enum memif_role_t role,
>               eth_dev->tx_pkt_burst = eth_memif_tx;
>       }
> 
> -
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       rte_eth_dev_probing_finish(eth_dev);
> 
>       return 0;
> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index
> ad7c805d67..3e57875414 100644
> --- a/drivers/net/mlx4/mlx4.c
> +++ b/drivers/net/mlx4/mlx4.c
> @@ -1027,7 +1027,6 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv,
> struct rte_pci_device *pci_dev)
>                       ERROR("can not allocate rte ethdev");
>                       goto port_error;
>               }
> -             eth_dev->data->dev_flags |=
> RTE_ETH_DEV_CLOSE_REMOVE;
>               eth_dev->data->dev_private = priv;
>               eth_dev->data->mac_addrs = priv->mac;
>               eth_dev->device = &pci_dev->device;
> diff --git a/drivers/net/mlx5/linux/mlx5_os.c
> b/drivers/net/mlx5/linux/mlx5_os.c
> index 0511a55a28..8e498314ef 100644
> --- a/drivers/net/mlx5/linux/mlx5_os.c
> +++ b/drivers/net/mlx5/linux/mlx5_os.c
> @@ -1155,8 +1155,6 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
>               err = ENOMEM;
>               goto error;
>       }
> -     /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       if (priv->representor) {
>               eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR;
>               eth_dev->data->representor_id = priv->representor_id; diff
> --git a/drivers/net/mvneta/mvneta_ethdev.c
> b/drivers/net/mvneta/mvneta_ethdev.c
> index eebcdb840e..db142bec23 100644
> --- a/drivers/net/mvneta/mvneta_ethdev.c
> +++ b/drivers/net/mvneta/mvneta_ethdev.c
> @@ -834,9 +834,6 @@ mvneta_eth_dev_create(struct rte_vdev_device
> *vdev, const char *name)
>       mvneta_set_tx_function(eth_dev);
>       eth_dev->dev_ops = &mvneta_ops;
> 
> -     /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       rte_eth_dev_probing_finish(eth_dev);
>       return 0;
>  out_free:
> diff --git a/drivers/net/mvpp2/mrvl_ethdev.c
> b/drivers/net/mvpp2/mrvl_ethdev.c index 27f7cfb056..cfb97e4f8f 100644
> --- a/drivers/net/mvpp2/mrvl_ethdev.c
> +++ b/drivers/net/mvpp2/mrvl_ethdev.c
> @@ -2863,9 +2863,6 @@ mrvl_eth_dev_create(struct rte_vdev_device
> *vdev, const char *name)
>       mrvl_set_tx_function(eth_dev);
>       eth_dev->dev_ops = &mrvl_ops;
> 
> -     /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       rte_eth_dev_probing_finish(eth_dev);
>       return 0;
>  out_free:
> diff --git a/drivers/net/netvsc/hn_ethdev.c
> b/drivers/net/netvsc/hn_ethdev.c index 8968036ea3..15d6e9762d 100644
> --- a/drivers/net/netvsc/hn_ethdev.c
> +++ b/drivers/net/netvsc/hn_ethdev.c
> @@ -123,9 +123,6 @@ eth_dev_vmbus_allocate(struct rte_vmbus_device
> *dev, size_t private_data_size)
>       eth_dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC;
>       eth_dev->intr_handle = &dev->intr_handle;
> 
> -     /* allow ethdev to remove on close */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       return eth_dev;
>  }
> 
> diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c
> index c3c3d003f1..d937ac6922 100644
> --- a/drivers/net/nfb/nfb_ethdev.c
> +++ b/drivers/net/nfb/nfb_ethdev.c
> @@ -457,9 +457,6 @@ nfb_eth_dev_init(struct rte_eth_dev *dev)
>               rte_kvargs_free(kvlist);
>       }
> 
> -     /* Let rte_eth_dev_close() release the port resources */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /*
>        * Get number of available DMA RX and TX queues, which is
> maximum
>        * number of queues that can be created and store it in private
> device diff --git a/drivers/net/null/rte_eth_null.c
> b/drivers/net/null/rte_eth_null.c index 84c1d0c951..7c3c76a897 100644
> --- a/drivers/net/null/rte_eth_null.c
> +++ b/drivers/net/null/rte_eth_null.c
> @@ -548,7 +548,6 @@ eth_dev_null_create(struct rte_vdev_device *dev,
> struct pmd_options *args)
>       data->mac_addrs = &internals->eth_addr;
>       data->promiscuous = 1;
>       data->all_multicast = 1;
> -     data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       eth_dev->dev_ops = &ops;
> 
> diff --git a/drivers/net/octeontx/octeontx_ethdev.c
> b/drivers/net/octeontx/octeontx_ethdev.c
> index 48ce3e1621..a263f45399 100644
> --- a/drivers/net/octeontx/octeontx_ethdev.c
> +++ b/drivers/net/octeontx/octeontx_ethdev.c
> @@ -1374,7 +1374,6 @@ octeontx_create(struct rte_vdev_device *dev, int
> port, uint8_t evdev,
>       data->promiscuous = 0;
>       data->all_multicast = 0;
>       data->scattered_rx = 0;
> -     data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       /* Get maximum number of supported MAC entries */
>       max_entries = octeontx_bgx_port_mac_entries_get(nic->port_id);
> diff --git a/drivers/net/octeontx2/otx2_ethdev.c
> b/drivers/net/octeontx2/otx2_ethdev.c
> index abe5f03628..581ac89381 100644
> --- a/drivers/net/octeontx2/otx2_ethdev.c
> +++ b/drivers/net/octeontx2/otx2_ethdev.c
> @@ -2394,7 +2394,6 @@ otx2_eth_dev_init(struct rte_eth_dev *eth_dev)
>       pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
> 
>       rte_eth_copy_pci_info(eth_dev, pci_dev);
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       /* Zero out everything after OTX2_DEV to allow proper dev_reset()
> */
>       memset(&dev->otx2_eth_dev_data_start, 0, sizeof(*dev) - diff --git
> a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
> index 909eef8cce..da4988064a 100644
> --- a/drivers/net/pcap/rte_eth_pcap.c
> +++ b/drivers/net/pcap/rte_eth_pcap.c
> @@ -1334,7 +1334,6 @@ eth_from_pcaps(struct rte_vdev_device *vdev,
>       else
>               eth_dev->tx_pkt_burst = eth_tx_drop;
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       rte_eth_dev_probing_finish(eth_dev);
>       return 0;
>  }
> diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c
> index 55f2fea4b2..bb2ae0df34 100644
> --- a/drivers/net/pfe/pfe_ethdev.c
> +++ b/drivers/net/pfe/pfe_ethdev.c
> @@ -846,8 +846,6 @@ pfe_eth_init(struct rte_vdev_device *vdev, struct
> pfe *pfe, int id)
>       eth_dev->data->nb_rx_queues = 1;
>       eth_dev->data->nb_tx_queues = 1;
> 
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* For link status, open the PFE CDEV; Error from this function
>        * is silently ignored; In case of error, the link status will not
>        * be available.
> diff --git a/drivers/net/qede/qede_ethdev.c
> b/drivers/net/qede/qede_ethdev.c index 43fe68c2bf..cd578709fb 100644
> --- a/drivers/net/qede/qede_ethdev.c
> +++ b/drivers/net/qede/qede_ethdev.c
> @@ -2711,11 +2711,6 @@ static int qede_common_dev_init(struct
> rte_eth_dev *eth_dev, bool is_vf)
>               adapter->ipgre.enable = false;
>       }
> 
> -     /* Pass the information to the rte_eth_dev_close() that it should
> also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       DP_INFO(edev, "MAC
> address : %02x:%02x:%02x:%02x:%02x:%02x\n",
>               adapter->primary_mac.addr_bytes[0],
>               adapter->primary_mac.addr_bytes[1],
> diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
> index ed0fdeb28f..12046f5a00 100644
> --- a/drivers/net/ring/rte_eth_ring.c
> +++ b/drivers/net/ring/rte_eth_ring.c
> @@ -358,7 +358,6 @@ do_eth_dev_ring_create(const char *name,
> 
>       eth_dev->dev_ops = &ops;
>       data->numa_node = numa_node;
> -     data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       /* finally assign rx and tx ops */
>       eth_dev->rx_pkt_burst = eth_ring_rx;
> diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
> index eaa48627d6..1c72e40b75 100644
> --- a/drivers/net/sfc/sfc_ethdev.c
> +++ b/drivers/net/sfc/sfc_ethdev.c
> @@ -343,7 +343,7 @@ sfc_dev_close(struct rte_eth_dev *dev)
>       }
> 
>       /*
> -      * Cleanup all resources in accordance with
> RTE_ETH_DEV_CLOSE_REMOVE.
> +      * Cleanup all resources.
>        * Rollback primary process sfc_eth_dev_init() below.
>        */
> 
> @@ -2179,8 +2179,6 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)
> 
>       sfc_log_init(sa, "entry");
> 
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       dev->data->mac_addrs = rte_zmalloc("sfc", RTE_ETHER_ADDR_LEN,
> 0);
>       if (dev->data->mac_addrs == NULL) {
>               rc = ENOMEM;
> diff --git a/drivers/net/softnic/rte_eth_softnic.c
> b/drivers/net/softnic/rte_eth_softnic.c
> index ad9e2aa86d..e942df78b6 100644
> --- a/drivers/net/softnic/rte_eth_softnic.c
> +++ b/drivers/net/softnic/rte_eth_softnic.c
> @@ -390,7 +390,6 @@ pmd_ethdev_register(struct rte_vdev_device *vdev,
>       dev->device = &vdev->device;
> 
>       /* dev->data */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
>       dev->data->dev_private = dev_private;
>       dev->data->dev_link.link_speed = ETH_SPEED_NUM_100G;
>       dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX; diff --
> git a/drivers/net/szedata2/rte_eth_szedata2.c
> b/drivers/net/szedata2/rte_eth_szedata2.c
> index daa40cfd6c..4325b9a30d 100644
> --- a/drivers/net/szedata2/rte_eth_szedata2.c
> +++ b/drivers/net/szedata2/rte_eth_szedata2.c
> @@ -1488,9 +1488,6 @@ rte_szedata2_eth_dev_init(struct rte_eth_dev
> *dev, struct port_info *pi)
>       PMD_INIT_LOG(INFO, "Initializing eth_dev %s (driver %s)", data-
> >name,
>                       RTE_STR(RTE_SZEDATA2_DRIVER_NAME));
> 
> -     /* Let rte_eth_dev_close() release the port resources */
> -     dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Fill internal private structure. */
>       internals->dev = dev;
>       /* Get index of szedata2 device file and create path to device file */
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index 0d217f1486..b127ce62dc 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -1922,7 +1922,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev,
> const char *tap_name,
>       /* Setup some default values */
>       data = dev->data;
>       data->dev_private = pmd;
> -     data->dev_flags = RTE_ETH_DEV_INTR_LSC |
> RTE_ETH_DEV_CLOSE_REMOVE;
> +     data->dev_flags = RTE_ETH_DEV_INTR_LSC;
>       data->numa_node = numa_node;
> 
>       data->dev_link = pmd_link;
> diff --git a/drivers/net/vhost/rte_eth_vhost.c
> b/drivers/net/vhost/rte_eth_vhost.c
> index f67f4db812..45552ef742 100644
> --- a/drivers/net/vhost/rte_eth_vhost.c
> +++ b/drivers/net/vhost/rte_eth_vhost.c
> @@ -1443,7 +1443,7 @@ eth_dev_vhost_create(struct rte_vdev_device
> *dev, char *iface_name,
>       internal->flags = flags;
>       internal->disable_flags = disable_flags;
>       data->dev_link = pmd_link;
> -     data->dev_flags = RTE_ETH_DEV_INTR_LSC |
> RTE_ETH_DEV_CLOSE_REMOVE;
> +     data->dev_flags = RTE_ETH_DEV_INTR_LSC;
>       data->promiscuous = 1;
>       data->all_multicast = 1;
> 
> diff --git a/drivers/net/virtio/virtio_ethdev.c
> b/drivers/net/virtio/virtio_ethdev.c
> index 0787337a01..b6ed5829bd 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -1924,11 +1924,6 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
>       if (ret < 0)
>               return ret;
>       hw->speed = speed;
> -     /*
> -      * Pass the information to the rte_eth_dev_close() that it should also
> -      * release the private port resources.
> -      */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> 
>       /* Allocate memory for storing MAC addresses */
>       eth_dev->data->mac_addrs = rte_zmalloc("virtio", diff --git
> a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> index 17fed0ed6e..34a169d2c0 100644
> --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> @@ -321,9 +321,6 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
>                    hw->perm_addr[0], hw->perm_addr[1], hw-
> >perm_addr[2],
>                    hw->perm_addr[3], hw->perm_addr[4], hw-
> >perm_addr[5]);
> 
> -     /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */
> -     eth_dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE;
> -
>       /* Put device in Quiesce Mode */
>       VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD,
> VMXNET3_CMD_QUIESCE_DEV);
> 
> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
> index d12d74dd8c..d7668114ca 100644
> --- a/lib/librte_ethdev/rte_ethdev.c
> +++ b/lib/librte_ethdev/rte_ethdev.c
> @@ -1720,22 +1720,7 @@ rte_eth_dev_close(uint16_t port_id)
>       (*dev->dev_ops->dev_close)(dev);
> 
>       rte_ethdev_trace_close(port_id);
> -     /* check behaviour flag - temporary for PMD migration */
> -     if ((dev->data->dev_flags & RTE_ETH_DEV_CLOSE_REMOVE) != 0) {
> -             /* new behaviour: send event + reset state + free all data */
> -             rte_eth_dev_release_port(dev);
> -             return;
> -     }
> -     RTE_ETHDEV_LOG(DEBUG, "Port closing is using an old behaviour.\n"
> -                     "The driver %s should migrate to the new
> behaviour.\n",
> -                     dev->device->driver->name);
> -     /* old behaviour: only free queue arrays */
> -     dev->data->nb_rx_queues = 0;
> -     rte_free(dev->data->rx_queues);
> -     dev->data->rx_queues = NULL;
> -     dev->data->nb_tx_queues = 0;
> -     rte_free(dev->data->tx_queues);
> -     dev->data->tx_queues = NULL;
> +     rte_eth_dev_release_port(dev);
>  }
> 
>  int
> diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
> index 645a18664d..24d898ae89 100644
> --- a/lib/librte_ethdev/rte_ethdev.h
> +++ b/lib/librte_ethdev/rte_ethdev.h
> @@ -1654,11 +1654,6 @@ struct rte_eth_dev_owner {
>       char name[RTE_ETH_MAX_OWNER_NAME_LEN]; /**< The owner
> name. */  };
> 
> -/**
> - * Port is released (i.e. totally freed and data erased) on close.
> - * Temporary flag for PMD migration to new rte_eth_dev_close() behaviour.
> - */
> -#define RTE_ETH_DEV_CLOSE_REMOVE 0x0001
>  /** Device supports link state interrupt */
>  #define RTE_ETH_DEV_INTR_LSC     0x0002
>  /** Device is a bonded slave */
> @@ -2282,8 +2277,7 @@ int rte_eth_dev_set_link_down(uint16_t port_id);
> 
>  /**
>   * Close a stopped Ethernet device. The device cannot be restarted!
> - * The function frees all port resources if the driver supports
> - * the flag RTE_ETH_DEV_CLOSE_REMOVE.
> + * The function frees all port resources.
>   *
>   * @param port_id
>   *   The port identifier of the Ethernet device.
> --
> 2.28.0

Reply via email to