DPDK patches and discussions
 help / color / mirror / Atom feed
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>,
	"Xu, Rosen" <rosen.xu@intel.com>,
	Sachin Saxena <sachin.saxena@oss.nxp.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Liron Himi <lironh@marvell.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>,
	Steven Webster <steven.webster@windriver.com>,
	Matt Peters <matt.peters@windriver.com>,
	Somnath Kotur <somnath.kotur@broadcom.com>,
	Rahul Lakkireddy <rahul.lakkireddy@chelsio.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>,
	"Wang, Xiao W" <xiao.w.wang@intel.com>,
	Ziyang Xuan <xuanziyang2@huawei.com>,
	Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>,
	Guoyang Zhou <zhouguoyang@huawei.com>,
	"Xing,  Beilei" <beilei.xing@intel.com>,
	"Wu, Jingjing" <jingjing.wu@intel.com>,
	"Yang, Qiming" <qiming.yang@intel.com>,
	Alfredo Cardigliano <cardigliano@ntop.org>,
	Shijith Thotton <sthotton@marvell.com>,
	Srisivasubramanian Srinivasan <srinivasan@marvell.com>,
	Matan Azrad <matan@nvidia.com>,
	Shahaf Shuler <shahafs@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>,
	Heinrich Kuhn <heinrich.kuhn@netronome.com>,
	Harman Kalra <hkalra@marvell.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	Jerin Jacob <jerinj@marvell.com>,
	Maciej Czekaj <mczekaj@marvell.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	"Xia, Chenbo" <chenbo.xia@intel.com>,
	"Wang, Zhihong" <zhihong.wang@intel.com>,
	Yong Wang <yongwang@vmware.com>,
	"Burakov, Anatoly" <anatoly.burakov@intel.com>
