DPDK patches and discussions
 help / color / Atom feed
From: Thomas Monjalon <thomas@monjalon.net>
To: dev@dpdk.org
Cc: ferruh.yigit@intel.com,	arybchenko@solarflare.com,
	Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,
	Rosen Xu <rosen.xu@intel.com>,
	Shijith Thotton <sthotton@marvell.com>,
	Srisivasubramanian Srinivasan <srinivasan@marvell.com>,
	Rasesh Mody <rmody@marvell.com>,
	Shahed Shaikh <shshaikh@marvell.com>,
	Heinrich Kuhn <heinrich.kuhn@netronome.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	Sachin Saxena <sachin.saxena@nxp.com>,
	Gagandeep Singh <g.singh@nxp.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	Alfredo Cardigliano <cardigliano@ntop.org>,
	Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>,
	John McNamara <john.mcnamara@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>,
	"John W. Linville" <linville@tuxdriver.com>,
	Ciara Loftus <ciara.loftus@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	Shepard Siegel <shepard.siegel@atomicrules.com>,
	Ed Czeck <ed.czeck@atomicrules.com>,
	John Miller <john.miller@atomicrules.com>,
	Igor Russkikh <igor.russkikh@aquantia.com>,
	Pavel Belous <pavel.belous@aquantia.com>,
	Steven Webster <steven.webster@windriver.com>,
	Matt Peters <matt.peters@windriver.com>,
	Somalapuram Amaranath <asomalap@amd.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>,
	Chas Williams <chas3@att.com>,
	"Wei Hu (Xavier)" <xavier.huwei@huawei.com>,
	Wei Zhao <wei.zhao1@intel.com>,	Jeff Guo <jia.guo@intel.com>,
	Marcin Wojtas <mw@semihalf.com>,
	Michal Krawczyk <mk@semihalf.com>,
	Guy Tzalik <gtzalik@amazon.com>,
	Evgeny Schemeilin <evgenys@amazon.com>,
	Igor Chauskin <igorch@amazon.com>,
	John Daley <johndale@cisco.com>,
	Hyong Youb Kim <hyonkim@cisco.com>,	Gaetan Rivet <grive@u256.net>,
	Xiao Wang <xiao.w.wang@intel.com>,
	Ziyang Xuan <xuanziyang2@huawei.com>,
	Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>,
	Guoyang Zhou <zhouguoyang@huawei.com>,
	"Min Hu (Connor)" <humin29@huawei.com>,
	Yisen Zhuang <yisen.zhuang@huawei.com>,
	Beilei Xing <beilei.xing@intel.com>,
	Jingjing Wu <jingjing.wu@intel.com>,
	Qiming Yang <qiming.yang@intel.com>,
	Jakub Grajciar <jgrajcia@cisco.com>,
	Matan Azrad <matan@mellanox.com>,
	Shahaf Shuler <shahafs@mellanox.com>,
	Viacheslav Ovsiienko <viacheslavo@mellanox.com>,
	Zyta Szpak <zr@semihalf.com>,	Liron Himi <lironh@marvell.com>,
	Stephen Hemminger <sthemmin@microsoft.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Long Li <longli@microsoft.com>,
	Martin Spinler <spinler@cesnet.cz>,
	Tetsuya Mukawa <mtetsuyah@gmail.com>,
	Harman Kalra <hkalra@marvell.com>,
	Jerin Jacob <jerinj@marvell.com>,
	Nithin Dabilpuram <ndabilpuram@marvell.com>,
	Kiran Kumar K <kirankumark@marvell.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Jasvinder Singh <jasvinder.singh@intel.com>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>,
	Keith Wiles <keith.wiles@intel.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	Chenbo Xia <chenbo.xia@intel.com>,
	Zhihong Wang <zhihong.wang@intel.com>,
	Yong Wang <yongwang@vmware.com>
