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
next prev 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 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
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.