Subject: Re: [dpdk-dev] [PATCH v3 23/29] drivers/net: check process type in close operation
Date: Tue, 29 Sep 2020 05:53:41 +0000	[thread overview]
Message-ID: <606ae7c6bd8a4869a64079c5dd0d8ab1@intel.com> (raw)
In-Reply-To: <20200928231437.414489-24-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:15 AM
> To: dev@dpdk.org
> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; arybchenko@solarflare.com; Xu,
> Rosen <rosen.xu@intel.com>; Sachin Saxena <sachin.saxena@oss.nxp.com>;
> Ajit Khaparde <ajit.khaparde@broadcom.com>; Liron Himi
> <lironh@marvell.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>; Steven Webster
> <steven.webster@windriver.com>; Matt Peters
> <matt.peters@windriver.com>; Somnath Kotur
> <somnath.kotur@broadcom.com>; Rahul Lakkireddy
> <rahul.lakkireddy@chelsio.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>; Wang, Xiao
> W <xiao.w.wang@intel.com>; Ziyang Xuan <xuanziyang2@huawei.com>;
> Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou
> <zhouguoyang@huawei.com>; Xing, Beilei <beilei.xing@intel.com>; Wu,
> Jingjing <jingjing.wu@intel.com>; Yang, Qiming <qiming.yang@intel.com>;
> Alfredo Cardigliano <cardigliano@ntop.org>; Shijith Thotton
> <sthotton@marvell.com>; Srisivasubramanian Srinivasan
> <srinivasan@marvell.com>; Matan Azrad <matan@nvidia.com>; Shahaf
> Shuler <shahafs@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>; Heinrich Kuhn
> <heinrich.kuhn@netronome.com>; Harman Kalra <hkalra@marvell.com>;
> Akhil Goyal <akhil.goyal@nxp.com>; Jerin Jacob <jerinj@marvell.com>;
> Maciej Czekaj <mczekaj@marvell.com>; Maxime Coquelin
> <maxime.coquelin@redhat.com>; Xia, Chenbo <chenbo.xia@intel.com>;
> Wang, Zhihong <zhihong.wang@intel.com>; Yong Wang
> <yongwang@vmware.com>; Burakov, Anatoly <anatoly.burakov@intel.com>
> Subject: [PATCH v3 23/29] drivers/net: check process type in close operation
> 
> The secondary processes are not allowed to release shared resources.
> Only process-private resources should be freed in a secondary process.
> Most of the time, there is no process-private resource, so the close
> operation is just forbidden in a secondary process.
> 
> After adding proper check in the port close functions, some redundant
> checks in the device remove functions are dropped.
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Reviewed-by: Rosen Xu <rosen.xu@intel.com>
> Reviewed-by: Sachin Saxena <sachin.saxena@oss.nxp.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
> Reviewed-by: Liron Himi <lironh@marvell.com>
> ---
>  drivers/net/af_xdp/rte_eth_af_xdp.c     |  3 +++
>  drivers/net/ark/ark_ethdev.c            |  3 +++
>  drivers/net/avp/avp_ethdev.c            |  3 +++
>  drivers/net/bnxt/bnxt_ethdev.c          |  3 +++
>  drivers/net/bnxt/bnxt_reps.c            |  3 +++
>  drivers/net/cxgbe/cxgbe_ethdev.c        |  3 +++
>  drivers/net/e1000/em_ethdev.c           |  3 +++
>  drivers/net/e1000/igb_ethdev.c          |  6 +++++
>  drivers/net/ena/ena_ethdev.c            |  3 +++
>  drivers/net/enetc/enetc_ethdev.c        |  3 +++
>  drivers/net/enic/enic_ethdev.c          |  3 +++
>  drivers/net/fm10k/fm10k_ethdev.c        |  9 ++-----
>  drivers/net/hinic/hinic_pmd_ethdev.c    |  3 +++
>  drivers/net/i40e/i40e_ethdev.c          |  2 ++
>  drivers/net/i40e/i40e_ethdev_vf.c       |  3 +++
>  drivers/net/iavf/iavf_ethdev.c          |  3 +++
>  drivers/net/ice/ice_ethdev.c            |  3 +++
>  drivers/net/igc/igc_ethdev.c            |  6 ++---
>  drivers/net/ionic/ionic_ethdev.c        |  2 ++
>  drivers/net/ipn3ke/ipn3ke_representor.c |  3 +++
>  drivers/net/ixgbe/ixgbe_ethdev.c        |  4 ++++
>  drivers/net/kni/rte_eth_kni.c           |  3 +++
>  drivers/net/liquidio/lio_ethdev.c       |  3 +++
>  drivers/net/mlx4/mlx4.c                 |  2 ++
>  drivers/net/mvneta/mvneta_ethdev.c      |  3 +++
>  drivers/net/mvpp2/mrvl_ethdev.c         |  3 +++
>  drivers/net/netvsc/hn_ethdev.c          |  2 ++
>  drivers/net/nfb/nfb_ethdev.c            |  3 +++
>  drivers/net/nfp/nfp_net.c               |  3 +++
>  drivers/net/octeontx/octeontx_ethdev.c  |  2 ++
>  drivers/net/pfe/pfe_ethdev.c            |  3 +++
>  drivers/net/sfc/sfc_ethdev.c            | 32 ++++++++++++-------------
>  drivers/net/szedata2/rte_eth_szedata2.c |  3 +++
>  drivers/net/thunderx/nicvf_ethdev.c     |  7 +++---
>  drivers/net/vhost/rte_eth_vhost.c       |  7 +++---
>  drivers/net/virtio/virtio_ethdev.c      |  2 ++
>  drivers/net/vmxnet3/vmxnet3_ethdev.c    |  2 ++
>  37 files changed, 119 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c
> b/drivers/net/af_xdp/rte_eth_af_xdp.c
> index 60add9ead4..b289076e01 100644
> --- a/drivers/net/af_xdp/rte_eth_af_xdp.c
> +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
> @@ -708,6 +708,9 @@ eth_dev_close(struct rte_eth_dev *dev)
>  	struct pkt_rx_queue *rxq;
>  	int i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	AF_XDP_LOG(INFO, "Closing AF_XDP ethdev on numa socket %u\n",
>  		rte_socket_id());
> 
> diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c
> index 83dc4ecd2c..3e96445fdb 100644
> --- a/drivers/net/ark/ark_ethdev.c
> +++ b/drivers/net/ark/ark_ethdev.c
> @@ -680,6 +680,9 @@ eth_ark_dev_close(struct rte_eth_dev *dev)
>  	struct ark_adapter *ark = dev->data->dev_private;
>  	uint16_t i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (ark->user_ext.dev_close)
>  		ark->user_ext.dev_close(dev,
>  		 ark->user_data[dev->data->port_id]);
> diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c
> index c730b7ab86..95fdb57451 100644
> --- a/drivers/net/avp/avp_ethdev.c
> +++ b/drivers/net/avp/avp_ethdev.c
> @@ -2107,6 +2107,9 @@ avp_dev_close(struct rte_eth_dev *eth_dev)
>  	struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data-
> >dev_private);
>  	int ret;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	rte_spinlock_lock(&avp->lock);
>  	if (avp->flags & AVP_F_DETACHED) {
>  		PMD_DRV_LOG(ERR, "Operation not supported during VM
> live migration\n"); diff --git a/drivers/net/bnxt/bnxt_ethdev.c
> b/drivers/net/bnxt/bnxt_ethdev.c index a77bab661d..d45347e8ca 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -1361,6 +1361,9 @@ static int bnxt_dev_close_op(struct rte_eth_dev
> *eth_dev)  {
>  	struct bnxt *bp = eth_dev->data->dev_private;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	/* cancel the recovery handler before remove dev */
>  	rte_eal_alarm_cancel(bnxt_dev_reset_and_resume, (void *)bp);
>  	rte_eal_alarm_cancel(bnxt_dev_recover, (void *)bp); diff --git
> a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index
> df8680c113..c419fe63b8 100644
> --- a/drivers/net/bnxt/bnxt_reps.c
> +++ b/drivers/net/bnxt/bnxt_reps.c
> @@ -220,6 +220,9 @@ int bnxt_vf_representor_uninit(struct rte_eth_dev
> *eth_dev)
>  		(struct bnxt_vf_representor *)eth_dev->data->dev_private;
>  	uint16_t vf_id;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	PMD_DRV_LOG(DEBUG, "BNXT Port:%d VFR uninit\n", eth_dev-
> >data->port_id);
>  	eth_dev->data->mac_addrs = NULL;
>  	eth_dev->dev_ops = NULL;
> diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c
> b/drivers/net/cxgbe/cxgbe_ethdev.c
> index e4bbba5c32..16beb2d435 100644
> --- a/drivers/net/cxgbe/cxgbe_ethdev.c
> +++ b/drivers/net/cxgbe/cxgbe_ethdev.c
> @@ -326,6 +326,9 @@ int cxgbe_dev_close(struct rte_eth_dev *eth_dev)
> 
>  	CXGBE_FUNC_TRACE();
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (!(adapter->flags & FULL_INIT_DONE))
>  		return 0;
> 
> diff --git a/drivers/net/e1000/em_ethdev.c
> b/drivers/net/e1000/em_ethdev.c index 6a6ae0e9d5..d050eb478a 100644
> --- a/drivers/net/e1000/em_ethdev.c
> +++ b/drivers/net/e1000/em_ethdev.c
> @@ -762,6 +762,9 @@ eth_em_close(struct rte_eth_dev *dev)
>  	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
>  	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	eth_em_stop(dev);
>  	adapter->stopped = 1;
>  	em_dev_free_queues(dev);
> diff --git a/drivers/net/e1000/igb_ethdev.c
> b/drivers/net/e1000/igb_ethdev.c index f8778207ef..cb3d97e2a3 100644
> --- a/drivers/net/e1000/igb_ethdev.c
> +++ b/drivers/net/e1000/igb_ethdev.c
> @@ -1535,6 +1535,9 @@ eth_igb_close(struct rte_eth_dev *dev)
>  	struct e1000_filter_info *filter_info =
>  		E1000_DEV_PRIVATE_TO_FILTER_INFO(dev->data-
> >dev_private);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	eth_igb_stop(dev);
> 
>  	e1000_phy_hw_reset(hw);
> @@ -3382,6 +3385,9 @@ igbvf_dev_close(struct rte_eth_dev *dev)
> 
>  	PMD_INIT_FUNC_TRACE();
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	e1000_reset_hw(hw);
> 
>  	igbvf_dev_stop(dev);
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index cf1c0b9795..07ae9bab32 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -493,6 +493,9 @@ static int ena_close(struct rte_eth_dev *dev)
>  	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
>  	struct ena_adapter *adapter = dev->data->dev_private;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (adapter->state == ENA_ADAPTER_STATE_RUNNING)
>  		ena_stop(dev);
>  	adapter->state = ENA_ADAPTER_STATE_CLOSED; diff --git
> a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c
> index 325c93b92a..b3dec7e64d 100644
> --- a/drivers/net/enetc/enetc_ethdev.c
> +++ b/drivers/net/enetc/enetc_ethdev.c
> @@ -551,6 +551,9 @@ enetc_dev_close(struct rte_eth_dev *dev)
>  	uint16_t i;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	enetc_dev_stop(dev);
> 
>  	for (i = 0; i < dev->data->nb_rx_queues; i++) { diff --git
> a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index
> 27f60b45b8..60ee5e01de 100644
> --- a/drivers/net/enic/enic_ethdev.c
> +++ b/drivers/net/enic/enic_ethdev.c
> @@ -451,6 +451,9 @@ static int enicpmd_dev_close(struct rte_eth_dev
> *eth_dev)
>  	struct enic *enic = pmd_priv(eth_dev);
> 
>  	ENICPMD_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	enic_remove(enic);
> 
>  	return 0;
> diff --git a/drivers/net/fm10k/fm10k_ethdev.c
> b/drivers/net/fm10k/fm10k_ethdev.c
> index 23f4d04068..17cf0328c6 100644
> --- a/drivers/net/fm10k/fm10k_ethdev.c
> +++ b/drivers/net/fm10k/fm10k_ethdev.c
> @@ -2784,6 +2784,8 @@ fm10k_dev_close(struct rte_eth_dev *dev)
>  	struct rte_intr_handle *intr_handle = &pdev->intr_handle;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	fm10k_mbx_lock(hw);
>  	hw->mac.ops.update_lport_state(hw, hw->mac.dglort_map, @@ -
> 3236,14 +3238,7 @@ static int  eth_fm10k_dev_uninit(struct rte_eth_dev
> *dev)  {
>  	PMD_INIT_FUNC_TRACE();
> -
> -	/* only uninitialize in the primary process */
> -	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> -		return 0;
> -
> -	/* safe to close dev here */
>  	fm10k_dev_close(dev);
> -
>  	return 0;
>  }
> 
> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c
> b/drivers/net/hinic/hinic_pmd_ethdev.c
> index 623534fda4..1b175aeace 100644
> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
> @@ -2940,6 +2940,9 @@ static int hinic_dev_close(struct rte_eth_dev *dev)
> {
>  	struct hinic_nic_dev *nic_dev =
> HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (rte_bit_relaxed_test_and_set32(HINIC_DEV_CLOSE,
>  					   &nic_dev->dev_status)) {
>  		PMD_DRV_LOG(WARNING, "Device %s already closed", diff -
> -git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index 6fb88148b8..feeed2dec0 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -2620,6 +2620,8 @@ i40e_dev_close(struct rte_eth_dev *dev)
>  	int retries = 0;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	ret = rte_eth_switch_domain_free(pf->switch_domain_id);
>  	if (ret)
> diff --git a/drivers/net/i40e/i40e_ethdev_vf.c
> b/drivers/net/i40e/i40e_ethdev_vf.c
> index 4aaf41956c..4d6510d1ff 100644
> --- a/drivers/net/i40e/i40e_ethdev_vf.c
> +++ b/drivers/net/i40e/i40e_ethdev_vf.c
> @@ -2402,6 +2402,9 @@ i40evf_dev_close(struct rte_eth_dev *dev)
>  	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data-
> >dev_private);
>  	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data-
> >dev_private);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	i40evf_dev_stop(dev);
>  	i40e_dev_free_queues(dev);
>  	/*
> diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
> index 512ade2ad0..a5b1433306 100644
> --- a/drivers/net/iavf/iavf_ethdev.c
> +++ b/drivers/net/iavf/iavf_ethdev.c
> @@ -1468,6 +1468,9 @@ iavf_dev_close(struct rte_eth_dev *dev)
>  		IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
>  	struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data-
> >dev_private);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	iavf_dev_stop(dev);
>  	iavf_flow_flush(dev, NULL);
>  	iavf_flow_uninit(adapter);
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
> index 85a3ca6a2d..96159c92f2 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -2435,6 +2435,9 @@ ice_dev_close(struct rte_eth_dev *dev)
>  	struct ice_adapter *ad =
>  		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	/* Since stop will make link down, then the link event will be
>  	 * triggered, disable the irq firstly to avoid the port_infoe etc
>  	 * resources deallocation causing the interrupt service thread diff --
> git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index
> 9d27fc0d07..7f5066df4b 100644
> --- a/drivers/net/igc/igc_ethdev.c
> +++ b/drivers/net/igc/igc_ethdev.c
> @@ -1175,6 +1175,8 @@ eth_igc_close(struct rte_eth_dev *dev)
>  	int retry = 0;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	if (!adapter->stopped)
>  		eth_igc_stop(dev);
> @@ -1363,10 +1365,6 @@ static int
>  eth_igc_dev_uninit(__rte_unused struct rte_eth_dev *eth_dev)  {
>  	PMD_INIT_FUNC_TRACE();
> -
> -	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> -		return 0;
> -
>  	eth_igc_close(eth_dev);
>  	return 0;
>  }
> diff --git a/drivers/net/ionic/ionic_ethdev.c
> b/drivers/net/ionic/ionic_ethdev.c
> index 1775fd29b7..ef7d06e526 100644
> --- a/drivers/net/ionic/ionic_ethdev.c
> +++ b/drivers/net/ionic/ionic_ethdev.c
> @@ -963,6 +963,8 @@ ionic_dev_close(struct rte_eth_dev *eth_dev)
>  	int err;
> 
>  	IONIC_PRINT_CALL();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	err = ionic_lif_stop(lif);
>  	if (err) {
> diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c
> b/drivers/net/ipn3ke/ipn3ke_representor.c
> index d49abbf758..b9fb4d4e46 100644
> --- a/drivers/net/ipn3ke/ipn3ke_representor.c
> +++ b/drivers/net/ipn3ke/ipn3ke_representor.c
> @@ -214,6 +214,9 @@ ipn3ke_rpst_dev_close(struct rte_eth_dev *dev)
>  	struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev);
>  	struct ipn3ke_rpst *rpst = IPN3KE_DEV_PRIVATE_TO_RPST(dev);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (hw->retimer.mac_type ==
> IFPGA_RAWDEV_RETIMER_MAC_TYPE_10GE_XFI) {
>  		/* Disable the TX path */
>  		ipn3ke_xmac_tx_disable(hw, rpst->port_id, 0); diff --git
> a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 600e9d6928..84c1b0f7a1 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -2995,6 +2995,8 @@ ixgbe_dev_close(struct rte_eth_dev *dev)
>  	int ret;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	ixgbe_pf_reset_hw(hw);
> 
> @@ -5442,6 +5444,8 @@ ixgbevf_dev_close(struct rte_eth_dev *dev)
>  	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	ixgbe_reset_hw(hw);
> 
> diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c
> index 2a4058f7b0..be747adf86 100644
> --- a/drivers/net/kni/rte_eth_kni.c
> +++ b/drivers/net/kni/rte_eth_kni.c
> @@ -204,6 +204,9 @@ eth_kni_close(struct rte_eth_dev *eth_dev)
>  	struct pmd_internals *internals;
>  	int ret;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	eth_kni_dev_stop(eth_dev);
> 
>  	/* mac_addrs must not be freed alone because part of dev_private
> */ diff --git a/drivers/net/liquidio/lio_ethdev.c
> b/drivers/net/liquidio/lio_ethdev.c
> index 93e2ed5670..1a41f27198 100644
> --- a/drivers/net/liquidio/lio_ethdev.c
> +++ b/drivers/net/liquidio/lio_ethdev.c
> @@ -1555,6 +1555,9 @@ lio_dev_close(struct rte_eth_dev *eth_dev)  {
>  	struct lio_device *lio_dev = LIO_DEV(eth_dev);
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	lio_dev_info(lio_dev, "closing port %d\n", eth_dev->data->port_id);
> 
>  	if (lio_dev->intf_open)
> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index
> 3e57875414..cfcfb8a8fc 100644
> --- a/drivers/net/mlx4/mlx4.c
> +++ b/drivers/net/mlx4/mlx4.c
> @@ -376,6 +376,8 @@ mlx4_dev_close(struct rte_eth_dev *dev)
>  	struct mlx4_priv *priv = dev->data->dev_private;
>  	unsigned int i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
>  	DEBUG("%p: closing device \"%s\"",
>  	      (void *)dev,
>  	      ((priv->ctx != NULL) ? priv->ctx->device->name : "")); diff --git
> a/drivers/net/mvneta/mvneta_ethdev.c
> b/drivers/net/mvneta/mvneta_ethdev.c
> index db142bec23..607771149a 100644
> --- a/drivers/net/mvneta/mvneta_ethdev.c
> +++ b/drivers/net/mvneta/mvneta_ethdev.c
> @@ -435,6 +435,9 @@ mvneta_dev_close(struct rte_eth_dev *dev)
>  	struct mvneta_priv *priv = dev->data->dev_private;
>  	int i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	if (priv->ppio)
>  		mvneta_dev_stop(dev);
> 
> diff --git a/drivers/net/mvpp2/mrvl_ethdev.c
> b/drivers/net/mvpp2/mrvl_ethdev.c index cfb97e4f8f..a230a96840 100644
> --- a/drivers/net/mvpp2/mrvl_ethdev.c
> +++ b/drivers/net/mvpp2/mrvl_ethdev.c
> @@ -861,6 +861,9 @@ mrvl_dev_close(struct rte_eth_dev *dev)
>  	struct mrvl_priv *priv = dev->data->dev_private;
>  	size_t i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	mrvl_flush_rx_queues(dev);
>  	mrvl_flush_tx_shadow_queues(dev);
>  	mrvl_flow_deinit(dev);
> diff --git a/drivers/net/netvsc/hn_ethdev.c
> b/drivers/net/netvsc/hn_ethdev.c index 19a9eb6bc2..5ae2d469c8 100644
> --- a/drivers/net/netvsc/hn_ethdev.c
> +++ b/drivers/net/netvsc/hn_ethdev.c
> @@ -842,6 +842,8 @@ static int
>  hn_dev_close(struct rte_eth_dev *dev)
>  {
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	hn_vf_close(dev);
>  	hn_dev_free_queues(dev);
> diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c
> index d937ac6922..7ee7294143 100644
> --- a/drivers/net/nfb/nfb_ethdev.c
> +++ b/drivers/net/nfb/nfb_ethdev.c
> @@ -217,6 +217,9 @@ nfb_eth_dev_close(struct rte_eth_dev *dev)
>  	uint16_t nb_rx = dev->data->nb_rx_queues;
>  	uint16_t nb_tx = dev->data->nb_tx_queues;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	nfb_eth_dev_stop(dev);
> 
>  	nfb_nc_rxmac_deinit(internals->rxmac, internals->max_rxmac); diff
> --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index
> ce25cf1ed4..c1da66e3d6 100644
> --- a/drivers/net/nfp/nfp_net.c
> +++ b/drivers/net/nfp/nfp_net.c
> @@ -871,6 +871,9 @@ nfp_net_close(struct rte_eth_dev *dev)
>  	struct rte_pci_device *pci_dev;
>  	int i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	PMD_INIT_LOG(DEBUG, "Close");
> 
>  	hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
> diff --git a/drivers/net/octeontx/octeontx_ethdev.c
> b/drivers/net/octeontx/octeontx_ethdev.c
> index a263f45399..aa9ef3bb70 100644
> --- a/drivers/net/octeontx/octeontx_ethdev.c
> +++ b/drivers/net/octeontx/octeontx_ethdev.c
> @@ -487,6 +487,8 @@ octeontx_dev_close(struct rte_eth_dev *dev)
>  	int ret;
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	rte_event_dev_close(nic->evdev);
> 
> diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c
> index bb2ae0df34..f0de1c8a2e 100644
> --- a/drivers/net/pfe/pfe_ethdev.c
> +++ b/drivers/net/pfe/pfe_ethdev.c
> @@ -396,6 +396,9 @@ pfe_eth_close(struct rte_eth_dev *dev)
>  	if (!g_pfe)
>  		return -1;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	pfe_eth_stop(dev);
>  	/* Close the device file for link status */
>  	pfe_eth_close_cdev(dev->data->dev_private);
> diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
> index 1c72e40b75..0558f1808d 100644
> --- a/drivers/net/sfc/sfc_ethdev.c
> +++ b/drivers/net/sfc/sfc_ethdev.c
> @@ -318,6 +318,17 @@ sfc_dev_set_link_down(struct rte_eth_dev *dev)
>  	return 0;
>  }
> 
> +static void
> +sfc_eth_dev_secondary_clear_ops(struct rte_eth_dev *dev) {
> +	free(dev->process_private);
> +	dev->process_private = NULL;
> +	dev->dev_ops = NULL;
> +	dev->tx_pkt_prepare = NULL;
> +	dev->tx_pkt_burst = NULL;
> +	dev->rx_pkt_burst = NULL;
> +}
> +
>  static int
>  sfc_dev_close(struct rte_eth_dev *dev)
>  {
> @@ -325,6 +336,11 @@ sfc_dev_close(struct rte_eth_dev *dev)
> 
>  	sfc_log_init(sa, "entry");
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
> +		sfc_eth_dev_secondary_clear_ops(dev);
> +		return 0;
> +	}
> +
>  	sfc_adapter_lock(sa);
>  	switch (sa->state) {
>  	case SFC_ADAPTER_STARTED:
> @@ -2101,17 +2117,6 @@ sfc_eth_dev_secondary_init(struct rte_eth_dev
> *dev, uint32_t logtype_main)
>  	return rc;
>  }
> 
> -static void
> -sfc_eth_dev_secondary_clear_ops(struct rte_eth_dev *dev) -{
> -	free(dev->process_private);
> -	dev->process_private = NULL;
> -	dev->dev_ops = NULL;
> -	dev->tx_pkt_prepare = NULL;
> -	dev->tx_pkt_burst = NULL;
> -	dev->rx_pkt_burst = NULL;
> -}
> -
>  static void
>  sfc_register_dp(void)
>  {
> @@ -2245,11 +2250,6 @@ sfc_eth_dev_init(struct rte_eth_dev *dev)  static
> int  sfc_eth_dev_uninit(struct rte_eth_dev *dev)  {
> -	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
> -		sfc_eth_dev_secondary_clear_ops(dev);
> -		return 0;
> -	}
> -
>  	sfc_dev_close(dev);
> 
>  	return 0;
> diff --git a/drivers/net/szedata2/rte_eth_szedata2.c
> b/drivers/net/szedata2/rte_eth_szedata2.c
> index 5f589dfa4c..7e9fafdcf7 100644
> --- a/drivers/net/szedata2/rte_eth_szedata2.c
> +++ b/drivers/net/szedata2/rte_eth_szedata2.c
> @@ -1163,6 +1163,9 @@ eth_dev_close(struct rte_eth_dev *dev)
>  	uint16_t nb_rx = dev->data->nb_rx_queues;
>  	uint16_t nb_tx = dev->data->nb_tx_queues;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	eth_dev_stop(dev);
> 
>  	free(internals->sze_dev_path);
> diff --git a/drivers/net/thunderx/nicvf_ethdev.c
> b/drivers/net/thunderx/nicvf_ethdev.c
> index 3d7348771a..cc6eb4ba24 100644
> --- a/drivers/net/thunderx/nicvf_ethdev.c
> +++ b/drivers/net/thunderx/nicvf_ethdev.c
> @@ -1859,6 +1859,8 @@ nicvf_dev_close(struct rte_eth_dev *dev)
>  	struct nicvf *nic = nicvf_pmd_priv(dev);
> 
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	nicvf_dev_stop_cleanup(dev, true);
>  	nicvf_periodic_alarm_stop(nicvf_interrupt, dev); @@ -2119,10
> +2121,7 @@ static int  nicvf_eth_dev_uninit(struct rte_eth_dev *dev)  {
>  	PMD_INIT_FUNC_TRACE();
> -
> -	if (rte_eal_process_type() == RTE_PROC_PRIMARY)
> -		nicvf_dev_close(dev);
> -
> +	nicvf_dev_close(dev);
>  	return 0;
>  }
>  static int
> diff --git a/drivers/net/vhost/rte_eth_vhost.c
> b/drivers/net/vhost/rte_eth_vhost.c
> index 45552ef742..32ad27fe4e 100644
> --- a/drivers/net/vhost/rte_eth_vhost.c
> +++ b/drivers/net/vhost/rte_eth_vhost.c
> @@ -1171,6 +1171,9 @@ eth_dev_close(struct rte_eth_dev *dev)
>  	struct internal_list *list;
>  	unsigned int i;
> 
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> +
>  	internal = dev->data->dev_private;
>  	if (!internal)
>  		return 0;
> @@ -1655,11 +1658,7 @@ rte_pmd_vhost_remove(struct rte_vdev_device
> *dev)
>  	if (eth_dev == NULL)
>  		return 0;
> 
> -	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> -		return rte_eth_dev_release_port(eth_dev);
> -
>  	eth_dev_close(eth_dev);
> -
>  	rte_eth_dev_release_port(eth_dev);
> 
>  	return 0;
> diff --git a/drivers/net/virtio/virtio_ethdev.c
> b/drivers/net/virtio/virtio_ethdev.c
> index b6ed5829bd..f2117675b3 100644
> --- a/drivers/net/virtio/virtio_ethdev.c
> +++ b/drivers/net/virtio/virtio_ethdev.c
> @@ -711,6 +711,8 @@ virtio_dev_close(struct rte_eth_dev *dev)
>  	struct rte_intr_conf *intr_conf = &dev->data->dev_conf.intr_conf;
> 
>  	PMD_INIT_LOG(DEBUG, "virtio_dev_close");
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	if (!hw->opened)
>  		return 0;
> diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> index 34a169d2c0..fa950e1ba0 100644
> --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
> +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
> @@ -889,6 +889,8 @@ static int
>  vmxnet3_dev_close(struct rte_eth_dev *dev)  {
>  	PMD_INIT_FUNC_TRACE();
> +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> +		return 0;
> 
>  	vmxnet3_dev_stop(dev);
>  	vmxnet3_free_queues(dev);
> --
> 2.28.0


  parent reply	other threads:[~2020-09-29  5:53 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 " 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
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 [this message]
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=606ae7c6bd8a4869a64079c5dd0d8ab1@intel.com \
    --to=jia.guo@intel.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=akhil.goyal@nxp.com \
    --cc=anatoly.burakov@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=beilei.xing@intel.com \
    --cc=cardigliano@ntop.org \
    --cc=chenbo.xia@intel.com \
    --cc=ciara.loftus@intel.com \
    --cc=cloud.wangxiaoyun@huawei.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=gtzalik@amazon.com \
    --cc=haiyangz@microsoft.com \
    --cc=haiyue.wang@intel.com \
    --cc=heinrich.kuhn@netronome.com \
    --cc=hkalra@marvell.com \
    --cc=hyonkim@cisco.com \
    --cc=igorch@amazon.com \
    --cc=jerinj@marvell.com \
    --cc=jingjing.wu@intel.com \
    --cc=john.miller@atomicrules.com \
    --cc=johndale@cisco.com \
    --cc=kys@microsoft.com \
    --cc=lironh@marvell.com \
    --cc=longli@microsoft.com \
    --cc=matan@nvidia.com \
    --cc=matt.peters@windriver.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mczekaj@marvell.com \
    --cc=mk@semihalf.com \
    --cc=mw@semihalf.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rosen.xu@intel.com \
    --cc=sachin.saxena@oss.nxp.com \
    --cc=shahafs@nvidia.com \
    --cc=shepard.siegel@atomicrules.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=xiao.w.wang@intel.com \
    --cc=xuanziyang2@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).