Subject: [dpdk-dev] [PATCH 16/20] ethdev: remove old close behaviour
Date: Mon, 14 Sep 2020 00:07:07 +0200
Message-ID: <20200913220711.3768597-17-thomas@monjalon.net> (raw)
In-Reply-To: <20200913220711.3768597-1-thomas@monjalon.net>

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:
	bnx2x, cxgbe, dpaa, dpaa2, enetc, ionic,
	ipn3ke,	liquidio, nfp, pfe, qede
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: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Cc: Rosen Xu <rosen.xu@intel.com>
Cc: Shijith Thotton <sthotton@marvell.com>
Cc: Srisivasubramanian Srinivasan <srinivasan@marvell.com>
Cc: Rasesh Mody <rmody@marvell.com>
Cc: Shahed Shaikh <shshaikh@marvell.com>
Cc: Heinrich Kuhn <heinrich.kuhn@netronome.com>
Cc: Hemant Agrawal <hemant.agrawal@nxp.com>
Cc: Sachin Saxena <sachin.saxena@nxp.com>
Cc: Gagandeep Singh <g.singh@nxp.com>
Cc: Akhil Goyal <akhil.goyal@nxp.com>
Cc: Alfredo Cardigliano <cardigliano@ntop.org>

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 MAINTAINERS                               | 22 +++++++++++-----------
 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/bnxt/bnxt_ethdev.c            |  5 -----
 drivers/net/bnxt/bnxt_reps.c              |  4 ----
 drivers/net/bonding/rte_eth_bond_pmd.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/enic/enic_ethdev.c            |  2 --
 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/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 +-------
 49 files changed, 16 insertions(+), 184 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 3b16d7a4b8..98aa24412e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -605,7 +605,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 <sthotton@marvell.com>
 M: Srisivasubramanian Srinivasan <srinivasan@marvell.com>
 T: git://dpdk.org/next/dpdk-next-net-mrvl
@@ -622,7 +622,7 @@ F: drivers/net/octeontx/
 F: doc/guides/nics/octeontx.rst
 F: doc/guides/nics/features/octeontx.ini
 
-Chelsio cxgbe
+Chelsio cxgbe - UNMAINTAINED
 M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
 F: drivers/net/cxgbe/
 F: doc/guides/nics/cxgbe.rst
@@ -711,7 +711,7 @@ F: drivers/net/igc/
 F: doc/guides/nics/igc.rst
 F: doc/guides/nics/features/igc.ini
 
-Intel ipn3ke
+Intel ipn3ke - UNMAINTAINED
 M: Rosen Xu <rosen.xu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ipn3ke/
@@ -794,13 +794,13 @@ 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.kuhn@netronome.com>
 F: drivers/net/nfp/
 F: doc/guides/nics/nfp.rst
 F: doc/guides/nics/features/nfp*.ini
 
-NXP dpaa
+NXP dpaa - UNMAINTAINED
 M: Hemant Agrawal <hemant.agrawal@nxp.com>
 M: Sachin Saxena <sachin.saxena@nxp.com>
 F: drivers/mempool/dpaa/
@@ -808,7 +808,7 @@ F: drivers/net/dpaa/
 F: doc/guides/nics/dpaa.rst
 F: doc/guides/nics/features/dpaa.ini
 
-NXP dpaa2
+NXP dpaa2 - UNMAINTAINED
 M: Hemant Agrawal <hemant.agrawal@nxp.com>
 M: Sachin Saxena <sachin.saxena@nxp.com>
 F: drivers/mempool/dpaa2/
@@ -816,27 +816,27 @@ F: drivers/net/dpaa2/
 F: doc/guides/nics/dpaa2.rst
 F: doc/guides/nics/features/dpaa2.ini
 
-NXP enetc
+NXP enetc - UNMAINTAINED
 M: Gagandeep Singh <g.singh@nxp.com>
 M: Sachin Saxena <sachin.saxena@nxp.com>
 F: drivers/net/enetc/
 F: doc/guides/nics/enetc.rst
 F: doc/guides/nics/features/enetc.ini
 
