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