From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 306EFA04C0; Tue, 29 Sep 2020 07:55:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 04E701D734; Tue, 29 Sep 2020 07:55:53 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id BB4361D733 for ; Tue, 29 Sep 2020 07:55:50 +0200 (CEST) IronPort-SDR: KTaF/QaXzJZPoXrJHkcOPPmytRvKqI2RQtFy344B+iMpUROVQlwcgQQp7vGWMatqvS1T/HmTjm 2jYXw774YeAQ== X-IronPort-AV: E=McAfee;i="6000,8403,9758"; a="162183538" X-IronPort-AV: E=Sophos;i="5.77,317,1596524400"; d="scan'208";a="162183538" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Sep 2020 22:55:48 -0700 IronPort-SDR: 9UQJYOBT5CNnaFw4qX8YNfgVKSML14TiaUDp0+Nu/Lv+bQjsWRhzzAIKqSiT8ZLDRLHpRiW/dR QGARVQugf5/g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,317,1596524400"; d="scan'208";a="513723938" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga006.fm.intel.com with ESMTP; 28 Sep 2020 22:55:47 -0700 Received: from shsmsx606.ccr.corp.intel.com (10.109.6.216) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 28 Sep 2020 22:55:46 -0700 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX606.ccr.corp.intel.com (10.109.6.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 29 Sep 2020 13:55:44 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.1713.004; Tue, 29 Sep 2020 13:55:44 +0800 From: "Guo, Jia" To: Thomas Monjalon , "dev@dpdk.org" CC: "Yigit, Ferruh" , "arybchenko@solarflare.com" , Shijith Thotton , Srisivasubramanian Srinivasan , Heinrich Kuhn , Alfredo Cardigliano , Liron Himi , Ray Kinsella , Neil Horman , "John W. Linville" , "Loftus, Ciara" , "Zhang, Qi Z" , Shepard Siegel , "Ed Czeck" , John Miller , Igor Russkikh , Pavel Belous , Steven Webster , Matt Peters , Somalapuram Amaranath , Rasesh Mody , Shahed Shaikh , Ajit Khaparde , "Somnath Kotur" , Chas Williams , "Wei Hu (Xavier)" , Rahul Lakkireddy , Hemant Agrawal , Sachin Saxena , "Wang, Haiyue" , Marcin Wojtas , Michal Krawczyk , Guy Tzalik , Evgeny Schemeilin , Igor Chauskin , Gagandeep Singh , John Daley , Hyong Youb Kim , Gaetan Rivet , "Wang, Xiao W" , Ziyang Xuan , Xiaoyun Wang , Guoyang Zhou , "Min Hu (Connor)" , Yisen Zhuang , "Xing, Beilei" , "Wu, Jingjing" , "Yang, Qiming" , "Jakub Grajciar" , Matan Azrad , Shahaf Shuler , Viacheslav Ovsiienko , "Zyta Szpak" , Stephen Hemminger , "K. Y. Srinivasan" , Haiyang Zhang , Long Li , Martin Spinler , "Tetsuya Mukawa" , Harman Kalra , Jerin Jacob , Nithin Dabilpuram , "Kiran Kumar K" , Akhil Goyal , "Richardson, Bruce" , "Singh, Jasvinder" , "Dumitrescu, Cristian" , "Wiles, Keith" , Maxime Coquelin , "Xia, Chenbo" , "Wang, Zhihong" , Yong Wang Thread-Topic: [PATCH v3 21/29] ethdev: remove old close behaviour Thread-Index: AQHWle1OF4SbVx1vdk+cNTDw8OdFyal/Hm7w Date: Tue, 29 Sep 2020 05:55:44 +0000 Message-ID: References: <20200913220711.3768597-1-thomas@monjalon.net> <20200928231437.414489-1-thomas@monjalon.net> <20200928231437.414489-22-thomas@monjalon.net> In-Reply-To: <20200928231437.414489-22-thomas@monjalon.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3 21/29] ethdev: remove old close behaviour X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" For drivers/net/i40e, Acked-by: Jeff Guo > -----Original Message----- > From: Thomas Monjalon > Sent: Tuesday, September 29, 2020 7:14 AM > To: dev@dpdk.org > Cc: Yigit, Ferruh ; arybchenko@solarflare.com; > Shijith Thotton ; Srisivasubramanian Srinivasan > ; Heinrich Kuhn > ; Alfredo Cardigliano > ; Liron Himi ; Ray Kinsella > ; Neil Horman ; John W. > Linville ; Loftus, Ciara = ; > Zhang, Qi Z ; Shepard Siegel > ; Ed Czeck ; > John Miller ; Igor Russkikh > ; Pavel Belous ; > Steven Webster ; Matt Peters > ; Somalapuram Amaranath > ; Rasesh Mody ; Shahed > Shaikh ; Ajit Khaparde > ; Somnath Kotur > ; Chas Williams ; Wei Hu > (Xavier) ; Rahul Lakkireddy > ; Hemant Agrawal > ; Sachin Saxena ; > Guo, Jia ; Wang, Haiyue ; > Marcin Wojtas ; Michal Krawczyk ; > Guy Tzalik ; Evgeny Schemeilin > ; Igor Chauskin ; > Gagandeep Singh ; John Daley ; > Hyong Youb Kim ; Gaetan Rivet ; > Wang, Xiao W ; Ziyang Xuan > ; Xiaoyun Wang > ; Guoyang Zhou > ; Min Hu (Connor) ; > Yisen Zhuang ; Xing, Beilei > ; Wu, Jingjing ; Yang, Qimi= ng > ; Jakub Grajciar ; Matan > Azrad ; Shahaf Shuler ; > Viacheslav Ovsiienko ; Zyta Szpak > ; Stephen Hemminger ; K. Y. > Srinivasan ; Haiyang Zhang ; > Long Li ; Martin Spinler ; > Tetsuya Mukawa ; Harman Kalra > ; Jerin Jacob ; Nithin Dabilpuram > ; Kiran Kumar K ; > Akhil Goyal ; Richardson, Bruce > ; Singh, Jasvinder > ; Dumitrescu, Cristian > ; Wiles, Keith ; > Maxime Coquelin ; Xia, Chenbo > ; Wang, Zhihong ; Yong > Wang > Subject: [PATCH v3 21/29] ethdev: remove old close behaviour >=20 > 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= . >=20 > 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 >=20 > The private port resources must be released in the .dev_close callback. >=20 > The .remove callback should: > - call .dev_close callback > - call rte_eth_dev_release_port() > - free multi-port device shared resources >=20 > Despite waiting two years, some drivers have not migrated, so they may hi= t > issues with the incompatible new behaviour. > After sending emails, adding logs, and announcing the deprecation, the on= ly > last solution is to declare these drivers as unmaintained: > ionic, liquidio, nfp > Below is a summary of what to implement in those drivers. >=20 > * The freeing of private port resources must be moved from the > ".remove(device)" function to the ".dev_close(port)" function. >=20 > * 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. >=20 > * 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 fro= m > ".remove(device)" after calling the ".dev_close" PMD function. >=20 > * Note 2: > If a device can have multiple ports, the common resources must be freed > only in the ".remove(device)" function. >=20 > * 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. >=20 > Cc: Shijith Thotton > Cc: Srisivasubramanian Srinivasan > Cc: Heinrich Kuhn > Cc: Alfredo Cardigliano >=20 > Signed-off-by: Thomas Monjalon > Reviewed-by: Liron Himi > --- > 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(-) >=20 > 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 >=20 > -Cavium LiquidIO > +Cavium LiquidIO - UNMAINTAINED > M: Shijith Thotton > M: Srisivasubramanian Srinivasan > 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 >=20 > -Netronome nfp > +Netronome nfp - UNMAINTAINED > M: Heinrich Kuhn > 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 >=20 > -Pensando ionic > +Pensando ionic - UNMAINTAINED > M: Alfredo Cardigliano > 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`` >=20 > -* 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 effect= ive > - for all drivers: generic port resources are freed on close operation. > - Private resources are expected to be released in the ``dev_close`` cal= lback. > - 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 =3D (uint16_t)nb_queues; > data->dev_link =3D pmd_link; > data->mac_addrs =3D &(*internals)->eth_addr; > - data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > (*eth_dev)->dev_ops =3D &ops; >=20 > 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 =3D &ops; > eth_dev->rx_pkt_burst =3D eth_af_xdp_rx; > eth_dev->tx_pkt_burst =3D eth_af_xdp_tx; > - /* Let rte_eth_dev_close() release the port resources. */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > #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 =3D ð_ark_recv_pkts_noop; > dev->tx_pkt_burst =3D ð_ark_xmit_pkts_noop; > - /* Let rte_eth_dev_close() release the port resources */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > ark->bar0 =3D (uint8_t *)pci_dev->mem_resource[0].addr; > ark->a_bar =3D (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() !=3D RTE_PROC_PRIMARY) > return 0; >=20 > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* Vendor and Device ID need to be set before init of shared code */ > hw->device_id =3D pci_dev->id.device_id; > hw->vendor_id =3D 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 =3D &avp_eth_dev_ops; > eth_dev->rx_pkt_burst =3D &avp_recv_pkts; > eth_dev->tx_pkt_burst =3D &avp_xmit_pkts; > - /* Let rte_eth_dev_close() release the port resources */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > if (rte_eal_process_type() !=3D 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; >=20 > eth_dev->dev_ops =3D &axgbe_eth_dev_ops; > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > eth_dev->rx_descriptor_status =3D axgbe_dev_rx_descriptor_status; > eth_dev->tx_descriptor_status =3D 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; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > return 0; >=20 > 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) >=20 > bnxt_alloc_switch_domain(bp); >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D 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); >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D 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) > } >=20 > internals =3D eth_dev->data->dev_private; > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > eth_dev->data->nb_rx_queues =3D (uint16_t)1; > eth_dev->data->nb_tx_queues =3D (uint16_t)1; >=20 > 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; > } >=20 > - pi->eth_dev->data->dev_flags |=3D > 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; > } >=20 > - pi->eth_dev->data->dev_flags |=3D > 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, >=20 > qman_ern_register_cb(dpaa_free_mbuf); >=20 > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > if (dpaa_drv->drv_flags & RTE_DPAA_DRV_INTR_LSC) > eth_dev->data->dev_flags |=3D RTE_ETH_DEV_INTR_LSC; >=20 > 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 =3D eth_dev; > eth_dev->data->rx_mbuf_alloc_failed =3D 0; >=20 > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > if (dpaa2_drv->drv_flags & RTE_DPAA2_DRV_INTR_LSC) > eth_dev->data->dev_flags |=3D RTE_ETH_DEV_INTR_LSC; >=20 > 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); >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* initialize the vfta */ > memset(shadow_vfta, 0, sizeof(*shadow_vfta)); >=20 > 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, > ð_dev->data->mac_addrs[0]); >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* initialize the vfta */ > memset(shadow_vfta, 0, sizeof(*shadow_vfta)); >=20 > @@ -997,11 +992,6 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev) > return -ENOMEM; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D 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); >=20 > - /* > - * Pass the information to the rte_eth_dev_close() that it should also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > adapter->drv_stats =3D 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 =3D &enetc_ops; > eth_dev->rx_pkt_burst =3D &enetc_recv_pkts; > eth_dev->tx_pkt_burst =3D &enetc_xmit_pkts; > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > /* Retrieving and storing the HW base address of device */ > hw->hw.reg =3D (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 =3D eth_dev->data->port_id; > enic->rte_dev =3D eth_dev; > enic->dev_data =3D eth_dev->data; > - /* Let rte_eth_dev_close() release the port resources */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > pdev =3D 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) >=20 > eth_dev->device->driver =3D pf->rte_dev->device->driver; > eth_dev->dev_ops =3D &enic_vf_representor_dev_ops; > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_REPRESENTOR > - | RTE_ETH_DEV_CLOSE_REMOVE; > + eth_dev->data->dev_flags |=3D RTE_ETH_DEV_REPRESENTOR; > eth_dev->data->representor_id =3D vf->vf_id; > eth_dev->data->mac_addrs =3D rte_zmalloc("enic_mac_addr_vf", > sizeof(struct rte_ether_addr) * > diff --git a/drivers/net/failsafe/failsafe.c b/drivers/net/failsafe/fails= afe.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 |=3D RTE_ETH_DEV_CLOSE_REMOVE; > priv =3D PRIV(dev); > priv->data =3D dev->data; > priv->rxp =3D 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]); > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* Reset the hw statistics */ > diag =3D fm10k_stats_reset(dev); > if (diag !=3D 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; > } >=20 > - /* > - * Pass the information to the rte_eth_dev_close() that it should also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* create hardware nic_device */ > rc =3D 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) > ð_dev->data->mac_addrs[0]); >=20 > hw->adapter_state =3D 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 |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > if (rte_atomic16_read(&hns->hw.reset.schedule) =3D=3D > 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) > ð_dev->data->mac_addrs[0]); >=20 > hw->adapter_state =3D 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 |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > if (rte_atomic16_read(&hns->hw.reset.schedule) =3D=3D > 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]); >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* Init dcb to sw mode by default */ > ret =3D i40e_dcb_init_configure(dev, TRUE); > if (ret !=3D 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 =3D 1; > hw->adapter_closed =3D 0; >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > if(i40evf_init_vf(eth_dev) !=3D 0) { > PMD_INIT_LOG(ERR, "Init vf failed"); > return -1; > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethde= v.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 =3D eth_dev; > adapter->stopped =3D 1; >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > if (iavf_init_vf(eth_dev) !=3D 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() !=3D RTE_PROC_PRIMARY) > return 0; >=20 > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > adapter->real_hw.vc_event_msg_cb =3D > ice_dcf_handle_pf_event_msg; > if (ice_dcf_init_hw(eth_dev, &adapter->real_hw) !=3D 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; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > ret =3D 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; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > hw->mac.get_link_status =3D 1; > igc->stopped =3D 0; >=20 > 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; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* initialize the vfta */ > memset(shadow_vfta, 0, sizeof(*shadow_vfta)); >=20 > @@ -1663,11 +1658,6 @@ eth_ixgbevf_dev_init(struct rte_eth_dev > *eth_dev) > return -ENOMEM; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D 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 =3D 1; > data->all_multicast =3D 1; >=20 > - data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > rte_eth_random_addr(internals->eth_addr.addr_bytes); >=20 > eth_dev->dev_ops =3D ð_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 =3D eth_memif_tx; > } >=20 > - > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > rte_eth_dev_probing_finish(eth_dev); >=20 > 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 |=3D > RTE_ETH_DEV_CLOSE_REMOVE; > eth_dev->data->dev_private =3D priv; > eth_dev->data->mac_addrs =3D priv->mac; > eth_dev->device =3D &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 =3D ENOMEM; > goto error; > } > - /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > if (priv->representor) { > eth_dev->data->dev_flags |=3D RTE_ETH_DEV_REPRESENTOR; > eth_dev->data->representor_id =3D 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 =3D &mvneta_ops; >=20 > - /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */ > - eth_dev->data->dev_flags |=3D 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 =3D &mrvl_ops; >=20 > - /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */ > - eth_dev->data->dev_flags |=3D 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 |=3D RTE_ETH_DEV_INTR_LSC; > eth_dev->intr_handle =3D &dev->intr_handle; >=20 > - /* allow ethdev to remove on close */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > return eth_dev; > } >=20 > 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); > } >=20 > - /* Let rte_eth_dev_close() release the port resources */ > - dev->data->dev_flags |=3D 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 =3D &internals->eth_addr; > data->promiscuous =3D 1; > data->all_multicast =3D 1; > - data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > eth_dev->dev_ops =3D &ops; >=20 > 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 =3D 0; > data->all_multicast =3D 0; > data->scattered_rx =3D 0; > - data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > /* Get maximum number of supported MAC entries */ > max_entries =3D 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 =3D RTE_ETH_DEV_TO_PCI(eth_dev); >=20 > rte_eth_copy_pci_info(eth_dev, pci_dev); > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > /* 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 =3D eth_tx_drop; >=20 > - eth_dev->data->dev_flags |=3D 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 =3D 1; > eth_dev->data->nb_tx_queues =3D 1; >=20 > - eth_dev->data->dev_flags |=3D 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 =3D false; > } >=20 > - /* Pass the information to the rte_eth_dev_close() that it should > also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D 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_r= ing.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, >=20 > eth_dev->dev_ops =3D &ops; > data->numa_node =3D numa_node; > - data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > /* finally assign rx and tx ops */ > eth_dev->rx_pkt_burst =3D 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) > } >=20 > /* > - * Cleanup all resources in accordance with > RTE_ETH_DEV_CLOSE_REMOVE. > + * Cleanup all resources. > * Rollback primary process sfc_eth_dev_init() below. > */ >=20 > @@ -2179,8 +2179,6 @@ sfc_eth_dev_init(struct rte_eth_dev *dev) >=20 > sfc_log_init(sa, "entry"); >=20 > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > dev->data->mac_addrs =3D rte_zmalloc("sfc", RTE_ETHER_ADDR_LEN, > 0); > if (dev->data->mac_addrs =3D=3D NULL) { > rc =3D 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 =3D &vdev->device; >=20 > /* dev->data */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > dev->data->dev_private =3D dev_private; > dev->data->dev_link.link_speed =3D ETH_SPEED_NUM_100G; > dev->data->dev_link.link_duplex =3D 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)); >=20 > - /* Let rte_eth_dev_close() release the port resources */ > - dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* Fill internal private structure. */ > internals->dev =3D 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 =3D dev->data; > data->dev_private =3D pmd; > - data->dev_flags =3D RTE_ETH_DEV_INTR_LSC | > RTE_ETH_DEV_CLOSE_REMOVE; > + data->dev_flags =3D RTE_ETH_DEV_INTR_LSC; > data->numa_node =3D numa_node; >=20 > data->dev_link =3D 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 =3D flags; > internal->disable_flags =3D disable_flags; > data->dev_link =3D pmd_link; > - data->dev_flags =3D RTE_ETH_DEV_INTR_LSC | > RTE_ETH_DEV_CLOSE_REMOVE; > + data->dev_flags =3D RTE_ETH_DEV_INTR_LSC; > data->promiscuous =3D 1; > data->all_multicast =3D 1; >=20 > 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 =3D speed; > - /* > - * Pass the information to the rte_eth_dev_close() that it should also > - * release the private port resources. > - */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; >=20 > /* Allocate memory for storing MAC addresses */ > eth_dev->data->mac_addrs =3D 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]); >=20 > - /* Flag to call rte_eth_dev_release_port() in rte_eth_dev_close(). */ > - eth_dev->data->dev_flags |=3D RTE_ETH_DEV_CLOSE_REMOVE; > - > /* Put device in Quiesce Mode */ > VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, > VMXNET3_CMD_QUIESCE_DEV); >=20 > diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethde= v.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); >=20 > rte_ethdev_trace_close(port_id); > - /* check behaviour flag - temporary for PMD migration */ > - if ((dev->data->dev_flags & RTE_ETH_DEV_CLOSE_REMOVE) !=3D 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 =3D 0; > - rte_free(dev->data->rx_queues); > - dev->data->rx_queues =3D NULL; > - dev->data->nb_tx_queues =3D 0; > - rte_free(dev->data->tx_queues); > - dev->data->tx_queues =3D NULL; > + rte_eth_dev_release_port(dev); > } >=20 > int > diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethde= v.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. */ }; >=20 > -/** > - * 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); >=20 > /** > * 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