-NXP pfe
+NXP pfe - UNMAINTAINED
 M: Gagandeep Singh <g.singh@nxp.com>
 M: Akhil Goyal <akhil.goyal@nxp.com>
 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 <cardigliano@ntop.org>
 F: drivers/net/ionic/
 F: doc/guides/nics/ionic.rst
 F: doc/guides/nics/features/ionic.ini
 
-QLogic bnx2x
+QLogic bnx2x - UNMAINTAINED
 M: Rasesh Mody <rmody@marvell.com>
 M: Shahed Shaikh <shshaikh@marvell.com>
 T: git://dpdk.org/next/dpdk-next-net-mrvl
@@ -844,7 +844,7 @@ F: drivers/net/bnx2x/
 F: doc/guides/nics/bnx2x.rst
 F: doc/guides/nics/features/bnx2x*.ini
 
-QLogic qede PMD
+QLogic qede PMD - UNMAINTAINED
 M: Rasesh Mody <rmody@marvell.com>
 M: Shahed Shaikh <shshaikh@marvell.com>
 T: git://dpdk.org/next/dpdk-next-net-mrvl
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 88d7d07613..a9d937a43c 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -189,12 +189,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 3ab6f4d388..ff222c3dac 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 bac9729bf8..2eabc6437f 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -1269,8 +1269,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 9e1f8218a8..8012af75ee 100644
--- a/drivers/net/ark/ark_ethdev.c
+++ b/drivers/net/ark/ark_ethdev.c
@@ -261,8 +261,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 16721a011f..751c81b9c1 100644
--- a/drivers/net/atlantic/atl_ethdev.c
+++ b/drivers/net/atlantic/atl_ethdev.c
@@ -379,8 +379,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 c5e70ea0a1..246e09016c 100644
--- a/drivers/net/axgbe/axgbe_ethdev.c
+++ b/drivers/net/axgbe/axgbe_ethdev.c
@@ -1623,7 +1623,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;
 
 	/*
 	 * For secondary processes, we don't initialise any further as primary
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 02e53bf04d..c580aff96b 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -5744,11 +5744,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 fa014125e3..ceb0604216 100644
--- a/drivers/net/bnxt/bnxt_reps.c
+++ b/drivers/net/bnxt/bnxt_reps.c
@@ -186,10 +186,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 726b47055b..f9603d16a5 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/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 45d3949ff7..7d592e0313 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 564216b0a4..c7b2244890 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -844,11 +844,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 ea979fddd1..9d91ff0708 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/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c
index b14ed00085..0674c668b4 100644
--- a/drivers/net/enic/enic_ethdev.c
+++ b/drivers/net/enic/enic_ethdev.c
@@ -1293,8 +1293,6 @@ static int eth_enicpmd_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/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 82f46cebf5..22e68be448 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -3132,11 +3132,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 96806afd87..bc853c6a8f 100644
--- a/drivers/net/hns3/hns3_ethdev.c
+++ b/drivers/net/hns3/hns3_ethdev.c
@@ -5528,11 +5528,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 b732bbc732..7b97259c5e 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -2576,11 +2576,6 @@ hns3vf_dev_init(struct rte_eth_dev *eth_dev)
 	rte_ether_addr_copy((struct rte_ether_addr *)hw->mac.mac_addr,
 			    &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 8dccb513d4..dd8214d7be 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 104eef639d..63dcff841e 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1543,11 +1543,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 f7552f33db..2a64204689 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1362,11 +1362,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 042ee6def0..f0cb05cbc9 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2206,11 +2206,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 99014a369c..a9dda1f781 100644
--- a/drivers/net/igc/igc_ethdev.c
+++ b/drivers/net/igc/igc_ethdev.c
@@ -1324,11 +1324,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 5c12a575c2..195383ce1f 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -1251,11 +1251,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 c00b9702a9..666dec77c6 100644
--- a/drivers/net/memif/rte_eth_memif.c
+++ b/drivers/net/memif/rte_eth_memif.c
@@ -1512,9 +1512,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 69123e12c3..7fce24cafc 100644
--- a/drivers/net/mlx5/linux/mlx5_os.c
+++ b/drivers/net/mlx5/linux/mlx5_os.c
@@ -1136,8 +1136,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 b13e2c52f3..f0a52e29fd 100644
--- a/drivers/net/mvneta/mvneta_ethdev.c
+++ b/drivers/net/mvneta/mvneta_ethdev.c
@@ -835,9 +835,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 b40169daba..e115e7d0c1 100644
--- a/drivers/net/mvpp2/mrvl_ethdev.c
+++ b/drivers/net/mvpp2/mrvl_ethdev.c
@@ -2864,9 +2864,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 f02f546882..c4a2dd9f4a 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 33997013e4..ab7ebe3ddc 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -545,7 +545,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 6713c51504..328551b60f 100644
--- a/drivers/net/octeontx/octeontx_ethdev.c
+++ b/drivers/net/octeontx/octeontx_ethdev.c
@@ -1375,7 +1375,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 d9bcf004c6..ca320047f6 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 a946fa9a1a..fbbad5cbd1 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/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index afe3ec46cc..8ed53c64af 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -356,7 +356,6 @@ do_eth_dev_ring_create(const char *name,
 	eth_dev->dev_ops = &ops;
 	data->kdrv = RTE_KDRV_NONE;
 	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 f1b857358c..b609d808d7 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 5b94e250d8..0e5ec0cdf0 100644
--- a/drivers/net/softnic/rte_eth_softnic.c
+++ b/drivers/net/softnic/rte_eth_softnic.c
@@ -387,7 +387,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 2e325f55aa..99f6dc118c 100644
--- a/drivers/net/tap/rte_eth_tap.c
+++ b/drivers/net/tap/rte_eth_tap.c
@@ -1876,7 +1876,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 fb3b9ce043..36baf8f881 100644
--- a/drivers/net/vhost/rte_eth_vhost.c
+++ b/drivers/net/vhost/rte_eth_vhost.c
@@ -1444,7 +1444,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 1731fc6750..735c579a86 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1923,11 +1923,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 4efb48350c..221f771023 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 3617f39ca0..f1b0bdd3bc 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 70295d7ab7..f9775c2524 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -1621,11 +1621,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 */
@@ -2250,8 +2245,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


  parent reply index

Thread overview: 201+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-13 22:06 [dpdk-dev] [PATCH 00/20] cleanup ethdev close operation Thomas Monjalon
2020-09-13 22:06 ` [dpdk-dev] [PATCH 01/20] ethdev: reset device and interrupt pointers on release Thomas Monjalon
2020-09-23 16:41   ` Ferruh Yigit
2020-09-13 22:06 ` [dpdk-dev] [PATCH 02/20] ethdev: allow drivers to return error on close Thomas Monjalon
2020-09-23 16:41   ` Ferruh Yigit
2020-09-23 20:53     ` Thomas Monjalon
2020-09-23 21:02       ` Stephen Hemminger
2020-09-23 21:06         ` Thomas Monjalon
2020-09-23 21:47           ` Stephen Hemminger
2020-09-23 21:52             ` Thomas Monjalon
2020-09-23 22:02               ` Stephen Hemminger
2020-09-23 22:35                 ` Thomas Monjalon
2020-09-24  9:12                   ` Bruce Richardson
2020-09-24 10:07                     ` Thomas Monjalon
2020-09-24 12:09                       ` Ferruh Yigit
2020-09-24 14:48                     ` Stephen Hemminger
2020-09-13 22:06 ` [dpdk-dev] [PATCH 03/20] net/af_packet: release port upon close Thomas Monjalon
2020-09-23 16:41   ` Ferruh Yigit
2020-09-13 22:06 ` [dpdk-dev] [PATCH 04/20] net/atlantic: " Thomas Monjalon
2020-09-16 15:14   ` Igor Russkikh
2020-09-23 16:42   ` Ferruh Yigit
2020-09-23 20:50     ` Thomas Monjalon
2020-09-13 22:06 ` [dpdk-dev] [PATCH 05/20] net/axgbe: " Thomas Monjalon
2020-09-13 22:06 ` [dpdk-dev] [PATCH 06/20] net/bonding: " Thomas Monjalon
2020-09-13 22:06 ` [dpdk-dev] [PATCH 07/20] net/failsafe: " Thomas Monjalon
2020-09-23 21:24   ` Thomas Monjalon
2020-09-13 22:06 ` [dpdk-dev] [PATCH 08/20] net/iavf: " Thomas Monjalon
2020-09-13 22:07 ` [dpdk-dev] [PATCH 09/20] net/mlx4: " Thomas Monjalon
2020-09-13 22:07 ` [dpdk-dev] [PATCH 10/20] net/null: " Thomas Monjalon
2020-09-23 16:44   ` Ferruh Yigit
2020-09-23 20:47     ` Thomas Monjalon
2020-09-24 21:58       ` Thomas Monjalon
2020-09-25  8:52         ` Ferruh Yigit
2020-09-25 13:13           ` Thomas Monjalon
2020-09-13 22:07 ` [dpdk-dev] [PATCH 11/20] net/octeontx: " Thomas Monjalon
2020-09-13 22:07 ` [dpdk-dev] [PATCH 12/20] net/pcap: " Thomas Monjalon
2020-09-23 16:44   ` Ferruh Yigit
2020-09-23 20:44     ` Thomas Monjalon
2020-09-24 11:56       ` Ferruh Yigit
2020-09-13 22:07 ` [dpdk-dev] [PATCH 13/20] net/ring: " Thomas Monjalon
2020-09-14  8:51   ` Bruce Richardson
2020-09-13 22:07 ` [dpdk-dev] [PATCH 14/20] net/softnic: " Thomas Monjalon
2020-09-14 15:21   ` Dumitrescu, Cristian
2020-09-13 22:07 ` [dpdk-dev] [PATCH 15/20] net/tap: " Thomas Monjalon
2020-09-13 22:07 ` Thomas Monjalon [this message]
2020-09-23 16:44   ` [dpdk-dev] [PATCH 16/20] ethdev: remove old close behaviour Ferruh Yigit
2020-09-23 20:41     ` Thomas Monjalon
2020-09-24 12:00       ` Ferruh Yigit
2020-09-25  4:31     ` Rasesh Mody
2020-09-13 22:07 ` [dpdk-dev] [PATCH 17/20] drivers/net: accept removing device without any port Thomas Monjalon
2020-09-23 16:45   ` Ferruh Yigit
2020-09-27  6:25   ` Xu, Rosen
2020-09-13 22:07 ` [dpdk-dev] [PATCH 18/20] drivers/net: remove redundant MAC addresses freeing Thomas Monjalon
2020-09-23 16:45   ` Ferruh Yigit
2020-09-13 22:07 ` [dpdk-dev] [PATCH 19/20] app/testpmd: reset port status on close notification Thomas Monjalon
2020-09-23 16:45   ` Ferruh Yigit
2020-09-23 20:32     ` Thomas Monjalon
2020-09-24 12:07       ` Ferruh Yigit
2020-09-24 12:17         ` Thomas Monjalon
2020-09-24 13:06           ` Ferruh Yigit
2020-09-13 22:07 ` [dpdk-dev] [PATCH 20/20] app/testpmd: align behaviour of multi-port detach Thomas Monjalon
2020-09-23 16:44 ` [dpdk-dev] [PATCH 00/20] cleanup ethdev close operation Ferruh Yigit
2020-09-27 23:42 ` [dpdk-dev] [PATCH v2 00/25] " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 01/25] ethdev: reset device and interrupt pointers on release Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 02/25] ethdev: allow drivers to return error on close Thomas Monjalon
2020-09-28  0:46     ` Xu, Rosen
2020-09-28  9:51     ` Sachin Saxena (OSS)
2020-09-28 18:26     ` [dpdk-dev] [EXT] " Liron Himi
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 03/25] net/af_packet: release port upon close Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 04/25] net/atlantic: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 05/25] net/axgbe: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 06/25] net/bnx2x: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 07/25] net/bonding: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 08/25] net/failsafe: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 09/25] net/mlx4: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 10/25] net/null: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 11/25] net/octeontx: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 12/25] net/pcap: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 13/25] net/qede: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 14/25] net/ring: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 15/25] net/softnic: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 16/25] net/tap: " Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 17/25] ethdev: remove old close behaviour Thomas Monjalon
2020-09-28 18:25     ` [dpdk-dev] [EXT] " Liron Himi
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 18/25] drivers/net: accept removing device without any port Thomas Monjalon
2020-09-28  0:47     ` Xu, Rosen
2020-09-28  9:54     ` Sachin Saxena (OSS)
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 19/25] drivers/net: check process type in close operation Thomas Monjalon
2020-09-27 23:52     ` Thomas Monjalon
2020-09-28  0:50     ` Xu, Rosen
2020-09-28  9:55     ` Sachin Saxena (OSS)
2020-09-28 14:57       ` Ajit Khaparde
2020-09-28 18:25     ` [dpdk-dev] [EXT] " Liron Himi
2020-09-28 18:51     ` [dpdk-dev] " Stephen Hemminger
2020-09-28 20:57       ` Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 20/25] drivers/net: remove redundant MAC addresses freeing Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 21/25] app/testpmd: reset port status on close notification Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 22/25] app/testpmd: align behaviour of multi-port detach Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 23/25] ethdev: remove forcing stopped state upon close Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 24/25] ethdev: reset all when releasing a port Thomas Monjalon
2020-09-27 23:42   ` [dpdk-dev] [PATCH v2 25/25] ethdev: allow close function to return an error Thomas Monjalon
2020-09-28 18:24     ` [dpdk-dev] [EXT] " Liron Himi
2020-09-28 23:14 ` [dpdk-dev] [PATCH v3 00/29] cleanup ethdev close operation Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 01/29] ethdev: reset device and interrupt pointers on release Thomas Monjalon
2020-09-29 10:52     ` Andrew Rybchenko
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 02/29] ethdev: allow drivers to return error on close Thomas Monjalon
2020-09-29  2:16     ` Wang, Haiyue
2020-09-29  5:56     ` Guo, Jia
2020-09-29 10:53     ` Andrew Rybchenko
2020-09-30 12:12       ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 03/29] net/af_packet: release port upon close Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 04/29] net/atlantic: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 05/29] net/axgbe: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 06/29] net/bnx2x: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 07/29] net/bonding: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 08/29] net/dpaa: " Thomas Monjalon
2020-09-29  4:53     ` Hemant Agrawal
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 09/29] net/dpaa2: " Thomas Monjalon
2020-09-29  4:53     ` Hemant Agrawal
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 10/29] net/enetc: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 11/29] net/failsafe: " Thomas Monjalon
2020-10-05 10:19     ` Gaëtan Rivet
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 12/29] net/mlx4: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 13/29] net/null: " Thomas Monjalon
2020-09-29 16:47     ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 14/29] net/octeontx: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 15/29] net/pcap: " Thomas Monjalon
2020-09-29 16:49     ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 16/29] net/pfe: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 17/29] net/qede: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 18/29] net/ring: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 19/29] net/softnic: " Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 20/29] net/tap: " Thomas Monjalon
2020-09-30  8:34     ` wangyunjian
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 21/29] ethdev: remove old close behaviour Thomas Monjalon
2020-09-29  2:27     ` Wang, Haiyue
2020-09-29  5:55     ` Guo, Jia
2020-09-29 10:38     ` Andrew Rybchenko
2020-09-29 17:08     ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 22/29] drivers/net: accept removing device without any port Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 23/29] drivers/net: check process type in close operation Thomas Monjalon
2020-09-29  2:39     ` Wang, Haiyue
2020-09-29  5:53     ` Guo, Jia
2020-09-29 10:42     ` Andrew Rybchenko
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 24/29] drivers/net: remove redundant MAC addresses freeing Thomas Monjalon
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 25/29] app/testpmd: reset port status on close notification Thomas Monjalon
2020-09-30 12:15     ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 26/29] app/testpmd: align behaviour of multi-port detach Thomas Monjalon
2020-09-30 12:17     ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 27/29] ethdev: remove forcing stopped state upon close Thomas Monjalon
2020-09-29 10:44     ` Andrew Rybchenko
2020-09-29 16:01     ` Ferruh Yigit
2020-09-29 16:06       ` Thomas Monjalon
2020-09-29 16:39         ` Ferruh Yigit
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 28/29] ethdev: reset all when releasing a port Thomas Monjalon
2020-09-29  2:34     ` Wang, Haiyue
2020-09-29  5:51     ` Guo, Jia
2020-09-29 10:26     ` Maxime Coquelin
2020-09-29 10:36       ` Thomas Monjalon
2020-09-29 11:58         ` Wang, Haiyue
2020-09-29 15:50           ` Ferruh Yigit
2020-09-29 16:02             ` Thomas Monjalon
2020-09-29 16:35               ` Ferruh Yigit
2020-09-30 12:17                 ` Ferruh Yigit
2020-09-29 10:50     ` Andrew Rybchenko
2020-09-28 23:14   ` [dpdk-dev] [PATCH v3 29/29] ethdev: allow close function to return an error Thomas Monjalon
2020-09-29 11:05     ` Andrew Rybchenko
2020-09-29 11:47       ` Thomas Monjalon
2020-09-29 11:54         ` Andrew Rybchenko
2020-09-28 23:33   ` [dpdk-dev] [PATCH v3 00/29] cleanup ethdev close operation Stephen Hemminger
2020-09-30 12:22   ` Ferruh Yigit
2020-10-05 17:08 ` [dpdk-dev] [PATCH v4 0/3] " Thomas Monjalon
2020-10-05 17:08   ` [dpdk-dev] [PATCH v4 1/3] ethdev: remove forcing stopped state upon close Thomas Monjalon
2020-10-05 17:08   ` [dpdk-dev] [PATCH v4 2/3] ethdev: reset all when releasing a port Thomas Monjalon
2020-10-05 17:08   ` [dpdk-dev] [PATCH v4 3/3] ethdev: allow close function to return an error Thomas Monjalon
2020-10-06  9:43     ` Ferruh Yigit
2020-10-06 10:57       ` Thomas Monjalon
2020-10-13  8:40         ` Andrew Rybchenko
2020-10-13  8:55           ` Thomas Monjalon
2020-10-13  9:33             ` Ferruh Yigit
2020-10-13 10:06 ` [dpdk-dev] [PATCH v5 0/3] cleanup ethdev close operation Thomas Monjalon
2020-10-13 10:06   ` [dpdk-dev] [PATCH v5 1/3] ethdev: remove forcing stopped state upon close Thomas Monjalon
2020-10-13 12:36     ` Ferruh Yigit
2020-10-13 12:49       ` Thomas Monjalon
2020-10-13 12:45     ` Ferruh Yigit
2020-10-13 12:51       ` Thomas Monjalon
2020-10-13 17:54         ` Ferruh Yigit
2020-10-13 17:59           ` Thomas Monjalon
2020-10-13 10:06   ` [dpdk-dev] [PATCH v5 2/3] ethdev: reset all when releasing a port Thomas Monjalon
2020-10-13 13:10     ` Ferruh Yigit
2020-10-13 10:06   ` [dpdk-dev] [PATCH v5 3/3] ethdev: allow close function to return an error Thomas Monjalon
2020-10-13 10:41     ` Andrew Rybchenko
2020-10-13 10:43       ` Thomas Monjalon
2020-10-13 13:10     ` Ferruh Yigit
2020-10-16 13:32 ` [dpdk-dev] [PATCH v6 0/3] cleanup ethdev close operation Thomas Monjalon
2020-10-16 13:32   ` [dpdk-dev] [PATCH v6 1/3] ethdev: remove forcing stopped state upon close Thomas Monjalon
2020-10-16 13:32   ` [dpdk-dev] [PATCH v6 2/3] ethdev: reset all when releasing a port Thomas Monjalon
2020-10-16 15:21     ` Ajit Khaparde
2020-10-16 13:32   ` [dpdk-dev] [PATCH v6 3/3] ethdev: allow close function to return an error Thomas Monjalon
2020-10-16 17:55   ` [dpdk-dev] [PATCH v6 0/3] cleanup ethdev close operation Ferruh Yigit
2020-10-20 12:24     ` Bruce Richardson

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200913220711.3768597-17-thomas@monjalon.net \
    --to=thomas@monjalon.net \
    --cc=ajit.khaparde@broadcom.com \
    --cc=akhil.goyal@nxp.com \
    --cc=arybchenko@solarflare.com \
    --cc=asomalap@amd.com \
    --cc=beilei.xing@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=cardigliano@ntop.org \
    --cc=chas3@att.com \
    --cc=chenbo.xia@intel.com \
    --cc=ciara.loftus@intel.com \
    --cc=cloud.wangxiaoyun@huawei.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    --cc=ed.czeck@atomicrules.com \
    --cc=evgenys@amazon.com \
    --cc=ferruh.yigit@intel.com \
    --cc=g.singh@nxp.com \
    --cc=grive@u256.net \
    --cc=gtzalik@amazon.com \
    --cc=haiyangz@microsoft.com \
    --cc=heinrich.kuhn@netronome.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=hkalra@marvell.com \
    --cc=humin29@huawei.com \
    --cc=hyonkim@cisco.com \
    --cc=igor.russkikh@aquantia.com \
    --cc=igorch@amazon.com \
    --cc=jasvinder.singh@intel.com \
    --cc=jerinj@marvell.com \
    --cc=jgrajcia@cisco.com \
    --cc=jia.guo@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=john.miller@atomicrules.com \
    --cc=johndale@cisco.com \
    --cc=keith.wiles@intel.com \
    --cc=kirankumark@marvell.com \
    --cc=kys@microsoft.com \
    --cc=linville@tuxdriver.com \
    --cc=lironh@marvell.com \
    --cc=longli@microsoft.com \
    --cc=marko.kovacevic@intel.com \
    --cc=matan@mellanox.com \
    --cc=matt.peters@windriver.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mdr@ashroe.eu \
    --cc=mk@semihalf.com \
    --cc=mtetsuyah@gmail.com \
    --cc=mw@semihalf.com \
    --cc=ndabilpuram@marvell.com \
    --cc=nhorman@tuxdriver.com \
    --cc=pavel.belous@aquantia.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rmody@marvell.com \
    --cc=rosen.xu@intel.com \
    --cc=sachin.saxena@nxp.com \
    --cc=shahafs@mellanox.com \
    --cc=shepard.siegel@atomicrules.com \
    --cc=shshaikh@marvell.com \
    --cc=somnath.kotur@broadcom.com \
    --cc=spinler@cesnet.cz \
    --cc=srinivasan@marvell.com \
    --cc=steven.webster@windriver.com \
    --cc=sthemmin@microsoft.com \
    --cc=sthotton@marvell.com \
    --cc=viacheslavo@mellanox.com \
    --cc=wei.zhao1@intel.com \
    --cc=xavier.huwei@huawei.com \
    --cc=xiao.w.wang@intel.com \
    --cc=xuanziyang2@huawei.com \
    --cc=yisen.zhuang@huawei.com \
    --cc=yongwang@vmware.com \
    --cc=zhihong.wang@intel.com \
    --cc=zhouguoyang@huawei.com \
    --cc=zr@semihalf.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

DPDK patches and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox