Message ID | 20200927234249.3198780-3-thomas@monjalon.net (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Thomas Monjalon |
Headers | show |
Series | cleanup ethdev close operation | expand |
Context | Check | Description |
---|---|---|
ci/checkpatch | success | coding style OK |
Hi, > -----Original Message----- > From: Thomas Monjalon <thomas@monjalon.net> > Sent: Monday, September 28, 2020 7:42 > To: dev@dpdk.org > Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; arybchenko@solarflare.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>; Alfredo Cardigliano <cardigliano@ntop.org>; Xu, > Rosen <rosen.xu@intel.com>; Shijith Thotton <sthotton@marvell.com>; > Srisivasubramanian Srinivasan <srinivasan@marvell.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>; Liron Himi <lironh@marvell.com>; Stephen > Hemminger <sthemmin@microsoft.com>; K. Y. Srinivasan > <kys@microsoft.com>; Haiyang Zhang <haiyangz@microsoft.com>; Long Li > <longli@microsoft.com>; Martin Spinler <spinler@cesnet.cz>; Heinrich Kuhn > <heinrich.kuhn@netronome.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>; Singh, Jasvinder > <jasvinder.singh@intel.com>; Dumitrescu, Cristian > <cristian.dumitrescu@intel.com>; Wiles, Keith <keith.wiles@intel.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> > Subject: [PATCH v2 02/25] ethdev: allow drivers to return error on close > > The device operation .dev_close was returning void. > This driver interface is changed to return an int. > > Note that the API rte_eth_dev_close() is still returning void, > although a deprecation notice is pending to change it as well. > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net> > --- > app/test/virtual_pmd.c | 6 ++++-- > drivers/net/af_packet/rte_eth_af_packet.c | 3 ++- > drivers/net/af_xdp/rte_eth_af_xdp.c | 4 +++- > drivers/net/ark/ark_ethdev.c | 6 ++++-- > drivers/net/atlantic/atl_ethdev.c | 6 ++++-- > drivers/net/avp/avp_ethdev.c | 5 +++-- > drivers/net/axgbe/axgbe_ethdev.c | 5 +++-- > drivers/net/bnx2x/bnx2x_ethdev.c | 4 +++- > drivers/net/bnxt/bnxt_ethdev.c | 4 +++- > drivers/net/bnxt/bnxt_reps.c | 3 ++- > drivers/net/bnxt/bnxt_reps.h | 2 +- > drivers/net/bonding/eth_bond_private.h | 2 +- > drivers/net/bonding/rte_eth_bond_pmd.c | 4 +++- > drivers/net/cxgbe/cxgbe_ethdev.c | 10 ++++++---- > drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- > drivers/net/dpaa/dpaa_ethdev.c | 4 +++- > drivers/net/dpaa2/dpaa2_ethdev.c | 6 ++++-- > drivers/net/e1000/em_ethdev.c | 6 ++++-- > drivers/net/e1000/igb_ethdev.c | 12 ++++++++---- > drivers/net/ena/ena_ethdev.c | 6 ++++-- > drivers/net/enetc/enetc_ethdev.c | 4 +++- > drivers/net/enic/enic_ethdev.c | 4 +++- > drivers/net/enic/enic_vf_representor.c | 5 +++-- > drivers/net/failsafe/failsafe_ops.c | 3 ++- > drivers/net/fm10k/fm10k_ethdev.c | 4 +++- > drivers/net/hinic/hinic_pmd_ethdev.c | 6 ++++-- > drivers/net/hns3/hns3_ethdev.c | 6 ++++-- > drivers/net/hns3/hns3_ethdev_vf.c | 6 ++++-- > drivers/net/i40e/i40e_ethdev.c | 5 +++-- > drivers/net/i40e/i40e_ethdev_vf.c | 5 +++-- > drivers/net/iavf/iavf_ethdev.c | 6 ++++-- > drivers/net/ice/ice_dcf_ethdev.c | 6 ++++-- > drivers/net/ice/ice_ethdev.c | 6 ++++-- > drivers/net/igc/igc_ethdev.c | 6 ++++-- > drivers/net/ionic/ionic_ethdev.c | 10 ++++++---- > drivers/net/ipn3ke/ipn3ke_representor.c | 4 +++- > drivers/net/ixgbe/ixgbe_ethdev.c | 11 +++++++---- > drivers/net/kni/rte_eth_kni.c | 4 +++- > drivers/net/liquidio/lio_ethdev.c | 4 +++- > drivers/net/memif/rte_eth_memif.c | 4 +++- > drivers/net/mlx4/mlx4.c | 3 ++- > drivers/net/mlx5/mlx5.c | 9 +++++---- > drivers/net/mlx5/mlx5.h | 2 +- > drivers/net/mvneta/mvneta_ethdev.c | 4 +++- > drivers/net/mvpp2/mrvl_ethdev.c | 4 +++- > drivers/net/netvsc/hn_ethdev.c | 4 +++- > drivers/net/nfb/nfb_ethdev.c | 4 +++- > drivers/net/nfp/nfp_net.c | 6 ++++-- > drivers/net/octeontx/octeontx_ethdev.c | 4 +++- > drivers/net/octeontx2/otx2_ethdev.c | 5 +++-- > drivers/net/pcap/rte_eth_pcap.c | 3 ++- > drivers/net/pfe/pfe_ethdev.c | 8 +++++--- > drivers/net/qede/qede_ethdev.c | 4 +++- > drivers/net/sfc/sfc_ethdev.c | 4 +++- > drivers/net/softnic/rte_eth_softnic.c | 4 ++-- > drivers/net/szedata2/rte_eth_szedata2.c | 4 +++- > drivers/net/tap/rte_eth_tap.c | 4 +++- > drivers/net/thunderx/nicvf_ethdev.c | 4 +++- > drivers/net/vhost/rte_eth_vhost.c | 6 ++++-- > drivers/net/virtio/virtio_ethdev.c | 6 ++++-- > drivers/net/vmxnet3/vmxnet3_ethdev.c | 6 ++++-- > lib/librte_ethdev/rte_ethdev_driver.h | 2 +- > 62 files changed, 206 insertions(+), 103 deletions(-) > > static int > diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c > b/drivers/net/ipn3ke/ipn3ke_representor.c > index b673c49149..d49abbf758 100644 > --- a/drivers/net/ipn3ke/ipn3ke_representor.c > +++ b/drivers/net/ipn3ke/ipn3ke_representor.c > @@ -208,7 +208,7 @@ ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) > } > } > > -static void > +static int > ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) > { > struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); > @@ -221,6 +221,8 @@ ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) > /* Disable the RX path */ > ipn3ke_xmac_rx_disable(hw, rpst->port_id, 0); > } > + > + return 0; > } > > /* > 2.28.0 For net/ipn3ke Reviewed-by: Rosen Xu <rosen.xu@intel.com>
For dpaa, dpaa2, enetc and pfe. Reviewed-by: Sachin Saxena<sachin.saxena@oss.nxp.com> On 28-Sep-20 5:12 AM, Thomas Monjalon wrote: > The device operation .dev_close was returning void. > This driver interface is changed to return an int. > > Note that the API rte_eth_dev_close() is still returning void, > although a deprecation notice is pending to change it as well. > > Signed-off-by: Thomas Monjalon <thomas@monjalon.net> > --- > app/test/virtual_pmd.c | 6 ++++-- > drivers/net/af_packet/rte_eth_af_packet.c | 3 ++- > drivers/net/af_xdp/rte_eth_af_xdp.c | 4 +++- > drivers/net/ark/ark_ethdev.c | 6 ++++-- > drivers/net/atlantic/atl_ethdev.c | 6 ++++-- > drivers/net/avp/avp_ethdev.c | 5 +++-- > drivers/net/axgbe/axgbe_ethdev.c | 5 +++-- > drivers/net/bnx2x/bnx2x_ethdev.c | 4 +++- > drivers/net/bnxt/bnxt_ethdev.c | 4 +++- > drivers/net/bnxt/bnxt_reps.c | 3 ++- > drivers/net/bnxt/bnxt_reps.h | 2 +- > drivers/net/bonding/eth_bond_private.h | 2 +- > drivers/net/bonding/rte_eth_bond_pmd.c | 4 +++- > drivers/net/cxgbe/cxgbe_ethdev.c | 10 ++++++---- > drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- > drivers/net/dpaa/dpaa_ethdev.c | 4 +++- > drivers/net/dpaa2/dpaa2_ethdev.c | 6 ++++-- > drivers/net/e1000/em_ethdev.c | 6 ++++-- > drivers/net/e1000/igb_ethdev.c | 12 ++++++++---- > drivers/net/ena/ena_ethdev.c | 6 ++++-- > drivers/net/enetc/enetc_ethdev.c | 4 +++- > drivers/net/enic/enic_ethdev.c | 4 +++- > drivers/net/enic/enic_vf_representor.c | 5 +++-- > drivers/net/failsafe/failsafe_ops.c | 3 ++- > drivers/net/fm10k/fm10k_ethdev.c | 4 +++- > drivers/net/hinic/hinic_pmd_ethdev.c | 6 ++++-- > drivers/net/hns3/hns3_ethdev.c | 6 ++++-- > drivers/net/hns3/hns3_ethdev_vf.c | 6 ++++-- > drivers/net/i40e/i40e_ethdev.c | 5 +++-- > drivers/net/i40e/i40e_ethdev_vf.c | 5 +++-- > drivers/net/iavf/iavf_ethdev.c | 6 ++++-- > drivers/net/ice/ice_dcf_ethdev.c | 6 ++++-- > drivers/net/ice/ice_ethdev.c | 6 ++++-- > drivers/net/igc/igc_ethdev.c | 6 ++++-- > drivers/net/ionic/ionic_ethdev.c | 10 ++++++---- > drivers/net/ipn3ke/ipn3ke_representor.c | 4 +++- > drivers/net/ixgbe/ixgbe_ethdev.c | 11 +++++++---- > drivers/net/kni/rte_eth_kni.c | 4 +++- > drivers/net/liquidio/lio_ethdev.c | 4 +++- > drivers/net/memif/rte_eth_memif.c | 4 +++- > drivers/net/mlx4/mlx4.c | 3 ++- > drivers/net/mlx5/mlx5.c | 9 +++++---- > drivers/net/mlx5/mlx5.h | 2 +- > drivers/net/mvneta/mvneta_ethdev.c | 4 +++- > drivers/net/mvpp2/mrvl_ethdev.c | 4 +++- > drivers/net/netvsc/hn_ethdev.c | 4 +++- > drivers/net/nfb/nfb_ethdev.c | 4 +++- > drivers/net/nfp/nfp_net.c | 6 ++++-- > drivers/net/octeontx/octeontx_ethdev.c | 4 +++- > drivers/net/octeontx2/otx2_ethdev.c | 5 +++-- > drivers/net/pcap/rte_eth_pcap.c | 3 ++- > drivers/net/pfe/pfe_ethdev.c | 8 +++++--- > drivers/net/qede/qede_ethdev.c | 4 +++- > drivers/net/sfc/sfc_ethdev.c | 4 +++- > drivers/net/softnic/rte_eth_softnic.c | 4 ++-- > drivers/net/szedata2/rte_eth_szedata2.c | 4 +++- > drivers/net/tap/rte_eth_tap.c | 4 +++- > drivers/net/thunderx/nicvf_ethdev.c | 4 +++- > drivers/net/vhost/rte_eth_vhost.c | 6 ++++-- > drivers/net/virtio/virtio_ethdev.c | 6 ++++-- > drivers/net/vmxnet3/vmxnet3_ethdev.c | 6 ++++-- > lib/librte_ethdev/rte_ethdev_driver.h | 2 +- > 62 files changed, 206 insertions(+), 103 deletions(-) > > diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c > index b49089a33c..4bd4d1c9ad 100644 > --- a/app/test/virtual_pmd.c > +++ b/app/test/virtual_pmd.c > @@ -62,9 +62,11 @@ static void virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) > rte_pktmbuf_free(pkt); > } > > -static void > +static int > virtual_ethdev_close(struct rte_eth_dev *dev __rte_unused) > -{} > +{ > + return 0; > +} > > static int > virtual_ethdev_configure_success(struct rte_eth_dev *dev __rte_unused) > diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c > index b9723e9619..7d0ff1cbb3 100644 > --- a/drivers/net/af_packet/rte_eth_af_packet.c > +++ b/drivers/net/af_packet/rte_eth_af_packet.c > @@ -376,9 +376,10 @@ eth_stats_reset(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > eth_dev_close(struct rte_eth_dev *dev __rte_unused) > { > + return 0; > } > > static void > diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c > index b65ee449fc..badbce63fb 100644 > --- a/drivers/net/af_xdp/rte_eth_af_xdp.c > +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c > @@ -701,7 +701,7 @@ xdp_umem_destroy(struct xsk_umem_info *umem) > umem = NULL; > } > > -static void > +static int > eth_dev_close(struct rte_eth_dev *dev) > { > struct pmd_internals *internals = dev->data->dev_private; > @@ -731,6 +731,8 @@ eth_dev_close(struct rte_eth_dev *dev) > dev->data->mac_addrs = NULL; > > remove_xdp_program(internals); > + > + return 0; > } > > static void > diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c > index e13415e95b..5f2ed4b7b7 100644 > --- a/drivers/net/ark/ark_ethdev.c > +++ b/drivers/net/ark/ark_ethdev.c > @@ -30,7 +30,7 @@ static int eth_ark_dev_uninit(struct rte_eth_dev *eth_dev); > static int eth_ark_dev_configure(struct rte_eth_dev *dev); > static int eth_ark_dev_start(struct rte_eth_dev *dev); > static void eth_ark_dev_stop(struct rte_eth_dev *dev); > -static void eth_ark_dev_close(struct rte_eth_dev *dev); > +static int eth_ark_dev_close(struct rte_eth_dev *dev); > static int eth_ark_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > static int eth_ark_dev_link_update(struct rte_eth_dev *dev, > @@ -676,7 +676,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) > } > } > > -static void > +static int > eth_ark_dev_close(struct rte_eth_dev *dev) > { > struct ark_adapter *ark = dev->data->dev_private; > @@ -706,6 +706,8 @@ eth_ark_dev_close(struct rte_eth_dev *dev) > > rte_free(dev->data->mac_addrs); > dev->data->mac_addrs = 0; > + > + return 0; > } > > static int > diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c > index 2fca9140d7..254758fd66 100644 > --- a/drivers/net/atlantic/atl_ethdev.c > +++ b/drivers/net/atlantic/atl_ethdev.c > @@ -22,7 +22,7 @@ static int atl_dev_start(struct rte_eth_dev *dev); > static void atl_dev_stop(struct rte_eth_dev *dev); > static int atl_dev_set_link_up(struct rte_eth_dev *dev); > static int atl_dev_set_link_down(struct rte_eth_dev *dev); > -static void atl_dev_close(struct rte_eth_dev *dev); > +static int atl_dev_close(struct rte_eth_dev *dev); > static int atl_dev_reset(struct rte_eth_dev *dev); > static int atl_dev_promiscuous_enable(struct rte_eth_dev *dev); > static int atl_dev_promiscuous_disable(struct rte_eth_dev *dev); > @@ -719,7 +719,7 @@ atl_dev_set_link_down(struct rte_eth_dev *dev) > /* > * Reset and stop device. > */ > -static void > +static int > atl_dev_close(struct rte_eth_dev *dev) > { > PMD_INIT_FUNC_TRACE(); > @@ -727,6 +727,8 @@ atl_dev_close(struct rte_eth_dev *dev) > atl_dev_stop(dev); > > atl_free_queues(dev); > + > + return 0; > } > > static int > diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c > index 5b47f0924a..2eed6acc3f 100644 > --- a/drivers/net/avp/avp_ethdev.c > +++ b/drivers/net/avp/avp_ethdev.c > @@ -38,7 +38,7 @@ static int avp_dev_create(struct rte_pci_device *pci_dev, > static int avp_dev_configure(struct rte_eth_dev *dev); > static int avp_dev_start(struct rte_eth_dev *dev); > static void avp_dev_stop(struct rte_eth_dev *dev); > -static void avp_dev_close(struct rte_eth_dev *dev); > +static int avp_dev_close(struct rte_eth_dev *dev); > static int avp_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > static int avp_vlan_offload_set(struct rte_eth_dev *dev, int mask); > @@ -2103,7 +2103,7 @@ avp_dev_stop(struct rte_eth_dev *eth_dev) > rte_spinlock_unlock(&avp->lock); > } > > -static void > +static int > avp_dev_close(struct rte_eth_dev *eth_dev) > { > struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); > @@ -2139,6 +2139,7 @@ avp_dev_close(struct rte_eth_dev *eth_dev) > > unlock: > rte_spinlock_unlock(&avp->lock); > + return 0; > } > > static int > diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c > index 4f5a014b54..458d64bcef 100644 > --- a/drivers/net/axgbe/axgbe_ethdev.c > +++ b/drivers/net/axgbe/axgbe_ethdev.c > @@ -16,7 +16,7 @@ static int axgbe_dev_configure(struct rte_eth_dev *dev); > static int axgbe_dev_start(struct rte_eth_dev *dev); > static void axgbe_dev_stop(struct rte_eth_dev *dev); > static void axgbe_dev_interrupt_handler(void *param); > -static void axgbe_dev_close(struct rte_eth_dev *dev); > +static int axgbe_dev_close(struct rte_eth_dev *dev); > static int axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); > static int axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); > static int axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev); > @@ -410,10 +410,11 @@ axgbe_dev_stop(struct rte_eth_dev *dev) > } > > /* Clear all resources like TX/RX queues. */ > -static void > +static int > axgbe_dev_close(struct rte_eth_dev *dev) > { > axgbe_dev_clear_queues(dev); > + return 0; > } > > static int > diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c > index b2ea5fafa7..73217c2138 100644 > --- a/drivers/net/bnx2x/bnx2x_ethdev.c > +++ b/drivers/net/bnx2x/bnx2x_ethdev.c > @@ -280,7 +280,7 @@ bnx2x_dev_stop(struct rte_eth_dev *dev) > return; > } > > -static void > +static int > bnx2x_dev_close(struct rte_eth_dev *dev) > { > struct bnx2x_softc *sc = dev->data->dev_private; > @@ -295,6 +295,8 @@ bnx2x_dev_close(struct rte_eth_dev *dev) > > /* free ilt */ > bnx2x_free_ilt_mem(sc); > + > + return 0; > } > > static int > diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c > index 05e9a6abbf..e726d078ec 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -1357,7 +1357,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) > bp->flow_stat->flow_count = 0; > } > > -static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) > +static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) > { > struct bnxt *bp = eth_dev->data->dev_private; > > @@ -1392,6 +1392,8 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) > > rte_free(bp->grp_info); > bp->grp_info = NULL; > + > + return 0; > } > > static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev, > diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c > index 17010f1ee2..2b6c0a277b 100644 > --- a/drivers/net/bnxt/bnxt_reps.c > +++ b/drivers/net/bnxt/bnxt_reps.c > @@ -457,10 +457,11 @@ void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev) > bnxt_vf_rep_free_rx_mbufs(vfr_bp); > } > > -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) > +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) > { > BNXT_TF_DBG(DEBUG, "BNXT Port:%d VFR close\n", eth_dev->data->port_id); > bnxt_vf_representor_uninit(eth_dev); > + return 0; > } > > int bnxt_vf_rep_dev_info_get_op(struct rte_eth_dev *eth_dev, > diff --git a/drivers/net/bnxt/bnxt_reps.h b/drivers/net/bnxt/bnxt_reps.h > index 3239e03fc0..d9b9ee2757 100644 > --- a/drivers/net/bnxt/bnxt_reps.h > +++ b/drivers/net/bnxt/bnxt_reps.h > @@ -45,7 +45,7 @@ int bnxt_vf_rep_tx_queue_setup_op(struct rte_eth_dev *eth_dev, > void bnxt_vf_rep_rx_queue_release_op(void *rx_queue); > void bnxt_vf_rep_tx_queue_release_op(void *tx_queue); > void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev); > -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); > +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); > int bnxt_vf_rep_stats_get_op(struct rte_eth_dev *eth_dev, > struct rte_eth_stats *stats); > int bnxt_vf_rep_stats_reset_op(struct rte_eth_dev *eth_dev); > diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h > index c9b2d0fe46..0a0034705d 100644 > --- a/drivers/net/bonding/eth_bond_private.h > +++ b/drivers/net/bonding/eth_bond_private.h > @@ -318,7 +318,7 @@ bond_tlb_activate_slave(struct bond_dev_private *internals); > void > bond_ethdev_stop(struct rte_eth_dev *eth_dev); > > -void > +int > bond_ethdev_close(struct rte_eth_dev *dev); > > #endif > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c > index 4ffd2ca4bb..dff835ef92 100644 > --- a/drivers/net/bonding/rte_eth_bond_pmd.c > +++ b/drivers/net/bonding/rte_eth_bond_pmd.c > @@ -2095,7 +2095,7 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev) > } > } > > -void > +int > bond_ethdev_close(struct rte_eth_dev *dev) > { > struct bond_dev_private *internals = dev->data->dev_private; > @@ -2119,6 +2119,8 @@ bond_ethdev_close(struct rte_eth_dev *dev) > bond_flow_ops.flush(dev, &ferror); > bond_ethdev_free_queues(dev); > rte_bitmap_reset(internals->vlan_filter_bmp); > + > + return 0; > } > > /* forward declaration */ > diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c > index 422e190daf..e4bbba5c32 100644 > --- a/drivers/net/cxgbe/cxgbe_ethdev.c > +++ b/drivers/net/cxgbe/cxgbe_ethdev.c > @@ -318,7 +318,7 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > /* > * Stop device. > */ > -void cxgbe_dev_close(struct rte_eth_dev *eth_dev) > +int cxgbe_dev_close(struct rte_eth_dev *eth_dev) > { > struct port_info *temp_pi, *pi = eth_dev->data->dev_private; > struct adapter *adapter = pi->adapter; > @@ -327,10 +327,10 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) > CXGBE_FUNC_TRACE(); > > if (!(adapter->flags & FULL_INIT_DONE)) > - return; > + return 0; > > if (!pi->viid) > - return; > + return 0; > > cxgbe_down(pi); > t4_sge_eth_release_queues(pi); > @@ -343,11 +343,13 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) > for_each_port(adapter, i) { > temp_pi = adap2pinfo(adapter, i); > if (temp_pi->viid) > - return; > + return 0; > } > > cxgbe_close(adapter); > rte_free(adapter); > + > + return 0; > } > > /* Start the device. > diff --git a/drivers/net/cxgbe/cxgbe_pfvf.h b/drivers/net/cxgbe/cxgbe_pfvf.h > index 0b7c52aecf..69d91639e9 100644 > --- a/drivers/net/cxgbe/cxgbe_pfvf.h > +++ b/drivers/net/cxgbe/cxgbe_pfvf.h > @@ -19,7 +19,7 @@ > void cxgbe_dev_rx_queue_release(void *q); > void cxgbe_dev_tx_queue_release(void *q); > void cxgbe_dev_stop(struct rte_eth_dev *eth_dev); > -void cxgbe_dev_close(struct rte_eth_dev *eth_dev); > +int cxgbe_dev_close(struct rte_eth_dev *eth_dev); > int cxgbe_dev_info_get(struct rte_eth_dev *eth_dev, > struct rte_eth_dev_info *device_info); > int cxgbe_dev_promiscuous_enable(struct rte_eth_dev *eth_dev); > diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c > index 8a6b19b5ce..7fe06e1830 100644 > --- a/drivers/net/dpaa/dpaa_ethdev.c > +++ b/drivers/net/dpaa/dpaa_ethdev.c > @@ -369,7 +369,7 @@ static void dpaa_eth_dev_stop(struct rte_eth_dev *dev) > dev->tx_pkt_burst = dpaa_eth_tx_drop_all; > } > > -static void dpaa_eth_dev_close(struct rte_eth_dev *dev) > +static int dpaa_eth_dev_close(struct rte_eth_dev *dev) > { > struct fman_if *fif = dev->process_private; > struct __fman_if *__fif; > @@ -392,6 +392,8 @@ static void dpaa_eth_dev_close(struct rte_eth_dev *dev) > dpaa_interrupt_handler, > (void *)dev); > } > + > + return 0; > } > > static int > diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c > index 02daa4d250..fb4165fa03 100644 > --- a/drivers/net/dpaa2/dpaa2_ethdev.c > +++ b/drivers/net/dpaa2/dpaa2_ethdev.c > @@ -1236,7 +1236,7 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) > rte_eth_linkstatus_set(dev, &link); > } > > -static void > +static int > dpaa2_dev_close(struct rte_eth_dev *dev) > { > struct dpaa2_dev_priv *priv = dev->data->dev_private; > @@ -1252,11 +1252,13 @@ dpaa2_dev_close(struct rte_eth_dev *dev) > ret = dpni_reset(dpni, CMD_PRI_LOW, priv->token); > if (ret) { > DPAA2_PMD_ERR("Failure cleaning dpni device: err=%d", ret); > - return; > + return -1; > } > > memset(&link, 0, sizeof(link)); > rte_eth_linkstatus_set(dev, &link); > + > + return 0; > } > > static int > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index 1dc360713a..2d0e071448 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -34,7 +34,7 @@ > static int eth_em_configure(struct rte_eth_dev *dev); > static int eth_em_start(struct rte_eth_dev *dev); > static void eth_em_stop(struct rte_eth_dev *dev); > -static void eth_em_close(struct rte_eth_dev *dev); > +static int eth_em_close(struct rte_eth_dev *dev); > static int eth_em_promiscuous_enable(struct rte_eth_dev *dev); > static int eth_em_promiscuous_disable(struct rte_eth_dev *dev); > static int eth_em_allmulticast_enable(struct rte_eth_dev *dev); > @@ -758,7 +758,7 @@ eth_em_stop(struct rte_eth_dev *dev) > } > } > > -static void > +static int > eth_em_close(struct rte_eth_dev *dev) > { > struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -782,6 +782,8 @@ eth_em_close(struct rte_eth_dev *dev) > rte_intr_disable(intr_handle); > rte_intr_callback_unregister(intr_handle, > eth_em_interrupt_handler, dev); > + > + return 0; > } > > static int > diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c > index 5ab74840aa..9e4aefe00c 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -77,7 +77,7 @@ static int eth_igb_start(struct rte_eth_dev *dev); > static void eth_igb_stop(struct rte_eth_dev *dev); > static int eth_igb_dev_set_link_up(struct rte_eth_dev *dev); > static int eth_igb_dev_set_link_down(struct rte_eth_dev *dev); > -static void eth_igb_close(struct rte_eth_dev *dev); > +static int eth_igb_close(struct rte_eth_dev *dev); > static int eth_igb_reset(struct rte_eth_dev *dev); > static int eth_igb_promiscuous_enable(struct rte_eth_dev *dev); > static int eth_igb_promiscuous_disable(struct rte_eth_dev *dev); > @@ -155,7 +155,7 @@ static void igbvf_intr_disable(struct e1000_hw *hw); > static int igbvf_dev_configure(struct rte_eth_dev *dev); > static int igbvf_dev_start(struct rte_eth_dev *dev); > static void igbvf_dev_stop(struct rte_eth_dev *dev); > -static void igbvf_dev_close(struct rte_eth_dev *dev); > +static int igbvf_dev_close(struct rte_eth_dev *dev); > static int igbvf_promiscuous_enable(struct rte_eth_dev *dev); > static int igbvf_promiscuous_disable(struct rte_eth_dev *dev); > static int igbvf_allmulticast_enable(struct rte_eth_dev *dev); > @@ -1535,7 +1535,7 @@ eth_igb_dev_set_link_down(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > eth_igb_close(struct rte_eth_dev *dev) > { > struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -1604,6 +1604,8 @@ eth_igb_close(struct rte_eth_dev *dev) > > /* clear all the filters list */ > igb_filterlist_flush(dev); > + > + return 0; > } > > /* > @@ -3381,7 +3383,7 @@ igbvf_dev_stop(struct rte_eth_dev *dev) > adapter->stopped = true; > } > > -static void > +static int > igbvf_dev_close(struct rte_eth_dev *dev) > { > struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -3412,6 +3414,8 @@ igbvf_dev_close(struct rte_eth_dev *dev) > rte_intr_callback_unregister(&pci_dev->intr_handle, > eth_igbvf_interrupt_handler, > (void *)dev); > + > + return 0; > } > > static int > diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c > index 8077519735..ae6daad892 100644 > --- a/drivers/net/ena/ena_ethdev.c > +++ b/drivers/net/ena/ena_ethdev.c > @@ -187,7 +187,7 @@ static void ena_init_rings(struct ena_adapter *adapter, > static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); > static int ena_start(struct rte_eth_dev *dev); > static void ena_stop(struct rte_eth_dev *dev); > -static void ena_close(struct rte_eth_dev *dev); > +static int ena_close(struct rte_eth_dev *dev); > static int ena_dev_reset(struct rte_eth_dev *dev); > static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); > static void ena_rx_queue_release_all(struct rte_eth_dev *dev); > @@ -487,7 +487,7 @@ static void ena_config_debug_area(struct ena_adapter *adapter) > ena_com_delete_debug_area(&adapter->ena_dev); > } > > -static void ena_close(struct rte_eth_dev *dev) > +static int ena_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; > @@ -513,6 +513,8 @@ static void ena_close(struct rte_eth_dev *dev) > * release of the resource in the rte_eth_dev_release_port(). > */ > dev->data->mac_addrs = NULL; > + > + return 0; > } > > static int > diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c > index c6fb42740d..bdb32762ce 100644 > --- a/drivers/net/enetc/enetc_ethdev.c > +++ b/drivers/net/enetc/enetc_ethdev.c > @@ -545,7 +545,7 @@ enetc_stats_reset(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > enetc_dev_close(struct rte_eth_dev *dev) > { > uint16_t i; > @@ -564,6 +564,8 @@ enetc_dev_close(struct rte_eth_dev *dev) > dev->data->tx_queues[i] = NULL; > } > dev->data->nb_tx_queues = 0; > + > + return 0; > } > > static int > diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c > index 57e82845a4..ed03d53608 100644 > --- a/drivers/net/enic/enic_ethdev.c > +++ b/drivers/net/enic/enic_ethdev.c > @@ -446,12 +446,14 @@ static void enicpmd_dev_stop(struct rte_eth_dev *eth_dev) > /* > * Stop device. > */ > -static void enicpmd_dev_close(struct rte_eth_dev *eth_dev) > +static int enicpmd_dev_close(struct rte_eth_dev *eth_dev) > { > struct enic *enic = pmd_priv(eth_dev); > > ENICPMD_FUNC_TRACE(); > enic_remove(enic); > + > + return 0; > } > > static int enicpmd_dev_link_update(struct rte_eth_dev *eth_dev, > diff --git a/drivers/net/enic/enic_vf_representor.c b/drivers/net/enic/enic_vf_representor.c > index 5d34e1b460..c528be2b98 100644 > --- a/drivers/net/enic/enic_vf_representor.c > +++ b/drivers/net/enic/enic_vf_representor.c > @@ -277,11 +277,12 @@ static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) > * "close" is no-op for now and solely exists so that rte_eth_dev_close() > * can finish its own cleanup without errors. > */ > -static void enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) > +static int enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) > { > ENICPMD_FUNC_TRACE(); > if (rte_eal_process_type() != RTE_PROC_PRIMARY) > - return; > + return 0; > + return 0; > } > > static int > diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c > index 96f7e456f9..93ebd09114 100644 > --- a/drivers/net/failsafe/failsafe_ops.c > +++ b/drivers/net/failsafe/failsafe_ops.c > @@ -240,7 +240,7 @@ fs_dev_set_link_down(struct rte_eth_dev *dev) > } > > static void fs_dev_free_queues(struct rte_eth_dev *dev); > -static void > +static int > fs_dev_close(struct rte_eth_dev *dev) > { > struct sub_device *sdev; > @@ -259,6 +259,7 @@ fs_dev_close(struct rte_eth_dev *dev) > } > fs_dev_free_queues(dev); > fs_unlock(dev, 0); > + return 0; > } > > static int > diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c > index 5771d83b55..533f976709 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -2776,7 +2776,7 @@ fm10k_close_mbx_service(struct fm10k_hw *hw) > hw->mbx.ops.disconnect(hw, &hw->mbx); > } > > -static void > +static int > fm10k_dev_close(struct rte_eth_dev *dev) > { > struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -2821,6 +2821,8 @@ fm10k_dev_close(struct rte_eth_dev *dev) > rte_intr_callback_unregister(intr_handle, > fm10k_dev_interrupt_handler_vf, (void *)dev); > } > + > + return 0; > } > > static const struct eth_dev_ops fm10k_eth_dev_ops = { > diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c > index 67e6afcf7a..5f2e97d3bd 100644 > --- a/drivers/net/hinic/hinic_pmd_ethdev.c > +++ b/drivers/net/hinic/hinic_pmd_ethdev.c > @@ -2936,7 +2936,7 @@ static void hinic_nic_dev_destroy(struct rte_eth_dev *eth_dev) > * @param dev > * Pointer to Ethernet device structure. > */ > -static void hinic_dev_close(struct rte_eth_dev *dev) > +static int hinic_dev_close(struct rte_eth_dev *dev) > { > struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); > > @@ -2944,7 +2944,7 @@ static void hinic_dev_close(struct rte_eth_dev *dev) > &nic_dev->dev_status)) { > PMD_DRV_LOG(WARNING, "Device %s already closed", > dev->data->name); > - return; > + return 0; > } > > /* stop device first */ > @@ -2971,6 +2971,8 @@ static void hinic_dev_close(struct rte_eth_dev *dev) > > /* deinit nic hardware device */ > hinic_nic_dev_destroy(dev); > + > + return 0; > } > > static const struct eth_dev_ops hinic_pmd_ops = { > diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c > index 73d504253d..3b395a1ccf 100644 > --- a/drivers/net/hns3/hns3_ethdev.c > +++ b/drivers/net/hns3/hns3_ethdev.c > @@ -4859,7 +4859,7 @@ hns3_dev_stop(struct rte_eth_dev *dev) > rte_spinlock_unlock(&hw->lock); > } > > -static void > +static int > hns3_dev_close(struct rte_eth_dev *eth_dev) > { > struct hns3_adapter *hns = eth_dev->data->dev_private; > @@ -4868,7 +4868,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) > if (rte_eal_process_type() != RTE_PROC_PRIMARY) { > rte_free(eth_dev->process_private); > eth_dev->process_private = NULL; > - return; > + return 0; > } > > if (hw->adapter_state == HNS3_NIC_STARTED) > @@ -4888,6 +4888,8 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) > eth_dev->process_private = NULL; > hns3_mp_uninit_primary(); > hns3_warn(hw, "Close port %d finished", hw->data->port_id); > + > + return 0; > } > > static int > diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c > index 037a5be7e0..e0ca5a6ac2 100644 > --- a/drivers/net/hns3/hns3_ethdev_vf.c > +++ b/drivers/net/hns3/hns3_ethdev_vf.c > @@ -1910,14 +1910,14 @@ hns3vf_dev_stop(struct rte_eth_dev *dev) > rte_spinlock_unlock(&hw->lock); > } > > -static void > +static int > hns3vf_dev_close(struct rte_eth_dev *eth_dev) > { > struct hns3_adapter *hns = eth_dev->data->dev_private; > struct hns3_hw *hw = &hns->hw; > > if (rte_eal_process_type() != RTE_PROC_PRIMARY) > - return; > + return 0; > > if (hw->adapter_state == HNS3_NIC_STARTED) > hns3vf_dev_stop(eth_dev); > @@ -1935,6 +1935,8 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev) > eth_dev->process_private = NULL; > hns3_mp_uninit_primary(); > hns3_warn(hw, "Close port %d finished", hw->data->port_id); > + > + return 0; > } > > static int > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 563f21d9df..804f0128ab 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -225,7 +225,7 @@ static int eth_i40e_dev_uninit(struct rte_eth_dev *eth_dev); > static int i40e_dev_configure(struct rte_eth_dev *dev); > static int i40e_dev_start(struct rte_eth_dev *dev); > static void i40e_dev_stop(struct rte_eth_dev *dev); > -static void i40e_dev_close(struct rte_eth_dev *dev); > +static int i40e_dev_close(struct rte_eth_dev *dev); > static int i40e_dev_reset(struct rte_eth_dev *dev); > static int i40e_dev_promiscuous_enable(struct rte_eth_dev *dev); > static int i40e_dev_promiscuous_disable(struct rte_eth_dev *dev); > @@ -2608,7 +2608,7 @@ i40e_dev_stop(struct rte_eth_dev *dev) > pf->adapter->rss_reta_updated = 0; > } > > -static void > +static int > i40e_dev_close(struct rte_eth_dev *dev) > { > struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); > @@ -2748,6 +2748,7 @@ i40e_dev_close(struct rte_eth_dev *dev) > i40e_tm_conf_uninit(dev); > > hw->adapter_closed = 1; > + return 0; > } > > /* > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c > index 8531cf6b12..61aad8c415 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -90,7 +90,7 @@ static int i40evf_dev_xstats_reset(struct rte_eth_dev *dev); > static int i40evf_vlan_filter_set(struct rte_eth_dev *dev, > uint16_t vlan_id, int on); > static int i40evf_vlan_offload_set(struct rte_eth_dev *dev, int mask); > -static void i40evf_dev_close(struct rte_eth_dev *dev); > +static int i40evf_dev_close(struct rte_eth_dev *dev); > static int i40evf_dev_reset(struct rte_eth_dev *dev); > static int i40evf_check_vf_reset_done(struct rte_eth_dev *dev); > static int i40evf_dev_promiscuous_enable(struct rte_eth_dev *dev); > @@ -2401,7 +2401,7 @@ i40evf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) > return ret; > } > > -static void > +static int > i40evf_dev_close(struct rte_eth_dev *dev) > { > struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -2433,6 +2433,7 @@ i40evf_dev_close(struct rte_eth_dev *dev) > vf->aq_resp = NULL; > > hw->adapter_closed = 1; > + return 0; > } > > /* > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 440da7d76a..8f46c4588f 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -32,7 +32,7 @@ > static int iavf_dev_configure(struct rte_eth_dev *dev); > static int iavf_dev_start(struct rte_eth_dev *dev); > static void iavf_dev_stop(struct rte_eth_dev *dev); > -static void iavf_dev_close(struct rte_eth_dev *dev); > +static int iavf_dev_close(struct rte_eth_dev *dev); > static int iavf_dev_reset(struct rte_eth_dev *dev); > static int iavf_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > @@ -1463,7 +1463,7 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) > return 0; > } > > -static void > +static int > iavf_dev_close(struct rte_eth_dev *dev) > { > struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -1506,6 +1506,8 @@ iavf_dev_close(struct rte_eth_dev *dev) > > rte_free(vf->aq_resp); > vf->aq_resp = NULL; > + > + return 0; > } > > static int > diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c > index 2faed3cc7a..5b626cb641 100644 > --- a/drivers/net/ice/ice_dcf_ethdev.c > +++ b/drivers/net/ice/ice_dcf_ethdev.c > @@ -847,13 +847,13 @@ ice_dcf_stats_reset(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > ice_dcf_dev_close(struct rte_eth_dev *dev) > { > struct ice_dcf_adapter *adapter = dev->data->dev_private; > > if (rte_eal_process_type() != RTE_PROC_PRIMARY) > - return; > + return 0; > > dev->dev_ops = NULL; > dev->rx_pkt_burst = NULL; > @@ -861,6 +861,8 @@ ice_dcf_dev_close(struct rte_eth_dev *dev) > > ice_dcf_uninit_parent_adapter(dev); > ice_dcf_uninit_hw(dev, &adapter->real_hw); > + > + return 0; > } > > static int > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index cfd357b055..b4ac5e3f81 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -77,7 +77,7 @@ static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { > static int ice_dev_configure(struct rte_eth_dev *dev); > static int ice_dev_start(struct rte_eth_dev *dev); > static void ice_dev_stop(struct rte_eth_dev *dev); > -static void ice_dev_close(struct rte_eth_dev *dev); > +static int ice_dev_close(struct rte_eth_dev *dev); > static int ice_dev_reset(struct rte_eth_dev *dev); > static int ice_dev_info_get(struct rte_eth_dev *dev, > struct rte_eth_dev_info *dev_info); > @@ -2430,7 +2430,7 @@ ice_dev_stop(struct rte_eth_dev *dev) > pf->adapter_stopped = true; > } > > -static void > +static int > ice_dev_close(struct rte_eth_dev *dev) > { > struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); > @@ -2478,6 +2478,8 @@ ice_dev_close(struct rte_eth_dev *dev) > /* unregister callback func from eal lib */ > rte_intr_callback_unregister(intr_handle, > ice_interrupt_handler, dev); > + > + return 0; > } > > static int > diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c > index 810568bc54..11397c5c1d 100644 > --- a/drivers/net/igc/igc_ethdev.c > +++ b/drivers/net/igc/igc_ethdev.c > @@ -183,7 +183,7 @@ static void eth_igc_stop(struct rte_eth_dev *dev); > static int eth_igc_start(struct rte_eth_dev *dev); > static int eth_igc_set_link_up(struct rte_eth_dev *dev); > static int eth_igc_set_link_down(struct rte_eth_dev *dev); > -static void eth_igc_close(struct rte_eth_dev *dev); > +static int eth_igc_close(struct rte_eth_dev *dev); > static int eth_igc_reset(struct rte_eth_dev *dev); > static int eth_igc_promiscuous_enable(struct rte_eth_dev *dev); > static int eth_igc_promiscuous_disable(struct rte_eth_dev *dev); > @@ -1165,7 +1165,7 @@ igc_dev_free_queues(struct rte_eth_dev *dev) > dev->data->nb_tx_queues = 0; > } > > -static void > +static int > eth_igc_close(struct rte_eth_dev *dev) > { > struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); > @@ -1199,6 +1199,8 @@ eth_igc_close(struct rte_eth_dev *dev) > > /* Reset any pending lock */ > igc_reset_swfw_lock(hw); > + > + return 0; > } > > static void > diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c > index 800f6e5d64..1775fd29b7 100644 > --- a/drivers/net/ionic/ionic_ethdev.c > +++ b/drivers/net/ionic/ionic_ethdev.c > @@ -25,7 +25,7 @@ static int ionic_dev_configure(struct rte_eth_dev *dev); > static int ionic_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); > static int ionic_dev_start(struct rte_eth_dev *dev); > static void ionic_dev_stop(struct rte_eth_dev *dev); > -static void ionic_dev_close(struct rte_eth_dev *dev); > +static int ionic_dev_close(struct rte_eth_dev *dev); > static int ionic_dev_set_link_up(struct rte_eth_dev *dev); > static int ionic_dev_set_link_down(struct rte_eth_dev *dev); > static int ionic_dev_link_update(struct rte_eth_dev *eth_dev, > @@ -956,7 +956,7 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) > /* > * Reset and stop device. > */ > -static void > +static int > ionic_dev_close(struct rte_eth_dev *eth_dev) > { > struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); > @@ -967,14 +967,16 @@ ionic_dev_close(struct rte_eth_dev *eth_dev) > err = ionic_lif_stop(lif); > if (err) { > IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); > - return; > + return -1; > } > > err = eth_ionic_dev_uninit(eth_dev); > if (err) { > IONIC_PRINT(ERR, "Cannot destroy LIF: %d", err); > - return; > + return -1; > } > + > + return 0; > } > > static int > diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c > index b673c49149..d49abbf758 100644 > --- a/drivers/net/ipn3ke/ipn3ke_representor.c > +++ b/drivers/net/ipn3ke/ipn3ke_representor.c > @@ -208,7 +208,7 @@ ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) > } > } > > -static void > +static int > ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) > { > struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); > @@ -221,6 +221,8 @@ ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) > /* Disable the RX path */ > ipn3ke_xmac_rx_disable(hw, rpst->port_id, 0); > } > + > + return 0; > } > > /* > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c > index 0f065bbc04..a1369a0744 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -147,7 +147,7 @@ static int ixgbe_dev_start(struct rte_eth_dev *dev); > static void ixgbe_dev_stop(struct rte_eth_dev *dev); > static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev); > static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev); > -static void ixgbe_dev_close(struct rte_eth_dev *dev); > +static int ixgbe_dev_close(struct rte_eth_dev *dev); > static int ixgbe_dev_reset(struct rte_eth_dev *dev); > static int ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); > static int ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); > @@ -251,7 +251,7 @@ static int ixgbevf_dev_start(struct rte_eth_dev *dev); > static int ixgbevf_dev_link_update(struct rte_eth_dev *dev, > int wait_to_complete); > static void ixgbevf_dev_stop(struct rte_eth_dev *dev); > -static void ixgbevf_dev_close(struct rte_eth_dev *dev); > +static int ixgbevf_dev_close(struct rte_eth_dev *dev); > static int ixgbevf_dev_reset(struct rte_eth_dev *dev); > static void ixgbevf_intr_disable(struct rte_eth_dev *dev); > static void ixgbevf_intr_enable(struct rte_eth_dev *dev); > @@ -2994,7 +2994,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev) > /* > * Reset and stop device. > */ > -static void > +static int > ixgbe_dev_close(struct rte_eth_dev *dev) > { > struct ixgbe_hw *hw = > @@ -3065,6 +3065,7 @@ ixgbe_dev_close(struct rte_eth_dev *dev) > rte_free(dev->security_ctx); > #endif > > + return 0; > } > > /* > @@ -5443,7 +5444,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) > adapter->rss_reta_updated = 0; > } > > -static void > +static int > ixgbevf_dev_close(struct rte_eth_dev *dev) > { > struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > @@ -5472,6 +5473,8 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) > rte_intr_disable(intr_handle); > rte_intr_callback_unregister(intr_handle, > ixgbevf_dev_interrupt_handler, dev); > + > + return 0; > } > > /* > diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c > index 831fe96c96..aa365a57de 100644 > --- a/drivers/net/kni/rte_eth_kni.c > +++ b/drivers/net/kni/rte_eth_kni.c > @@ -198,7 +198,7 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) > dev->data->dev_link.link_status = 0; > } > > -static void > +static int > eth_kni_close(struct rte_eth_dev *eth_dev) > { > struct pmd_internals *internals; > @@ -214,6 +214,8 @@ eth_kni_close(struct rte_eth_dev *eth_dev) > if (ret) > PMD_LOG(WARNING, "Not able to release kni for %s", > eth_dev->data->name); > + > + return 0; > } > > static int > diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c > index 2c2b27e62a..93e2ed5670 100644 > --- a/drivers/net/liquidio/lio_ethdev.c > +++ b/drivers/net/liquidio/lio_ethdev.c > @@ -1550,7 +1550,7 @@ lio_dev_set_link_down(struct rte_eth_dev *eth_dev) > * @return > * - nothing > */ > -static void > +static int > lio_dev_close(struct rte_eth_dev *eth_dev) > { > struct lio_device *lio_dev = LIO_DEV(eth_dev); > @@ -1581,6 +1581,8 @@ lio_dev_close(struct rte_eth_dev *eth_dev) > > /* Delete all queues */ > lio_dev_clear_queues(eth_dev); > + > + return 0; > } > > /** > diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c > index a19c0f3e6b..1a2411c838 100644 > --- a/drivers/net/memif/rte_eth_memif.c > +++ b/drivers/net/memif/rte_eth_memif.c > @@ -1218,7 +1218,7 @@ memif_dev_start(struct rte_eth_dev *dev) > return ret; > } > > -static void > +static int > memif_dev_close(struct rte_eth_dev *dev) > { > struct pmd_internals *pmd = dev->data->dev_private; > @@ -1239,6 +1239,8 @@ memif_dev_close(struct rte_eth_dev *dev) > } > > rte_free(dev->process_private); > + > + return 0; > } > > static int > diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c > index 71061a720f..df59314b66 100644 > --- a/drivers/net/mlx4/mlx4.c > +++ b/drivers/net/mlx4/mlx4.c > @@ -370,7 +370,7 @@ mlx4_dev_stop(struct rte_eth_dev *dev) > * @param dev > * Pointer to Ethernet device structure. > */ > -static void > +static int > mlx4_dev_close(struct rte_eth_dev *dev) > { > struct mlx4_priv *priv = dev->data->dev_private; > @@ -400,6 +400,7 @@ mlx4_dev_close(struct rte_eth_dev *dev) > MLX4_ASSERT(priv->ctx == NULL); > mlx4_intr_uninstall(priv); > memset(priv, 0, sizeof(*priv)); > + return 0; > } > > static const struct eth_dev_ops mlx4_dev_ops = { > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c > index 4a807fb4fd..01ead6e6af 100644 > --- a/drivers/net/mlx5/mlx5.c > +++ b/drivers/net/mlx5/mlx5.c > @@ -1341,7 +1341,7 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev) > * @param dev > * Pointer to Ethernet device structure. > */ > -void > +int > mlx5_dev_close(struct rte_eth_dev *dev) > { > struct mlx5_priv *priv = dev->data->dev_private; > @@ -1351,14 +1351,14 @@ mlx5_dev_close(struct rte_eth_dev *dev) > if (rte_eal_process_type() == RTE_PROC_SECONDARY) { > /* Check if process_private released. */ > if (!dev->process_private) > - return; > + return 0; > mlx5_tx_uar_uninit_secondary(dev); > mlx5_proc_priv_uninit(dev); > rte_eth_dev_release_port(dev); > - return; > + return 0; > } > if (!priv->sh) > - return; > + return 0; > DRV_LOG(DEBUG, "port %u closing device \"%s\"", > dev->data->port_id, > ((priv->sh->ctx != NULL) ? > @@ -1479,6 +1479,7 @@ mlx5_dev_close(struct rte_eth_dev *dev) > * it is freed when dev_private is freed. > */ > dev->data->mac_addrs = NULL; > + return 0; > } > > /** > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h > index 865e72d318..56f0e25b4c 100644 > --- a/drivers/net/mlx5/mlx5.h > +++ b/drivers/net/mlx5/mlx5.h > @@ -842,7 +842,7 @@ int mlx5_proc_priv_init(struct rte_eth_dev *dev); > int mlx5_udp_tunnel_port_add(struct rte_eth_dev *dev, > struct rte_eth_udp_tunnel *udp_tunnel); > uint16_t mlx5_eth_find_next(uint16_t port_id, struct rte_pci_device *pci_dev); > -void mlx5_dev_close(struct rte_eth_dev *dev); > +int mlx5_dev_close(struct rte_eth_dev *dev); > > /* Macro to iterate over all valid ports for mlx5 driver. */ > #define MLX5_ETH_FOREACH_DEV(port_id, pci_dev) \ > diff --git a/drivers/net/mvneta/mvneta_ethdev.c b/drivers/net/mvneta/mvneta_ethdev.c > index 5bf3ebc4bd..eebcdb840e 100644 > --- a/drivers/net/mvneta/mvneta_ethdev.c > +++ b/drivers/net/mvneta/mvneta_ethdev.c > @@ -429,7 +429,7 @@ mvneta_dev_stop(struct rte_eth_dev *dev) > * @param dev > * Pointer to Ethernet device structure. > */ > -static void > +static int > mvneta_dev_close(struct rte_eth_dev *dev) > { > struct mvneta_priv *priv = dev->data->dev_private; > @@ -455,6 +455,8 @@ mvneta_dev_close(struct rte_eth_dev *dev) > mvneta_neta_deinit(); > rte_mvep_deinit(MVEP_MOD_T_NETA); > } > + > + return 0; > } > > /** > diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c > index f5e77d07bf..27f7cfb056 100644 > --- a/drivers/net/mvpp2/mrvl_ethdev.c > +++ b/drivers/net/mvpp2/mrvl_ethdev.c > @@ -855,7 +855,7 @@ mrvl_dev_stop(struct rte_eth_dev *dev) > * @param dev > * Pointer to Ethernet device structure. > */ > -static void > +static int > mrvl_dev_close(struct rte_eth_dev *dev) > { > struct mrvl_priv *priv = dev->data->dev_private; > @@ -915,6 +915,8 @@ mrvl_dev_close(struct rte_eth_dev *dev) > mrvl_deinit_pp2(); > rte_mvep_deinit(MVEP_MOD_T_PP2); > } > + > + return 0; > } > > /** > diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c > index 229c1b9149..8968036ea3 100644 > --- a/drivers/net/netvsc/hn_ethdev.c > +++ b/drivers/net/netvsc/hn_ethdev.c > @@ -841,13 +841,15 @@ hn_dev_stop(struct rte_eth_dev *dev) > hn_vf_stop(dev); > } > > -static void > +static int > hn_dev_close(struct rte_eth_dev *dev) > { > PMD_INIT_FUNC_TRACE(); > > hn_vf_close(dev); > hn_dev_free_queues(dev); > + > + return 0; > } > > static const struct eth_dev_ops hn_eth_dev_ops = { > diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c > index b039ab6fc2..c3c3d003f1 100644 > --- a/drivers/net/nfb/nfb_ethdev.c > +++ b/drivers/net/nfb/nfb_ethdev.c > @@ -209,7 +209,7 @@ nfb_eth_dev_info(struct rte_eth_dev *dev, > * @param dev > * Pointer to Ethernet device structure. > */ > -static void > +static int > nfb_eth_dev_close(struct rte_eth_dev *dev) > { > struct pmd_internals *internals = dev->data->dev_private; > @@ -235,6 +235,8 @@ nfb_eth_dev_close(struct rte_eth_dev *dev) > > rte_free(dev->data->mac_addrs); > dev->data->mac_addrs = NULL; > + > + return 0; > } > > /** > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > index f5e4cd339d..9509dc8bd6 100644 > --- a/drivers/net/nfp/nfp_net.c > +++ b/drivers/net/nfp/nfp_net.c > @@ -50,7 +50,7 @@ > #include <errno.h> > > /* Prototypes */ > -static void nfp_net_close(struct rte_eth_dev *dev); > +static int nfp_net_close(struct rte_eth_dev *dev); > static int nfp_net_configure(struct rte_eth_dev *dev); > static void nfp_net_dev_interrupt_handler(void *param); > static void nfp_net_dev_interrupt_delayed_handler(void *param); > @@ -864,7 +864,7 @@ nfp_net_set_link_down(struct rte_eth_dev *dev) > } > > /* Reset and stop device. The device can not be restarted. */ > -static void > +static int > nfp_net_close(struct rte_eth_dev *dev) > { > struct nfp_net_hw *hw; > @@ -906,6 +906,8 @@ nfp_net_close(struct rte_eth_dev *dev) > * The ixgbe PMD driver disables the pcie master on the > * device. The i40e does not... > */ > + > + return 0; > } > > static int > diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c > index ff2e22cd44..10eeeac642 100644 > --- a/drivers/net/octeontx/octeontx_ethdev.c > +++ b/drivers/net/octeontx/octeontx_ethdev.c > @@ -478,7 +478,7 @@ octeontx_dev_configure(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > octeontx_dev_close(struct rte_eth_dev *dev) > { > struct octeontx_txq *txq = NULL; > @@ -517,6 +517,8 @@ octeontx_dev_close(struct rte_eth_dev *dev) > > dev->tx_pkt_burst = NULL; > dev->rx_pkt_burst = NULL; > + > + return 0; > } > > static int > diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c > index 51a6f99877..abe5f03628 100644 > --- a/drivers/net/octeontx2/otx2_ethdev.c > +++ b/drivers/net/octeontx2/otx2_ethdev.c > @@ -2222,7 +2222,7 @@ otx2_nix_dev_start(struct rte_eth_dev *eth_dev) > } > > static int otx2_nix_dev_reset(struct rte_eth_dev *eth_dev); > -static void otx2_nix_dev_close(struct rte_eth_dev *eth_dev); > +static int otx2_nix_dev_close(struct rte_eth_dev *eth_dev); > > /* Initialize and register driver with DPDK Application */ > static const struct eth_dev_ops otx2_eth_dev_ops = { > @@ -2635,10 +2635,11 @@ otx2_eth_dev_uninit(struct rte_eth_dev *eth_dev, bool mbox_close) > return 0; > } > > -static void > +static int > otx2_nix_dev_close(struct rte_eth_dev *eth_dev) > { > otx2_eth_dev_uninit(eth_dev, true); > + return 0; > } > > static int > diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c > index 668cbd1fc7..76e704a65a 100644 > --- a/drivers/net/pcap/rte_eth_pcap.c > +++ b/drivers/net/pcap/rte_eth_pcap.c > @@ -728,7 +728,7 @@ eth_stats_reset(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > eth_dev_close(struct rte_eth_dev *dev) > { > unsigned int i; > @@ -748,6 +748,7 @@ eth_dev_close(struct rte_eth_dev *dev) > } > } > > + return 0; > } > > static void > diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c > index 97356d2b0b..187a0019ff 100644 > --- a/drivers/net/pfe/pfe_ethdev.c > +++ b/drivers/net/pfe/pfe_ethdev.c > @@ -398,14 +398,14 @@ pfe_eth_exit(struct rte_eth_dev *dev, struct pfe *pfe) > pfe->nb_devs--; > } > > -static void > +static int > pfe_eth_close(struct rte_eth_dev *dev) > { > if (!dev) > - return; > + return -1; > > if (!g_pfe) > - return; > + return -1; > > pfe_eth_exit(dev, g_pfe); > > @@ -415,6 +415,8 @@ pfe_eth_close(struct rte_eth_dev *dev) > rte_free(g_pfe); > g_pfe = NULL; > } > + > + return 0; > } > > static int > diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c > index 59f1746ee9..9535df183f 100644 > --- a/drivers/net/qede/qede_ethdev.c > +++ b/drivers/net/qede/qede_ethdev.c > @@ -1542,7 +1542,7 @@ static void qede_poll_sp_sb_cb(void *param) > } > } > > -static void qede_dev_close(struct rte_eth_dev *eth_dev) > +static int qede_dev_close(struct rte_eth_dev *eth_dev) > { > struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); > struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); > @@ -1586,6 +1586,8 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) > > if (ECORE_IS_CMT(edev)) > rte_eal_alarm_cancel(qede_poll_sp_sb_cb, (void *)eth_dev); > + > + return 0; > } > > static int > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c > index 1a58e0df84..eaa48627d6 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -318,7 +318,7 @@ sfc_dev_set_link_down(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > sfc_dev_close(struct rte_eth_dev *dev) > { > struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev); > @@ -364,6 +364,8 @@ sfc_dev_close(struct rte_eth_dev *dev) > > dev->process_private = NULL; > free(sa); > + > + return 0; > } > > static int > diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c > index e453fd1486..038abd98da 100644 > --- a/drivers/net/softnic/rte_eth_softnic.c > +++ b/drivers/net/softnic/rte_eth_softnic.c > @@ -201,10 +201,10 @@ pmd_dev_stop(struct rte_eth_dev *dev) > softnic_mtr_free(p); > } > > -static void > +static int > pmd_dev_close(struct rte_eth_dev *dev __rte_unused) > { > - return; > + return 0; > } > > static int > diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c > index a17c53577c..daa40cfd6c 100644 > --- a/drivers/net/szedata2/rte_eth_szedata2.c > +++ b/drivers/net/szedata2/rte_eth_szedata2.c > @@ -1155,7 +1155,7 @@ eth_tx_queue_release(void *q) > } > } > > -static void > +static int > eth_dev_close(struct rte_eth_dev *dev) > { > struct pmd_internals *internals = dev->data->dev_private; > @@ -1180,6 +1180,8 @@ eth_dev_close(struct rte_eth_dev *dev) > > rte_free(dev->data->mac_addrs); > dev->data->mac_addrs = NULL; > + > + return 0; > } > > static int > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c > index df16aa4ea7..2d1e4e365a 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -1067,7 +1067,7 @@ tap_stats_reset(struct rte_eth_dev *dev) > return 0; > } > > -static void > +static int > tap_dev_close(struct rte_eth_dev *dev) > { > int i; > @@ -1116,6 +1116,8 @@ tap_dev_close(struct rte_eth_dev *dev) > * Since TUN device has no more opened file descriptors > * it will be removed from kernel > */ > + > + return 0; > } > > static void > diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c > index 83d9488360..3d7348771a 100644 > --- a/drivers/net/thunderx/nicvf_ethdev.c > +++ b/drivers/net/thunderx/nicvf_ethdev.c > @@ -1852,7 +1852,7 @@ nicvf_vf_stop(struct rte_eth_dev *dev, struct nicvf *nic, bool cleanup) > } > } > > -static void > +static int > nicvf_dev_close(struct rte_eth_dev *dev) > { > size_t i; > @@ -1869,6 +1869,8 @@ nicvf_dev_close(struct rte_eth_dev *dev) > > nicvf_periodic_alarm_stop(nicvf_vf_interrupt, nic->snicvf[i]); > } > + > + return 0; > } > > static int > diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c > index ce32be9ce3..f67f4db812 100644 > --- a/drivers/net/vhost/rte_eth_vhost.c > +++ b/drivers/net/vhost/rte_eth_vhost.c > @@ -1164,7 +1164,7 @@ eth_dev_stop(struct rte_eth_dev *dev) > update_queuing_status(dev); > } > > -static void > +static int > eth_dev_close(struct rte_eth_dev *dev) > { > struct pmd_internal *internal; > @@ -1173,7 +1173,7 @@ eth_dev_close(struct rte_eth_dev *dev) > > internal = dev->data->dev_private; > if (!internal) > - return; > + return 0; > > eth_dev_stop(dev); > > @@ -1201,6 +1201,8 @@ eth_dev_close(struct rte_eth_dev *dev) > > rte_free(vring_states[dev->data->port_id]); > vring_states[dev->data->port_id] = NULL; > + > + return 0; > } > > static int > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index 013a2904e6..0787337a01 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -704,7 +704,7 @@ virtio_alloc_queues(struct rte_eth_dev *dev) > > static void virtio_queues_unbind_intr(struct rte_eth_dev *dev); > > -static void > +static int > virtio_dev_close(struct rte_eth_dev *dev) > { > struct virtio_hw *hw = dev->data->dev_private; > @@ -713,7 +713,7 @@ virtio_dev_close(struct rte_eth_dev *dev) > PMD_INIT_LOG(DEBUG, "virtio_dev_close"); > > if (!hw->opened) > - return; > + return 0; > hw->opened = false; > > /* reset the NIC */ > @@ -743,6 +743,8 @@ virtio_dev_close(struct rte_eth_dev *dev) > if (!hw->modern) > rte_pci_ioport_unmap(VTPCI_IO(hw)); > } > + > + return 0; > } > > static int > diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c > index fa80e75a5b..17fed0ed6e 100644 > --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c > +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c > @@ -64,7 +64,7 @@ static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev); > static int vmxnet3_dev_configure(struct rte_eth_dev *dev); > static int vmxnet3_dev_start(struct rte_eth_dev *dev); > static void vmxnet3_dev_stop(struct rte_eth_dev *dev); > -static void vmxnet3_dev_close(struct rte_eth_dev *dev); > +static int vmxnet3_dev_close(struct rte_eth_dev *dev); > static void vmxnet3_dev_set_rxmode(struct vmxnet3_hw *hw, uint32_t feature, int set); > static int vmxnet3_dev_promiscuous_enable(struct rte_eth_dev *dev); > static int vmxnet3_dev_promiscuous_disable(struct rte_eth_dev *dev); > @@ -888,13 +888,15 @@ vmxnet3_free_queues(struct rte_eth_dev *dev) > /* > * Reset and stop device. > */ > -static void > +static int > vmxnet3_dev_close(struct rte_eth_dev *dev) > { > PMD_INIT_FUNC_TRACE(); > > vmxnet3_dev_stop(dev); > vmxnet3_free_queues(dev); > + > + return 0; > } > > static void > diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h > index 23cc1e0959..6abfd58d2f 100644 > --- a/lib/librte_ethdev/rte_ethdev_driver.h > +++ b/lib/librte_ethdev/rte_ethdev_driver.h > @@ -42,7 +42,7 @@ typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev); > typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev); > /**< @internal Function used to link down a configured Ethernet device. */ > > -typedef void (*eth_dev_close_t)(struct rte_eth_dev *dev); > +typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev); > /**< @internal Function used to close a configured Ethernet device. */ > > typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
For mvpp2, mvneta. Reviewed-by: Liron Himi<lironh@marvell.com> -----Original Message----- From: Thomas Monjalon <thomas@monjalon.net> Sent: Monday, 28 September 2020 02:42 To: dev@dpdk.org Cc: ferruh.yigit@intel.com; arybchenko@solarflare.com; John W. Linville <linville@tuxdriver.com>; Ciara Loftus <ciara.loftus@intel.com>; Qi Zhang <qi.z.zhang@intel.com>; Shepard Siegel <shepard.siegel@atomicrules.com>; Ed Czeck <ed.czeck@atomicrules.com>; John Miller <john.miller@atomicrules.com>; Igor Russkikh <igor.russkikh@aquantia.com>; Pavel Belous <pavel.belous@aquantia.com>; Steven Webster <steven.webster@windriver.com>; Matt Peters <matt.peters@windriver.com>; Somalapuram Amaranath <asomalap@amd.com>; 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>; Jeff Guo <jia.guo@intel.com>; Haiyue Wang <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>; Xiao Wang <xiao.w.wang@intel.com>; Ziyang Xuan <xuanziyang2@huawei.com>; Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>; Guoyang Zhou <zhouguoyang@huawei.com>; Min Hu (Connor) <humin29@huawei.com>; Yisen Zhuang <yisen.zhuang@huawei.com>; Beilei Xing <beilei.xing@intel.com>; Jingjing Wu <jingjing.wu@intel.com>; Qiming Yang <qiming.yang@intel.com>; Alfredo Cardigliano <cardigliano@ntop.org>; Rosen Xu <rosen.xu@intel.com>; Shijith Thotton <sthotton@marvell.com>; Srisivasubramanian Srinivasan <srinivasan@marvell.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>; Liron Himi <lironh@marvell.com>; Stephen Hemminger <sthemmin@microsoft.com>; K. Y. Srinivasan <kys@microsoft.com>; Haiyang Zhang <haiyangz@microsoft.com>; Long Li <longli@microsoft.com>; Martin Spinler <spinler@cesnet.cz>; Heinrich Kuhn <heinrich.kuhn@netronome.com>; Harman Kalra <hkalra@marvell.com>; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; Akhil Goyal <akhil.goyal@nxp.com>; Jasvinder Singh <jasvinder.singh@intel.com>; Cristian Dumitrescu <cristian.dumitrescu@intel.com>; Keith Wiles <keith.wiles@intel.com>; Maciej Czekaj [C] <mczekaj@marvell.com>; Maxime Coquelin <maxime.coquelin@redhat.com>; Chenbo Xia <chenbo.xia@intel.com>; Zhihong Wang <zhihong.wang@intel.com>; Yong Wang <yongwang@vmware.com> Subject: [EXT] [PATCH v2 02/25] ethdev: allow drivers to return error on close External Email ---------------------------------------------------------------------- The device operation .dev_close was returning void. This driver interface is changed to return an int. Note that the API rte_eth_dev_close() is still returning void, although a deprecation notice is pending to change it as well. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- app/test/virtual_pmd.c | 6 ++++-- drivers/net/af_packet/rte_eth_af_packet.c | 3 ++- drivers/net/af_xdp/rte_eth_af_xdp.c | 4 +++- drivers/net/ark/ark_ethdev.c | 6 ++++-- drivers/net/atlantic/atl_ethdev.c | 6 ++++-- drivers/net/avp/avp_ethdev.c | 5 +++-- drivers/net/axgbe/axgbe_ethdev.c | 5 +++-- drivers/net/bnx2x/bnx2x_ethdev.c | 4 +++- drivers/net/bnxt/bnxt_ethdev.c | 4 +++- drivers/net/bnxt/bnxt_reps.c | 3 ++- drivers/net/bnxt/bnxt_reps.h | 2 +- drivers/net/bonding/eth_bond_private.h | 2 +- drivers/net/bonding/rte_eth_bond_pmd.c | 4 +++- drivers/net/cxgbe/cxgbe_ethdev.c | 10 ++++++---- drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- drivers/net/dpaa/dpaa_ethdev.c | 4 +++- drivers/net/dpaa2/dpaa2_ethdev.c | 6 ++++-- drivers/net/e1000/em_ethdev.c | 6 ++++-- drivers/net/e1000/igb_ethdev.c | 12 ++++++++---- drivers/net/ena/ena_ethdev.c | 6 ++++-- drivers/net/enetc/enetc_ethdev.c | 4 +++- drivers/net/enic/enic_ethdev.c | 4 +++- drivers/net/enic/enic_vf_representor.c | 5 +++-- drivers/net/failsafe/failsafe_ops.c | 3 ++- drivers/net/fm10k/fm10k_ethdev.c | 4 +++- drivers/net/hinic/hinic_pmd_ethdev.c | 6 ++++-- drivers/net/hns3/hns3_ethdev.c | 6 ++++-- drivers/net/hns3/hns3_ethdev_vf.c | 6 ++++-- drivers/net/i40e/i40e_ethdev.c | 5 +++-- drivers/net/i40e/i40e_ethdev_vf.c | 5 +++-- drivers/net/iavf/iavf_ethdev.c | 6 ++++-- drivers/net/ice/ice_dcf_ethdev.c | 6 ++++-- drivers/net/ice/ice_ethdev.c | 6 ++++-- drivers/net/igc/igc_ethdev.c | 6 ++++-- drivers/net/ionic/ionic_ethdev.c | 10 ++++++---- drivers/net/ipn3ke/ipn3ke_representor.c | 4 +++- drivers/net/ixgbe/ixgbe_ethdev.c | 11 +++++++---- drivers/net/kni/rte_eth_kni.c | 4 +++- drivers/net/liquidio/lio_ethdev.c | 4 +++- drivers/net/memif/rte_eth_memif.c | 4 +++- drivers/net/mlx4/mlx4.c | 3 ++- drivers/net/mlx5/mlx5.c | 9 +++++---- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mvneta/mvneta_ethdev.c | 4 +++- drivers/net/mvpp2/mrvl_ethdev.c | 4 +++- drivers/net/netvsc/hn_ethdev.c | 4 +++- drivers/net/nfb/nfb_ethdev.c | 4 +++- drivers/net/nfp/nfp_net.c | 6 ++++-- drivers/net/octeontx/octeontx_ethdev.c | 4 +++- drivers/net/octeontx2/otx2_ethdev.c | 5 +++-- drivers/net/pcap/rte_eth_pcap.c | 3 ++- drivers/net/pfe/pfe_ethdev.c | 8 +++++--- drivers/net/qede/qede_ethdev.c | 4 +++- drivers/net/sfc/sfc_ethdev.c | 4 +++- drivers/net/softnic/rte_eth_softnic.c | 4 ++-- drivers/net/szedata2/rte_eth_szedata2.c | 4 +++- drivers/net/tap/rte_eth_tap.c | 4 +++- drivers/net/thunderx/nicvf_ethdev.c | 4 +++- drivers/net/vhost/rte_eth_vhost.c | 6 ++++-- drivers/net/virtio/virtio_ethdev.c | 6 ++++-- drivers/net/vmxnet3/vmxnet3_ethdev.c | 6 ++++-- lib/librte_ethdev/rte_ethdev_driver.h | 2 +- 62 files changed, 206 insertions(+), 103 deletions(-) diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c index b49089a33c..4bd4d1c9ad 100644 --- a/app/test/virtual_pmd.c +++ b/app/test/virtual_pmd.c @@ -62,9 +62,11 @@ static void virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) rte_pktmbuf_free(pkt); } -static void +static int virtual_ethdev_close(struct rte_eth_dev *dev __rte_unused) -{} +{ + return 0; +} static int virtual_ethdev_configure_success(struct rte_eth_dev *dev __rte_unused) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index b9723e9619..7d0ff1cbb3 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -376,9 +376,10 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_close(struct rte_eth_dev *dev __rte_unused) { + return 0; } static void diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index b65ee449fc..badbce63fb 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -701,7 +701,7 @@ xdp_umem_destroy(struct xsk_umem_info *umem) umem = NULL; } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -731,6 +731,8 @@ eth_dev_close(struct rte_eth_dev *dev) dev->data->mac_addrs = NULL; remove_xdp_program(internals); + + return 0; } static void diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index e13415e95b..5f2ed4b7b7 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -30,7 +30,7 @@ static int eth_ark_dev_uninit(struct rte_eth_dev *eth_dev); static int eth_ark_dev_configure(struct rte_eth_dev *dev); static int eth_ark_dev_start(struct rte_eth_dev *dev); static void eth_ark_dev_stop(struct rte_eth_dev *dev); -static void eth_ark_dev_close(struct rte_eth_dev *dev); +static int eth_ark_dev_close(struct rte_eth_dev *dev); static int eth_ark_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int eth_ark_dev_link_update(struct rte_eth_dev *dev, @@ -676,7 +676,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) } } -static void +static int eth_ark_dev_close(struct rte_eth_dev *dev) { struct ark_adapter *ark = dev->data->dev_private; @@ -706,6 +706,8 @@ eth_ark_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = 0; + + return 0; } static int diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 2fca9140d7..254758fd66 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -22,7 +22,7 @@ static int atl_dev_start(struct rte_eth_dev *dev); static void atl_dev_stop(struct rte_eth_dev *dev); static int atl_dev_set_link_up(struct rte_eth_dev *dev); static int atl_dev_set_link_down(struct rte_eth_dev *dev); -static void atl_dev_close(struct rte_eth_dev *dev); +static int atl_dev_close(struct rte_eth_dev *dev); static int atl_dev_reset(struct rte_eth_dev *dev); static int atl_dev_promiscuous_enable(struct rte_eth_dev *dev); static int atl_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -719,7 +719,7 @@ atl_dev_set_link_down(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int atl_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); @@ -727,6 +727,8 @@ atl_dev_close(struct rte_eth_dev *dev) atl_dev_stop(dev); atl_free_queues(dev); + + return 0; } static int diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index 5b47f0924a..2eed6acc3f 100644 --- a/drivers/net/avp/avp_ethdev.c +++ b/drivers/net/avp/avp_ethdev.c @@ -38,7 +38,7 @@ static int avp_dev_create(struct rte_pci_device *pci_dev, static int avp_dev_configure(struct rte_eth_dev *dev); static int avp_dev_start(struct rte_eth_dev *dev); static void avp_dev_stop(struct rte_eth_dev *dev); -static void avp_dev_close(struct rte_eth_dev *dev); +static int avp_dev_close(struct rte_eth_dev *dev); static int avp_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int avp_vlan_offload_set(struct rte_eth_dev *dev, int mask); @@ -2103,7 +2103,7 @@ avp_dev_stop(struct rte_eth_dev *eth_dev) rte_spinlock_unlock(&avp->lock); } -static void +static int avp_dev_close(struct rte_eth_dev *eth_dev) { struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); @@ -2139,6 +2139,7 @@ avp_dev_close(struct rte_eth_dev *eth_dev) unlock: rte_spinlock_unlock(&avp->lock); + return 0; } static int diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c index 4f5a014b54..458d64bcef 100644 --- a/drivers/net/axgbe/axgbe_ethdev.c +++ b/drivers/net/axgbe/axgbe_ethdev.c @@ -16,7 +16,7 @@ static int axgbe_dev_configure(struct rte_eth_dev *dev); static int axgbe_dev_start(struct rte_eth_dev *dev); static void axgbe_dev_stop(struct rte_eth_dev *dev); static void axgbe_dev_interrupt_handler(void *param); -static void axgbe_dev_close(struct rte_eth_dev *dev); +static int axgbe_dev_close(struct rte_eth_dev *dev); static int axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); static int axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); static int axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev); @@ -410,10 +410,11 @@ axgbe_dev_stop(struct rte_eth_dev *dev) } /* Clear all resources like TX/RX queues. */ -static void +static int axgbe_dev_close(struct rte_eth_dev *dev) { axgbe_dev_clear_queues(dev); + return 0; } static int diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index b2ea5fafa7..73217c2138 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -280,7 +280,7 @@ bnx2x_dev_stop(struct rte_eth_dev *dev) return; } -static void +static int bnx2x_dev_close(struct rte_eth_dev *dev) { struct bnx2x_softc *sc = dev->data->dev_private; @@ -295,6 +295,8 @@ bnx2x_dev_close(struct rte_eth_dev *dev) /* free ilt */ bnx2x_free_ilt_mem(sc); + + return 0; } static int diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 05e9a6abbf..e726d078ec 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1357,7 +1357,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) bp->flow_stat->flow_count = 0; } -static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) +static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -1392,6 +1392,8 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) rte_free(bp->grp_info); bp->grp_info = NULL; + + return 0; } static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 17010f1ee2..2b6c0a277b 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -457,10 +457,11 @@ void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev) bnxt_vf_rep_free_rx_mbufs(vfr_bp); } -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) { BNXT_TF_DBG(DEBUG, "BNXT Port:%d VFR close\n", eth_dev->data->port_id); bnxt_vf_representor_uninit(eth_dev); + return 0; } int bnxt_vf_rep_dev_info_get_op(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.h b/drivers/net/bnxt/bnxt_reps.h index 3239e03fc0..d9b9ee2757 100644 --- a/drivers/net/bnxt/bnxt_reps.h +++ b/drivers/net/bnxt/bnxt_reps.h @@ -45,7 +45,7 @@ int bnxt_vf_rep_tx_queue_setup_op(struct rte_eth_dev *eth_dev, void bnxt_vf_rep_rx_queue_release_op(void *rx_queue); void bnxt_vf_rep_tx_queue_release_op(void *tx_queue); void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev); -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); int bnxt_vf_rep_stats_get_op(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats); int bnxt_vf_rep_stats_reset_op(struct rte_eth_dev *eth_dev); diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h index c9b2d0fe46..0a0034705d 100644 --- a/drivers/net/bonding/eth_bond_private.h +++ b/drivers/net/bonding/eth_bond_private.h @@ -318,7 +318,7 @@ bond_tlb_activate_slave(struct bond_dev_private *internals); void bond_ethdev_stop(struct rte_eth_dev *eth_dev); -void +int bond_ethdev_close(struct rte_eth_dev *dev); #endif diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 4ffd2ca4bb..dff835ef92 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -2095,7 +2095,7 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev) } } -void +int bond_ethdev_close(struct rte_eth_dev *dev) { struct bond_dev_private *internals = dev->data->dev_private; @@ -2119,6 +2119,8 @@ bond_ethdev_close(struct rte_eth_dev *dev) bond_flow_ops.flush(dev, &ferror); bond_ethdev_free_queues(dev); rte_bitmap_reset(internals->vlan_filter_bmp); + + return 0; } /* forward declaration */ diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c index 422e190daf..e4bbba5c32 100644 --- a/drivers/net/cxgbe/cxgbe_ethdev.c +++ b/drivers/net/cxgbe/cxgbe_ethdev.c @@ -318,7 +318,7 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) /* * Stop device. */ -void cxgbe_dev_close(struct rte_eth_dev *eth_dev) +int cxgbe_dev_close(struct rte_eth_dev *eth_dev) { struct port_info *temp_pi, *pi = eth_dev->data->dev_private; struct adapter *adapter = pi->adapter; @@ -327,10 +327,10 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) CXGBE_FUNC_TRACE(); if (!(adapter->flags & FULL_INIT_DONE)) - return; + return 0; if (!pi->viid) - return; + return 0; cxgbe_down(pi); t4_sge_eth_release_queues(pi); @@ -343,11 +343,13 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) for_each_port(adapter, i) { temp_pi = adap2pinfo(adapter, i); if (temp_pi->viid) - return; + return 0; } cxgbe_close(adapter); rte_free(adapter); + + return 0; } /* Start the device. diff --git a/drivers/net/cxgbe/cxgbe_pfvf.h b/drivers/net/cxgbe/cxgbe_pfvf.h index 0b7c52aecf..69d91639e9 100644 --- a/drivers/net/cxgbe/cxgbe_pfvf.h +++ b/drivers/net/cxgbe/cxgbe_pfvf.h @@ -19,7 +19,7 @@ void cxgbe_dev_rx_queue_release(void *q); void cxgbe_dev_tx_queue_release(void *q); void cxgbe_dev_stop(struct rte_eth_dev *eth_dev); -void cxgbe_dev_close(struct rte_eth_dev *eth_dev); +int cxgbe_dev_close(struct rte_eth_dev *eth_dev); int cxgbe_dev_info_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *device_info); int cxgbe_dev_promiscuous_enable(struct rte_eth_dev *eth_dev); diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 8a6b19b5ce..7fe06e1830 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -369,7 +369,7 @@ static void dpaa_eth_dev_stop(struct rte_eth_dev *dev) dev->tx_pkt_burst = dpaa_eth_tx_drop_all; } -static void dpaa_eth_dev_close(struct rte_eth_dev *dev) +static int dpaa_eth_dev_close(struct rte_eth_dev *dev) { struct fman_if *fif = dev->process_private; struct __fman_if *__fif; @@ -392,6 +392,8 @@ static void dpaa_eth_dev_close(struct rte_eth_dev *dev) dpaa_interrupt_handler, (void *)dev); } + + return 0; } static int diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 02daa4d250..fb4165fa03 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1236,7 +1236,7 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) rte_eth_linkstatus_set(dev, &link); } -static void +static int dpaa2_dev_close(struct rte_eth_dev *dev) { struct dpaa2_dev_priv *priv = dev->data->dev_private; @@ -1252,11 +1252,13 @@ dpaa2_dev_close(struct rte_eth_dev *dev) ret = dpni_reset(dpni, CMD_PRI_LOW, priv->token); if (ret) { DPAA2_PMD_ERR("Failure cleaning dpni device: err=%d", ret); - return; + return -1; } memset(&link, 0, sizeof(link)); rte_eth_linkstatus_set(dev, &link); + + return 0; } static int diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index 1dc360713a..2d0e071448 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -34,7 +34,7 @@ static int eth_em_configure(struct rte_eth_dev *dev); static int eth_em_start(struct rte_eth_dev *dev); static void eth_em_stop(struct rte_eth_dev *dev); -static void eth_em_close(struct rte_eth_dev *dev); +static int eth_em_close(struct rte_eth_dev *dev); static int eth_em_promiscuous_enable(struct rte_eth_dev *dev); static int eth_em_promiscuous_disable(struct rte_eth_dev *dev); static int eth_em_allmulticast_enable(struct rte_eth_dev *dev); @@ -758,7 +758,7 @@ eth_em_stop(struct rte_eth_dev *dev) } } -static void +static int eth_em_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -782,6 +782,8 @@ eth_em_close(struct rte_eth_dev *dev) rte_intr_disable(intr_handle); rte_intr_callback_unregister(intr_handle, eth_em_interrupt_handler, dev); + + return 0; } static int diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index 5ab74840aa..9e4aefe00c 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -77,7 +77,7 @@ static int eth_igb_start(struct rte_eth_dev *dev); static void eth_igb_stop(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_up(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_down(struct rte_eth_dev *dev); -static void eth_igb_close(struct rte_eth_dev *dev); +static int eth_igb_close(struct rte_eth_dev *dev); static int eth_igb_reset(struct rte_eth_dev *dev); static int eth_igb_promiscuous_enable(struct rte_eth_dev *dev); static int eth_igb_promiscuous_disable(struct rte_eth_dev *dev); @@ -155,7 +155,7 @@ static void igbvf_intr_disable(struct e1000_hw *hw); static int igbvf_dev_configure(struct rte_eth_dev *dev); static int igbvf_dev_start(struct rte_eth_dev *dev); static void igbvf_dev_stop(struct rte_eth_dev *dev); -static void igbvf_dev_close(struct rte_eth_dev *dev); +static int igbvf_dev_close(struct rte_eth_dev *dev); static int igbvf_promiscuous_enable(struct rte_eth_dev *dev); static int igbvf_promiscuous_disable(struct rte_eth_dev *dev); static int igbvf_allmulticast_enable(struct rte_eth_dev *dev); @@ -1535,7 +1535,7 @@ eth_igb_dev_set_link_down(struct rte_eth_dev *dev) return 0; } -static void +static int eth_igb_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1604,6 +1604,8 @@ eth_igb_close(struct rte_eth_dev *dev) /* clear all the filters list */ igb_filterlist_flush(dev); + + return 0; } /* @@ -3381,7 +3383,7 @@ igbvf_dev_stop(struct rte_eth_dev *dev) adapter->stopped = true; } -static void +static int igbvf_dev_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -3412,6 +3414,8 @@ igbvf_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(&pci_dev->intr_handle, eth_igbvf_interrupt_handler, (void *)dev); + + return 0; } static int diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 8077519735..ae6daad892 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -187,7 +187,7 @@ static void ena_init_rings(struct ena_adapter *adapter, static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ena_start(struct rte_eth_dev *dev); static void ena_stop(struct rte_eth_dev *dev); -static void ena_close(struct rte_eth_dev *dev); +static int ena_close(struct rte_eth_dev *dev); static int ena_dev_reset(struct rte_eth_dev *dev); static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); static void ena_rx_queue_release_all(struct rte_eth_dev *dev); @@ -487,7 +487,7 @@ static void ena_config_debug_area(struct ena_adapter *adapter) ena_com_delete_debug_area(&adapter->ena_dev); } -static void ena_close(struct rte_eth_dev *dev) +static int ena_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; @@ -513,6 +513,8 @@ static void ena_close(struct rte_eth_dev *dev) * release of the resource in the rte_eth_dev_release_port(). */ dev->data->mac_addrs = NULL; + + return 0; } static int diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index c6fb42740d..bdb32762ce 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -545,7 +545,7 @@ enetc_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int enetc_dev_close(struct rte_eth_dev *dev) { uint16_t i; @@ -564,6 +564,8 @@ enetc_dev_close(struct rte_eth_dev *dev) dev->data->tx_queues[i] = NULL; } dev->data->nb_tx_queues = 0; + + return 0; } static int diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 57e82845a4..ed03d53608 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -446,12 +446,14 @@ static void enicpmd_dev_stop(struct rte_eth_dev *eth_dev) /* * Stop device. */ -static void enicpmd_dev_close(struct rte_eth_dev *eth_dev) +static int enicpmd_dev_close(struct rte_eth_dev *eth_dev) { struct enic *enic = pmd_priv(eth_dev); ENICPMD_FUNC_TRACE(); enic_remove(enic); + + return 0; } static int enicpmd_dev_link_update(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/enic/enic_vf_representor.c b/drivers/net/enic/enic_vf_representor.c index 5d34e1b460..c528be2b98 100644 --- a/drivers/net/enic/enic_vf_representor.c +++ b/drivers/net/enic/enic_vf_representor.c @@ -277,11 +277,12 @@ static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) * "close" is no-op for now and solely exists so that rte_eth_dev_close() * can finish its own cleanup without errors. */ -static void enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) +static int enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) { ENICPMD_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; + return 0; } static int diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index 96f7e456f9..93ebd09114 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -240,7 +240,7 @@ fs_dev_set_link_down(struct rte_eth_dev *dev) } static void fs_dev_free_queues(struct rte_eth_dev *dev); -static void +static int fs_dev_close(struct rte_eth_dev *dev) { struct sub_device *sdev; @@ -259,6 +259,7 @@ fs_dev_close(struct rte_eth_dev *dev) } fs_dev_free_queues(dev); fs_unlock(dev, 0); + return 0; } static int diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 5771d83b55..533f976709 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -2776,7 +2776,7 @@ fm10k_close_mbx_service(struct fm10k_hw *hw) hw->mbx.ops.disconnect(hw, &hw->mbx); } -static void +static int fm10k_dev_close(struct rte_eth_dev *dev) { struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2821,6 +2821,8 @@ fm10k_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, fm10k_dev_interrupt_handler_vf, (void *)dev); } + + return 0; } static const struct eth_dev_ops fm10k_eth_dev_ops = { diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 67e6afcf7a..5f2e97d3bd 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -2936,7 +2936,7 @@ static void hinic_nic_dev_destroy(struct rte_eth_dev *eth_dev) * @param dev * Pointer to Ethernet device structure. */ -static void hinic_dev_close(struct rte_eth_dev *dev) +static int hinic_dev_close(struct rte_eth_dev *dev) { struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); @@ -2944,7 +2944,7 @@ static void hinic_dev_close(struct rte_eth_dev *dev) &nic_dev->dev_status)) { PMD_DRV_LOG(WARNING, "Device %s already closed", dev->data->name); - return; + return 0; } /* stop device first */ @@ -2971,6 +2971,8 @@ static void hinic_dev_close(struct rte_eth_dev *dev) /* deinit nic hardware device */ hinic_nic_dev_destroy(dev); + + return 0; } static const struct eth_dev_ops hinic_pmd_ops = { diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 73d504253d..3b395a1ccf 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4859,7 +4859,7 @@ hns3_dev_stop(struct rte_eth_dev *dev) rte_spinlock_unlock(&hw->lock); } -static void +static int hns3_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; @@ -4868,7 +4868,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) { rte_free(eth_dev->process_private); eth_dev->process_private = NULL; - return; + return 0; } if (hw->adapter_state == HNS3_NIC_STARTED) @@ -4888,6 +4888,8 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) eth_dev->process_private = NULL; hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); + + return 0; } static int diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 037a5be7e0..e0ca5a6ac2 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1910,14 +1910,14 @@ hns3vf_dev_stop(struct rte_eth_dev *dev) rte_spinlock_unlock(&hw->lock); } -static void +static int hns3vf_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; struct hns3_hw *hw = &hns->hw; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; if (hw->adapter_state == HNS3_NIC_STARTED) hns3vf_dev_stop(eth_dev); @@ -1935,6 +1935,8 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev) eth_dev->process_private = NULL; hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); + + return 0; } static int diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 563f21d9df..804f0128ab 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -225,7 +225,7 @@ static int eth_i40e_dev_uninit(struct rte_eth_dev *eth_dev); static int i40e_dev_configure(struct rte_eth_dev *dev); static int i40e_dev_start(struct rte_eth_dev *dev); static void i40e_dev_stop(struct rte_eth_dev *dev); -static void i40e_dev_close(struct rte_eth_dev *dev); +static int i40e_dev_close(struct rte_eth_dev *dev); static int i40e_dev_reset(struct rte_eth_dev *dev); static int i40e_dev_promiscuous_enable(struct rte_eth_dev *dev); static int i40e_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -2608,7 +2608,7 @@ i40e_dev_stop(struct rte_eth_dev *dev) pf->adapter->rss_reta_updated = 0; } -static void +static int i40e_dev_close(struct rte_eth_dev *dev) { struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); @@ -2748,6 +2748,7 @@ i40e_dev_close(struct rte_eth_dev *dev) i40e_tm_conf_uninit(dev); hw->adapter_closed = 1; + return 0; } /* diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 8531cf6b12..61aad8c415 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -90,7 +90,7 @@ static int i40evf_dev_xstats_reset(struct rte_eth_dev *dev); static int i40evf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on); static int i40evf_vlan_offload_set(struct rte_eth_dev *dev, int mask); -static void i40evf_dev_close(struct rte_eth_dev *dev); +static int i40evf_dev_close(struct rte_eth_dev *dev); static int i40evf_dev_reset(struct rte_eth_dev *dev); static int i40evf_check_vf_reset_done(struct rte_eth_dev *dev); static int i40evf_dev_promiscuous_enable(struct rte_eth_dev *dev); @@ -2401,7 +2401,7 @@ i40evf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) return ret; } -static void +static int i40evf_dev_close(struct rte_eth_dev *dev) { struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2433,6 +2433,7 @@ i40evf_dev_close(struct rte_eth_dev *dev) vf->aq_resp = NULL; hw->adapter_closed = 1; + return 0; } /* diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 440da7d76a..8f46c4588f 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -32,7 +32,7 @@ static int iavf_dev_configure(struct rte_eth_dev *dev); static int iavf_dev_start(struct rte_eth_dev *dev); static void iavf_dev_stop(struct rte_eth_dev *dev); -static void iavf_dev_close(struct rte_eth_dev *dev); +static int iavf_dev_close(struct rte_eth_dev *dev); static int iavf_dev_reset(struct rte_eth_dev *dev); static int iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -1463,7 +1463,7 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) return 0; } -static void +static int iavf_dev_close(struct rte_eth_dev *dev) { struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1506,6 +1506,8 @@ iavf_dev_close(struct rte_eth_dev *dev) rte_free(vf->aq_resp); vf->aq_resp = NULL; + + return 0; } static int diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index 2faed3cc7a..5b626cb641 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -847,13 +847,13 @@ ice_dcf_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int ice_dcf_dev_close(struct rte_eth_dev *dev) { struct ice_dcf_adapter *adapter = dev->data->dev_private; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; dev->dev_ops = NULL; dev->rx_pkt_burst = NULL; @@ -861,6 +861,8 @@ ice_dcf_dev_close(struct rte_eth_dev *dev) ice_dcf_uninit_parent_adapter(dev); ice_dcf_uninit_hw(dev, &adapter->real_hw); + + return 0; } static int diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index cfd357b055..b4ac5e3f81 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -77,7 +77,7 @@ static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { static int ice_dev_configure(struct rte_eth_dev *dev); static int ice_dev_start(struct rte_eth_dev *dev); static void ice_dev_stop(struct rte_eth_dev *dev); -static void ice_dev_close(struct rte_eth_dev *dev); +static int ice_dev_close(struct rte_eth_dev *dev); static int ice_dev_reset(struct rte_eth_dev *dev); static int ice_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -2430,7 +2430,7 @@ ice_dev_stop(struct rte_eth_dev *dev) pf->adapter_stopped = true; } -static void +static int ice_dev_close(struct rte_eth_dev *dev) { struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); @@ -2478,6 +2478,8 @@ ice_dev_close(struct rte_eth_dev *dev) /* unregister callback func from eal lib */ rte_intr_callback_unregister(intr_handle, ice_interrupt_handler, dev); + + return 0; } static int diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index 810568bc54..11397c5c1d 100644 --- a/drivers/net/igc/igc_ethdev.c +++ b/drivers/net/igc/igc_ethdev.c @@ -183,7 +183,7 @@ static void eth_igc_stop(struct rte_eth_dev *dev); static int eth_igc_start(struct rte_eth_dev *dev); static int eth_igc_set_link_up(struct rte_eth_dev *dev); static int eth_igc_set_link_down(struct rte_eth_dev *dev); -static void eth_igc_close(struct rte_eth_dev *dev); +static int eth_igc_close(struct rte_eth_dev *dev); static int eth_igc_reset(struct rte_eth_dev *dev); static int eth_igc_promiscuous_enable(struct rte_eth_dev *dev); static int eth_igc_promiscuous_disable(struct rte_eth_dev *dev); @@ -1165,7 +1165,7 @@ igc_dev_free_queues(struct rte_eth_dev *dev) dev->data->nb_tx_queues = 0; } -static void +static int eth_igc_close(struct rte_eth_dev *dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); @@ -1199,6 +1199,8 @@ eth_igc_close(struct rte_eth_dev *dev) /* Reset any pending lock */ igc_reset_swfw_lock(hw); + + return 0; } static void diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 800f6e5d64..1775fd29b7 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -25,7 +25,7 @@ static int ionic_dev_configure(struct rte_eth_dev *dev); static int ionic_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ionic_dev_start(struct rte_eth_dev *dev); static void ionic_dev_stop(struct rte_eth_dev *dev); -static void ionic_dev_close(struct rte_eth_dev *dev); +static int ionic_dev_close(struct rte_eth_dev *dev); static int ionic_dev_set_link_up(struct rte_eth_dev *dev); static int ionic_dev_set_link_down(struct rte_eth_dev *dev); static int ionic_dev_link_update(struct rte_eth_dev *eth_dev, @@ -956,7 +956,7 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) /* * Reset and stop device. */ -static void +static int ionic_dev_close(struct rte_eth_dev *eth_dev) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); @@ -967,14 +967,16 @@ ionic_dev_close(struct rte_eth_dev *eth_dev) err = ionic_lif_stop(lif); if (err) { IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); - return; + return -1; } err = eth_ionic_dev_uninit(eth_dev); if (err) { IONIC_PRINT(ERR, "Cannot destroy LIF: %d", err); - return; + return -1; } + + return 0; } static int diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c index b673c49149..d49abbf758 100644 --- a/drivers/net/ipn3ke/ipn3ke_representor.c +++ b/drivers/net/ipn3ke/ipn3ke_representor.c @@ -208,7 +208,7 @@ ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) } } -static void +static int ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) { struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); @@ -221,6 +221,8 @@ ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) /* Disable the RX path */ ipn3ke_xmac_rx_disable(hw, rpst->port_id, 0); } + + return 0; } /* diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0f065bbc04..a1369a0744 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -147,7 +147,7 @@ static int ixgbe_dev_start(struct rte_eth_dev *dev); static void ixgbe_dev_stop(struct rte_eth_dev *dev); static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev); static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev); -static void ixgbe_dev_close(struct rte_eth_dev *dev); +static int ixgbe_dev_close(struct rte_eth_dev *dev); static int ixgbe_dev_reset(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -251,7 +251,7 @@ static int ixgbevf_dev_start(struct rte_eth_dev *dev); static int ixgbevf_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete); static void ixgbevf_dev_stop(struct rte_eth_dev *dev); -static void ixgbevf_dev_close(struct rte_eth_dev *dev); +static int ixgbevf_dev_close(struct rte_eth_dev *dev); static int ixgbevf_dev_reset(struct rte_eth_dev *dev); static void ixgbevf_intr_disable(struct rte_eth_dev *dev); static void ixgbevf_intr_enable(struct rte_eth_dev *dev); @@ -2994,7 +2994,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int ixgbe_dev_close(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = @@ -3065,6 +3065,7 @@ ixgbe_dev_close(struct rte_eth_dev *dev) rte_free(dev->security_ctx); #endif + return 0; } /* @@ -5443,7 +5444,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) adapter->rss_reta_updated = 0; } -static void +static int ixgbevf_dev_close(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -5472,6 +5473,8 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) rte_intr_disable(intr_handle); rte_intr_callback_unregister(intr_handle, ixgbevf_dev_interrupt_handler, dev); + + return 0; } /* diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index 831fe96c96..aa365a57de 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -198,7 +198,7 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) dev->data->dev_link.link_status = 0; } -static void +static int eth_kni_close(struct rte_eth_dev *eth_dev) { struct pmd_internals *internals; @@ -214,6 +214,8 @@ eth_kni_close(struct rte_eth_dev *eth_dev) if (ret) PMD_LOG(WARNING, "Not able to release kni for %s", eth_dev->data->name); + + return 0; } static int diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 2c2b27e62a..93e2ed5670 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -1550,7 +1550,7 @@ lio_dev_set_link_down(struct rte_eth_dev *eth_dev) * @return * - nothing */ -static void +static int lio_dev_close(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); @@ -1581,6 +1581,8 @@ lio_dev_close(struct rte_eth_dev *eth_dev) /* Delete all queues */ lio_dev_clear_queues(eth_dev); + + return 0; } /** diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c index a19c0f3e6b..1a2411c838 100644 --- a/drivers/net/memif/rte_eth_memif.c +++ b/drivers/net/memif/rte_eth_memif.c @@ -1218,7 +1218,7 @@ memif_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int memif_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *pmd = dev->data->dev_private; @@ -1239,6 +1239,8 @@ memif_dev_close(struct rte_eth_dev *dev) } rte_free(dev->process_private); + + return 0; } static int diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 71061a720f..df59314b66 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -370,7 +370,7 @@ mlx4_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mlx4_dev_close(struct rte_eth_dev *dev) { struct mlx4_priv *priv = dev->data->dev_private; @@ -400,6 +400,7 @@ mlx4_dev_close(struct rte_eth_dev *dev) MLX4_ASSERT(priv->ctx == NULL); mlx4_intr_uninstall(priv); memset(priv, 0, sizeof(*priv)); + return 0; } static const struct eth_dev_ops mlx4_dev_ops = { diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 4a807fb4fd..01ead6e6af 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -1341,7 +1341,7 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -void +int mlx5_dev_close(struct rte_eth_dev *dev) { struct mlx5_priv *priv = dev->data->dev_private; @@ -1351,14 +1351,14 @@ mlx5_dev_close(struct rte_eth_dev *dev) if (rte_eal_process_type() == RTE_PROC_SECONDARY) { /* Check if process_private released. */ if (!dev->process_private) - return; + return 0; mlx5_tx_uar_uninit_secondary(dev); mlx5_proc_priv_uninit(dev); rte_eth_dev_release_port(dev); - return; + return 0; } if (!priv->sh) - return; + return 0; DRV_LOG(DEBUG, "port %u closing device \"%s\"", dev->data->port_id, ((priv->sh->ctx != NULL) ? @@ -1479,6 +1479,7 @@ mlx5_dev_close(struct rte_eth_dev *dev) * it is freed when dev_private is freed. */ dev->data->mac_addrs = NULL; + return 0; } /** diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 865e72d318..56f0e25b4c 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -842,7 +842,7 @@ int mlx5_proc_priv_init(struct rte_eth_dev *dev); int mlx5_udp_tunnel_port_add(struct rte_eth_dev *dev, struct rte_eth_udp_tunnel *udp_tunnel); uint16_t mlx5_eth_find_next(uint16_t port_id, struct rte_pci_device *pci_dev); -void mlx5_dev_close(struct rte_eth_dev *dev); +int mlx5_dev_close(struct rte_eth_dev *dev); /* Macro to iterate over all valid ports for mlx5 driver. */ #define MLX5_ETH_FOREACH_DEV(port_id, pci_dev) \ diff --git a/drivers/net/mvneta/mvneta_ethdev.c b/drivers/net/mvneta/mvneta_ethdev.c index 5bf3ebc4bd..eebcdb840e 100644 --- a/drivers/net/mvneta/mvneta_ethdev.c +++ b/drivers/net/mvneta/mvneta_ethdev.c @@ -429,7 +429,7 @@ mvneta_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mvneta_dev_close(struct rte_eth_dev *dev) { struct mvneta_priv *priv = dev->data->dev_private; @@ -455,6 +455,8 @@ mvneta_dev_close(struct rte_eth_dev *dev) mvneta_neta_deinit(); rte_mvep_deinit(MVEP_MOD_T_NETA); } + + return 0; } /** diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c index f5e77d07bf..27f7cfb056 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.c +++ b/drivers/net/mvpp2/mrvl_ethdev.c @@ -855,7 +855,7 @@ mrvl_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mrvl_dev_close(struct rte_eth_dev *dev) { struct mrvl_priv *priv = dev->data->dev_private; @@ -915,6 +915,8 @@ mrvl_dev_close(struct rte_eth_dev *dev) mrvl_deinit_pp2(); rte_mvep_deinit(MVEP_MOD_T_PP2); } + + return 0; } /** diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 229c1b9149..8968036ea3 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -841,13 +841,15 @@ hn_dev_stop(struct rte_eth_dev *dev) hn_vf_stop(dev); } -static void +static int hn_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); hn_vf_close(dev); hn_dev_free_queues(dev); + + return 0; } static const struct eth_dev_ops hn_eth_dev_ops = { diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c index b039ab6fc2..c3c3d003f1 100644 --- a/drivers/net/nfb/nfb_ethdev.c +++ b/drivers/net/nfb/nfb_ethdev.c @@ -209,7 +209,7 @@ nfb_eth_dev_info(struct rte_eth_dev *dev, * @param dev * Pointer to Ethernet device structure. */ -static void +static int nfb_eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -235,6 +235,8 @@ nfb_eth_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = NULL; + + return 0; } /** diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index f5e4cd339d..9509dc8bd6 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -50,7 +50,7 @@ #include <errno.h> /* Prototypes */ -static void nfp_net_close(struct rte_eth_dev *dev); +static int nfp_net_close(struct rte_eth_dev *dev); static int nfp_net_configure(struct rte_eth_dev *dev); static void nfp_net_dev_interrupt_handler(void *param); static void nfp_net_dev_interrupt_delayed_handler(void *param); @@ -864,7 +864,7 @@ nfp_net_set_link_down(struct rte_eth_dev *dev) } /* Reset and stop device. The device can not be restarted. */ -static void +static int nfp_net_close(struct rte_eth_dev *dev) { struct nfp_net_hw *hw; @@ -906,6 +906,8 @@ nfp_net_close(struct rte_eth_dev *dev) * The ixgbe PMD driver disables the pcie master on the * device. The i40e does not... */ + + return 0; } static int diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index ff2e22cd44..10eeeac642 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -478,7 +478,7 @@ octeontx_dev_configure(struct rte_eth_dev *dev) return 0; } -static void +static int octeontx_dev_close(struct rte_eth_dev *dev) { struct octeontx_txq *txq = NULL; @@ -517,6 +517,8 @@ octeontx_dev_close(struct rte_eth_dev *dev) dev->tx_pkt_burst = NULL; dev->rx_pkt_burst = NULL; + + return 0; } static int diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c index 51a6f99877..abe5f03628 100644 --- a/drivers/net/octeontx2/otx2_ethdev.c +++ b/drivers/net/octeontx2/otx2_ethdev.c @@ -2222,7 +2222,7 @@ otx2_nix_dev_start(struct rte_eth_dev *eth_dev) } static int otx2_nix_dev_reset(struct rte_eth_dev *eth_dev); -static void otx2_nix_dev_close(struct rte_eth_dev *eth_dev); +static int otx2_nix_dev_close(struct rte_eth_dev *eth_dev); /* Initialize and register driver with DPDK Application */ static const struct eth_dev_ops otx2_eth_dev_ops = { @@ -2635,10 +2635,11 @@ otx2_eth_dev_uninit(struct rte_eth_dev *eth_dev, bool mbox_close) return 0; } -static void +static int otx2_nix_dev_close(struct rte_eth_dev *eth_dev) { otx2_eth_dev_uninit(eth_dev, true); + return 0; } static int diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 668cbd1fc7..76e704a65a 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -728,7 +728,7 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { unsigned int i; @@ -748,6 +748,7 @@ eth_dev_close(struct rte_eth_dev *dev) } } + return 0; } static void diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c index 97356d2b0b..187a0019ff 100644 --- a/drivers/net/pfe/pfe_ethdev.c +++ b/drivers/net/pfe/pfe_ethdev.c @@ -398,14 +398,14 @@ pfe_eth_exit(struct rte_eth_dev *dev, struct pfe *pfe) pfe->nb_devs--; } -static void +static int pfe_eth_close(struct rte_eth_dev *dev) { if (!dev) - return; + return -1; if (!g_pfe) - return; + return -1; pfe_eth_exit(dev, g_pfe); @@ -415,6 +415,8 @@ pfe_eth_close(struct rte_eth_dev *dev) rte_free(g_pfe); g_pfe = NULL; } + + return 0; } static int diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 59f1746ee9..9535df183f 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -1542,7 +1542,7 @@ static void qede_poll_sp_sb_cb(void *param) } } -static void qede_dev_close(struct rte_eth_dev *eth_dev) +static int qede_dev_close(struct rte_eth_dev *eth_dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); @@ -1586,6 +1586,8 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) if (ECORE_IS_CMT(edev)) rte_eal_alarm_cancel(qede_poll_sp_sb_cb, (void *)eth_dev); + + return 0; } static int diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 1a58e0df84..eaa48627d6 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -318,7 +318,7 @@ sfc_dev_set_link_down(struct rte_eth_dev *dev) return 0; } -static void +static int sfc_dev_close(struct rte_eth_dev *dev) { struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev); @@ -364,6 +364,8 @@ sfc_dev_close(struct rte_eth_dev *dev) dev->process_private = NULL; free(sa); + + return 0; } static int diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c index e453fd1486..038abd98da 100644 --- a/drivers/net/softnic/rte_eth_softnic.c +++ b/drivers/net/softnic/rte_eth_softnic.c @@ -201,10 +201,10 @@ pmd_dev_stop(struct rte_eth_dev *dev) softnic_mtr_free(p); } -static void +static int pmd_dev_close(struct rte_eth_dev *dev __rte_unused) { - return; + return 0; } static int diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c index a17c53577c..daa40cfd6c 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.c +++ b/drivers/net/szedata2/rte_eth_szedata2.c @@ -1155,7 +1155,7 @@ eth_tx_queue_release(void *q) } } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -1180,6 +1180,8 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = NULL; + + return 0; } static int diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index df16aa4ea7..2d1e4e365a 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1067,7 +1067,7 @@ tap_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int tap_dev_close(struct rte_eth_dev *dev) { int i; @@ -1116,6 +1116,8 @@ tap_dev_close(struct rte_eth_dev *dev) * Since TUN device has no more opened file descriptors * it will be removed from kernel */ + + return 0; } static void diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c index 83d9488360..3d7348771a 100644 --- a/drivers/net/thunderx/nicvf_ethdev.c +++ b/drivers/net/thunderx/nicvf_ethdev.c @@ -1852,7 +1852,7 @@ nicvf_vf_stop(struct rte_eth_dev *dev, struct nicvf *nic, bool cleanup) } } -static void +static int nicvf_dev_close(struct rte_eth_dev *dev) { size_t i; @@ -1869,6 +1869,8 @@ nicvf_dev_close(struct rte_eth_dev *dev) nicvf_periodic_alarm_stop(nicvf_vf_interrupt, nic->snicvf[i]); } + + return 0; } static int diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index ce32be9ce3..f67f4db812 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -1164,7 +1164,7 @@ eth_dev_stop(struct rte_eth_dev *dev) update_queuing_status(dev); } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internal *internal; @@ -1173,7 +1173,7 @@ eth_dev_close(struct rte_eth_dev *dev) internal = dev->data->dev_private; if (!internal) - return; + return 0; eth_dev_stop(dev); @@ -1201,6 +1201,8 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(vring_states[dev->data->port_id]); vring_states[dev->data->port_id] = NULL; + + return 0; } static int diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 013a2904e6..0787337a01 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -704,7 +704,7 @@ virtio_alloc_queues(struct rte_eth_dev *dev) static void virtio_queues_unbind_intr(struct rte_eth_dev *dev); -static void +static int virtio_dev_close(struct rte_eth_dev *dev) { struct virtio_hw *hw = dev->data->dev_private; @@ -713,7 +713,7 @@ virtio_dev_close(struct rte_eth_dev *dev) PMD_INIT_LOG(DEBUG, "virtio_dev_close"); if (!hw->opened) - return; + return 0; hw->opened = false; /* reset the NIC */ @@ -743,6 +743,8 @@ virtio_dev_close(struct rte_eth_dev *dev) if (!hw->modern) rte_pci_ioport_unmap(VTPCI_IO(hw)); } + + return 0; } static int diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index fa80e75a5b..17fed0ed6e 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -64,7 +64,7 @@ static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev); static int vmxnet3_dev_configure(struct rte_eth_dev *dev); static int vmxnet3_dev_start(struct rte_eth_dev *dev); static void vmxnet3_dev_stop(struct rte_eth_dev *dev); -static void vmxnet3_dev_close(struct rte_eth_dev *dev); +static int vmxnet3_dev_close(struct rte_eth_dev *dev); static void vmxnet3_dev_set_rxmode(struct vmxnet3_hw *hw, uint32_t feature, int set); static int vmxnet3_dev_promiscuous_enable(struct rte_eth_dev *dev); static int vmxnet3_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -888,13 +888,15 @@ vmxnet3_free_queues(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int vmxnet3_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); vmxnet3_dev_stop(dev); vmxnet3_free_queues(dev); + + return 0; } static void diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index 23cc1e0959..6abfd58d2f 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -42,7 +42,7 @@ typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev); /**< @internal Function used to link down a configured Ethernet device. */ -typedef void (*eth_dev_close_t)(struct rte_eth_dev *dev); +typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev); /**< @internal Function used to close a configured Ethernet device. */ typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c index b49089a33c..4bd4d1c9ad 100644 --- a/app/test/virtual_pmd.c +++ b/app/test/virtual_pmd.c @@ -62,9 +62,11 @@ static void virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused) rte_pktmbuf_free(pkt); } -static void +static int virtual_ethdev_close(struct rte_eth_dev *dev __rte_unused) -{} +{ + return 0; +} static int virtual_ethdev_configure_success(struct rte_eth_dev *dev __rte_unused) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index b9723e9619..7d0ff1cbb3 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -376,9 +376,10 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_close(struct rte_eth_dev *dev __rte_unused) { + return 0; } static void diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c index b65ee449fc..badbce63fb 100644 --- a/drivers/net/af_xdp/rte_eth_af_xdp.c +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c @@ -701,7 +701,7 @@ xdp_umem_destroy(struct xsk_umem_info *umem) umem = NULL; } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -731,6 +731,8 @@ eth_dev_close(struct rte_eth_dev *dev) dev->data->mac_addrs = NULL; remove_xdp_program(internals); + + return 0; } static void diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index e13415e95b..5f2ed4b7b7 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -30,7 +30,7 @@ static int eth_ark_dev_uninit(struct rte_eth_dev *eth_dev); static int eth_ark_dev_configure(struct rte_eth_dev *dev); static int eth_ark_dev_start(struct rte_eth_dev *dev); static void eth_ark_dev_stop(struct rte_eth_dev *dev); -static void eth_ark_dev_close(struct rte_eth_dev *dev); +static int eth_ark_dev_close(struct rte_eth_dev *dev); static int eth_ark_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int eth_ark_dev_link_update(struct rte_eth_dev *dev, @@ -676,7 +676,7 @@ eth_ark_dev_stop(struct rte_eth_dev *dev) } } -static void +static int eth_ark_dev_close(struct rte_eth_dev *dev) { struct ark_adapter *ark = dev->data->dev_private; @@ -706,6 +706,8 @@ eth_ark_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = 0; + + return 0; } static int diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 2fca9140d7..254758fd66 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -22,7 +22,7 @@ static int atl_dev_start(struct rte_eth_dev *dev); static void atl_dev_stop(struct rte_eth_dev *dev); static int atl_dev_set_link_up(struct rte_eth_dev *dev); static int atl_dev_set_link_down(struct rte_eth_dev *dev); -static void atl_dev_close(struct rte_eth_dev *dev); +static int atl_dev_close(struct rte_eth_dev *dev); static int atl_dev_reset(struct rte_eth_dev *dev); static int atl_dev_promiscuous_enable(struct rte_eth_dev *dev); static int atl_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -719,7 +719,7 @@ atl_dev_set_link_down(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int atl_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); @@ -727,6 +727,8 @@ atl_dev_close(struct rte_eth_dev *dev) atl_dev_stop(dev); atl_free_queues(dev); + + return 0; } static int diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index 5b47f0924a..2eed6acc3f 100644 --- a/drivers/net/avp/avp_ethdev.c +++ b/drivers/net/avp/avp_ethdev.c @@ -38,7 +38,7 @@ static int avp_dev_create(struct rte_pci_device *pci_dev, static int avp_dev_configure(struct rte_eth_dev *dev); static int avp_dev_start(struct rte_eth_dev *dev); static void avp_dev_stop(struct rte_eth_dev *dev); -static void avp_dev_close(struct rte_eth_dev *dev); +static int avp_dev_close(struct rte_eth_dev *dev); static int avp_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); static int avp_vlan_offload_set(struct rte_eth_dev *dev, int mask); @@ -2103,7 +2103,7 @@ avp_dev_stop(struct rte_eth_dev *eth_dev) rte_spinlock_unlock(&avp->lock); } -static void +static int avp_dev_close(struct rte_eth_dev *eth_dev) { struct avp_dev *avp = AVP_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); @@ -2139,6 +2139,7 @@ avp_dev_close(struct rte_eth_dev *eth_dev) unlock: rte_spinlock_unlock(&avp->lock); + return 0; } static int diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c index 4f5a014b54..458d64bcef 100644 --- a/drivers/net/axgbe/axgbe_ethdev.c +++ b/drivers/net/axgbe/axgbe_ethdev.c @@ -16,7 +16,7 @@ static int axgbe_dev_configure(struct rte_eth_dev *dev); static int axgbe_dev_start(struct rte_eth_dev *dev); static void axgbe_dev_stop(struct rte_eth_dev *dev); static void axgbe_dev_interrupt_handler(void *param); -static void axgbe_dev_close(struct rte_eth_dev *dev); +static int axgbe_dev_close(struct rte_eth_dev *dev); static int axgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); static int axgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); static int axgbe_dev_allmulticast_enable(struct rte_eth_dev *dev); @@ -410,10 +410,11 @@ axgbe_dev_stop(struct rte_eth_dev *dev) } /* Clear all resources like TX/RX queues. */ -static void +static int axgbe_dev_close(struct rte_eth_dev *dev) { axgbe_dev_clear_queues(dev); + return 0; } static int diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index b2ea5fafa7..73217c2138 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -280,7 +280,7 @@ bnx2x_dev_stop(struct rte_eth_dev *dev) return; } -static void +static int bnx2x_dev_close(struct rte_eth_dev *dev) { struct bnx2x_softc *sc = dev->data->dev_private; @@ -295,6 +295,8 @@ bnx2x_dev_close(struct rte_eth_dev *dev) /* free ilt */ bnx2x_free_ilt_mem(sc); + + return 0; } static int diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 05e9a6abbf..e726d078ec 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1357,7 +1357,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) bp->flow_stat->flow_count = 0; } -static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) +static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -1392,6 +1392,8 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev) rte_free(bp->grp_info); bp->grp_info = NULL; + + return 0; } static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 17010f1ee2..2b6c0a277b 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -457,10 +457,11 @@ void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev) bnxt_vf_rep_free_rx_mbufs(vfr_bp); } -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev) { BNXT_TF_DBG(DEBUG, "BNXT Port:%d VFR close\n", eth_dev->data->port_id); bnxt_vf_representor_uninit(eth_dev); + return 0; } int bnxt_vf_rep_dev_info_get_op(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.h b/drivers/net/bnxt/bnxt_reps.h index 3239e03fc0..d9b9ee2757 100644 --- a/drivers/net/bnxt/bnxt_reps.h +++ b/drivers/net/bnxt/bnxt_reps.h @@ -45,7 +45,7 @@ int bnxt_vf_rep_tx_queue_setup_op(struct rte_eth_dev *eth_dev, void bnxt_vf_rep_rx_queue_release_op(void *rx_queue); void bnxt_vf_rep_tx_queue_release_op(void *tx_queue); void bnxt_vf_rep_dev_stop_op(struct rte_eth_dev *eth_dev); -void bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); +int bnxt_vf_rep_dev_close_op(struct rte_eth_dev *eth_dev); int bnxt_vf_rep_stats_get_op(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats); int bnxt_vf_rep_stats_reset_op(struct rte_eth_dev *eth_dev); diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h index c9b2d0fe46..0a0034705d 100644 --- a/drivers/net/bonding/eth_bond_private.h +++ b/drivers/net/bonding/eth_bond_private.h @@ -318,7 +318,7 @@ bond_tlb_activate_slave(struct bond_dev_private *internals); void bond_ethdev_stop(struct rte_eth_dev *eth_dev); -void +int bond_ethdev_close(struct rte_eth_dev *dev); #endif diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 4ffd2ca4bb..dff835ef92 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -2095,7 +2095,7 @@ bond_ethdev_stop(struct rte_eth_dev *eth_dev) } } -void +int bond_ethdev_close(struct rte_eth_dev *dev) { struct bond_dev_private *internals = dev->data->dev_private; @@ -2119,6 +2119,8 @@ bond_ethdev_close(struct rte_eth_dev *dev) bond_flow_ops.flush(dev, &ferror); bond_ethdev_free_queues(dev); rte_bitmap_reset(internals->vlan_filter_bmp); + + return 0; } /* forward declaration */ diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c index 422e190daf..e4bbba5c32 100644 --- a/drivers/net/cxgbe/cxgbe_ethdev.c +++ b/drivers/net/cxgbe/cxgbe_ethdev.c @@ -318,7 +318,7 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) /* * Stop device. */ -void cxgbe_dev_close(struct rte_eth_dev *eth_dev) +int cxgbe_dev_close(struct rte_eth_dev *eth_dev) { struct port_info *temp_pi, *pi = eth_dev->data->dev_private; struct adapter *adapter = pi->adapter; @@ -327,10 +327,10 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) CXGBE_FUNC_TRACE(); if (!(adapter->flags & FULL_INIT_DONE)) - return; + return 0; if (!pi->viid) - return; + return 0; cxgbe_down(pi); t4_sge_eth_release_queues(pi); @@ -343,11 +343,13 @@ void cxgbe_dev_close(struct rte_eth_dev *eth_dev) for_each_port(adapter, i) { temp_pi = adap2pinfo(adapter, i); if (temp_pi->viid) - return; + return 0; } cxgbe_close(adapter); rte_free(adapter); + + return 0; } /* Start the device. diff --git a/drivers/net/cxgbe/cxgbe_pfvf.h b/drivers/net/cxgbe/cxgbe_pfvf.h index 0b7c52aecf..69d91639e9 100644 --- a/drivers/net/cxgbe/cxgbe_pfvf.h +++ b/drivers/net/cxgbe/cxgbe_pfvf.h @@ -19,7 +19,7 @@ void cxgbe_dev_rx_queue_release(void *q); void cxgbe_dev_tx_queue_release(void *q); void cxgbe_dev_stop(struct rte_eth_dev *eth_dev); -void cxgbe_dev_close(struct rte_eth_dev *eth_dev); +int cxgbe_dev_close(struct rte_eth_dev *eth_dev); int cxgbe_dev_info_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *device_info); int cxgbe_dev_promiscuous_enable(struct rte_eth_dev *eth_dev); diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 8a6b19b5ce..7fe06e1830 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -369,7 +369,7 @@ static void dpaa_eth_dev_stop(struct rte_eth_dev *dev) dev->tx_pkt_burst = dpaa_eth_tx_drop_all; } -static void dpaa_eth_dev_close(struct rte_eth_dev *dev) +static int dpaa_eth_dev_close(struct rte_eth_dev *dev) { struct fman_if *fif = dev->process_private; struct __fman_if *__fif; @@ -392,6 +392,8 @@ static void dpaa_eth_dev_close(struct rte_eth_dev *dev) dpaa_interrupt_handler, (void *)dev); } + + return 0; } static int diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index 02daa4d250..fb4165fa03 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -1236,7 +1236,7 @@ dpaa2_dev_stop(struct rte_eth_dev *dev) rte_eth_linkstatus_set(dev, &link); } -static void +static int dpaa2_dev_close(struct rte_eth_dev *dev) { struct dpaa2_dev_priv *priv = dev->data->dev_private; @@ -1252,11 +1252,13 @@ dpaa2_dev_close(struct rte_eth_dev *dev) ret = dpni_reset(dpni, CMD_PRI_LOW, priv->token); if (ret) { DPAA2_PMD_ERR("Failure cleaning dpni device: err=%d", ret); - return; + return -1; } memset(&link, 0, sizeof(link)); rte_eth_linkstatus_set(dev, &link); + + return 0; } static int diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index 1dc360713a..2d0e071448 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -34,7 +34,7 @@ static int eth_em_configure(struct rte_eth_dev *dev); static int eth_em_start(struct rte_eth_dev *dev); static void eth_em_stop(struct rte_eth_dev *dev); -static void eth_em_close(struct rte_eth_dev *dev); +static int eth_em_close(struct rte_eth_dev *dev); static int eth_em_promiscuous_enable(struct rte_eth_dev *dev); static int eth_em_promiscuous_disable(struct rte_eth_dev *dev); static int eth_em_allmulticast_enable(struct rte_eth_dev *dev); @@ -758,7 +758,7 @@ eth_em_stop(struct rte_eth_dev *dev) } } -static void +static int eth_em_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -782,6 +782,8 @@ eth_em_close(struct rte_eth_dev *dev) rte_intr_disable(intr_handle); rte_intr_callback_unregister(intr_handle, eth_em_interrupt_handler, dev); + + return 0; } static int diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index 5ab74840aa..9e4aefe00c 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -77,7 +77,7 @@ static int eth_igb_start(struct rte_eth_dev *dev); static void eth_igb_stop(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_up(struct rte_eth_dev *dev); static int eth_igb_dev_set_link_down(struct rte_eth_dev *dev); -static void eth_igb_close(struct rte_eth_dev *dev); +static int eth_igb_close(struct rte_eth_dev *dev); static int eth_igb_reset(struct rte_eth_dev *dev); static int eth_igb_promiscuous_enable(struct rte_eth_dev *dev); static int eth_igb_promiscuous_disable(struct rte_eth_dev *dev); @@ -155,7 +155,7 @@ static void igbvf_intr_disable(struct e1000_hw *hw); static int igbvf_dev_configure(struct rte_eth_dev *dev); static int igbvf_dev_start(struct rte_eth_dev *dev); static void igbvf_dev_stop(struct rte_eth_dev *dev); -static void igbvf_dev_close(struct rte_eth_dev *dev); +static int igbvf_dev_close(struct rte_eth_dev *dev); static int igbvf_promiscuous_enable(struct rte_eth_dev *dev); static int igbvf_promiscuous_disable(struct rte_eth_dev *dev); static int igbvf_allmulticast_enable(struct rte_eth_dev *dev); @@ -1535,7 +1535,7 @@ eth_igb_dev_set_link_down(struct rte_eth_dev *dev) return 0; } -static void +static int eth_igb_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1604,6 +1604,8 @@ eth_igb_close(struct rte_eth_dev *dev) /* clear all the filters list */ igb_filterlist_flush(dev); + + return 0; } /* @@ -3381,7 +3383,7 @@ igbvf_dev_stop(struct rte_eth_dev *dev) adapter->stopped = true; } -static void +static int igbvf_dev_close(struct rte_eth_dev *dev) { struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -3412,6 +3414,8 @@ igbvf_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(&pci_dev->intr_handle, eth_igbvf_interrupt_handler, (void *)dev); + + return 0; } static int diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 8077519735..ae6daad892 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -187,7 +187,7 @@ static void ena_init_rings(struct ena_adapter *adapter, static int ena_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ena_start(struct rte_eth_dev *dev); static void ena_stop(struct rte_eth_dev *dev); -static void ena_close(struct rte_eth_dev *dev); +static int ena_close(struct rte_eth_dev *dev); static int ena_dev_reset(struct rte_eth_dev *dev); static int ena_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); static void ena_rx_queue_release_all(struct rte_eth_dev *dev); @@ -487,7 +487,7 @@ static void ena_config_debug_area(struct ena_adapter *adapter) ena_com_delete_debug_area(&adapter->ena_dev); } -static void ena_close(struct rte_eth_dev *dev) +static int ena_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; @@ -513,6 +513,8 @@ static void ena_close(struct rte_eth_dev *dev) * release of the resource in the rte_eth_dev_release_port(). */ dev->data->mac_addrs = NULL; + + return 0; } static int diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index c6fb42740d..bdb32762ce 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -545,7 +545,7 @@ enetc_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int enetc_dev_close(struct rte_eth_dev *dev) { uint16_t i; @@ -564,6 +564,8 @@ enetc_dev_close(struct rte_eth_dev *dev) dev->data->tx_queues[i] = NULL; } dev->data->nb_tx_queues = 0; + + return 0; } static int diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 57e82845a4..ed03d53608 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -446,12 +446,14 @@ static void enicpmd_dev_stop(struct rte_eth_dev *eth_dev) /* * Stop device. */ -static void enicpmd_dev_close(struct rte_eth_dev *eth_dev) +static int enicpmd_dev_close(struct rte_eth_dev *eth_dev) { struct enic *enic = pmd_priv(eth_dev); ENICPMD_FUNC_TRACE(); enic_remove(enic); + + return 0; } static int enicpmd_dev_link_update(struct rte_eth_dev *eth_dev, diff --git a/drivers/net/enic/enic_vf_representor.c b/drivers/net/enic/enic_vf_representor.c index 5d34e1b460..c528be2b98 100644 --- a/drivers/net/enic/enic_vf_representor.c +++ b/drivers/net/enic/enic_vf_representor.c @@ -277,11 +277,12 @@ static void enic_vf_dev_stop(struct rte_eth_dev *eth_dev) * "close" is no-op for now and solely exists so that rte_eth_dev_close() * can finish its own cleanup without errors. */ -static void enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) +static int enic_vf_dev_close(struct rte_eth_dev *eth_dev __rte_unused) { ENICPMD_FUNC_TRACE(); if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; + return 0; } static int diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c index 96f7e456f9..93ebd09114 100644 --- a/drivers/net/failsafe/failsafe_ops.c +++ b/drivers/net/failsafe/failsafe_ops.c @@ -240,7 +240,7 @@ fs_dev_set_link_down(struct rte_eth_dev *dev) } static void fs_dev_free_queues(struct rte_eth_dev *dev); -static void +static int fs_dev_close(struct rte_eth_dev *dev) { struct sub_device *sdev; @@ -259,6 +259,7 @@ fs_dev_close(struct rte_eth_dev *dev) } fs_dev_free_queues(dev); fs_unlock(dev, 0); + return 0; } static int diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index 5771d83b55..533f976709 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -2776,7 +2776,7 @@ fm10k_close_mbx_service(struct fm10k_hw *hw) hw->mbx.ops.disconnect(hw, &hw->mbx); } -static void +static int fm10k_dev_close(struct rte_eth_dev *dev) { struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2821,6 +2821,8 @@ fm10k_dev_close(struct rte_eth_dev *dev) rte_intr_callback_unregister(intr_handle, fm10k_dev_interrupt_handler_vf, (void *)dev); } + + return 0; } static const struct eth_dev_ops fm10k_eth_dev_ops = { diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c index 67e6afcf7a..5f2e97d3bd 100644 --- a/drivers/net/hinic/hinic_pmd_ethdev.c +++ b/drivers/net/hinic/hinic_pmd_ethdev.c @@ -2936,7 +2936,7 @@ static void hinic_nic_dev_destroy(struct rte_eth_dev *eth_dev) * @param dev * Pointer to Ethernet device structure. */ -static void hinic_dev_close(struct rte_eth_dev *dev) +static int hinic_dev_close(struct rte_eth_dev *dev) { struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev); @@ -2944,7 +2944,7 @@ static void hinic_dev_close(struct rte_eth_dev *dev) &nic_dev->dev_status)) { PMD_DRV_LOG(WARNING, "Device %s already closed", dev->data->name); - return; + return 0; } /* stop device first */ @@ -2971,6 +2971,8 @@ static void hinic_dev_close(struct rte_eth_dev *dev) /* deinit nic hardware device */ hinic_nic_dev_destroy(dev); + + return 0; } static const struct eth_dev_ops hinic_pmd_ops = { diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 73d504253d..3b395a1ccf 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -4859,7 +4859,7 @@ hns3_dev_stop(struct rte_eth_dev *dev) rte_spinlock_unlock(&hw->lock); } -static void +static int hns3_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; @@ -4868,7 +4868,7 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) if (rte_eal_process_type() != RTE_PROC_PRIMARY) { rte_free(eth_dev->process_private); eth_dev->process_private = NULL; - return; + return 0; } if (hw->adapter_state == HNS3_NIC_STARTED) @@ -4888,6 +4888,8 @@ hns3_dev_close(struct rte_eth_dev *eth_dev) eth_dev->process_private = NULL; hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); + + return 0; } static int diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 037a5be7e0..e0ca5a6ac2 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1910,14 +1910,14 @@ hns3vf_dev_stop(struct rte_eth_dev *dev) rte_spinlock_unlock(&hw->lock); } -static void +static int hns3vf_dev_close(struct rte_eth_dev *eth_dev) { struct hns3_adapter *hns = eth_dev->data->dev_private; struct hns3_hw *hw = &hns->hw; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; if (hw->adapter_state == HNS3_NIC_STARTED) hns3vf_dev_stop(eth_dev); @@ -1935,6 +1935,8 @@ hns3vf_dev_close(struct rte_eth_dev *eth_dev) eth_dev->process_private = NULL; hns3_mp_uninit_primary(); hns3_warn(hw, "Close port %d finished", hw->data->port_id); + + return 0; } static int diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 563f21d9df..804f0128ab 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -225,7 +225,7 @@ static int eth_i40e_dev_uninit(struct rte_eth_dev *eth_dev); static int i40e_dev_configure(struct rte_eth_dev *dev); static int i40e_dev_start(struct rte_eth_dev *dev); static void i40e_dev_stop(struct rte_eth_dev *dev); -static void i40e_dev_close(struct rte_eth_dev *dev); +static int i40e_dev_close(struct rte_eth_dev *dev); static int i40e_dev_reset(struct rte_eth_dev *dev); static int i40e_dev_promiscuous_enable(struct rte_eth_dev *dev); static int i40e_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -2608,7 +2608,7 @@ i40e_dev_stop(struct rte_eth_dev *dev) pf->adapter->rss_reta_updated = 0; } -static void +static int i40e_dev_close(struct rte_eth_dev *dev) { struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); @@ -2748,6 +2748,7 @@ i40e_dev_close(struct rte_eth_dev *dev) i40e_tm_conf_uninit(dev); hw->adapter_closed = 1; + return 0; } /* diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index 8531cf6b12..61aad8c415 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -90,7 +90,7 @@ static int i40evf_dev_xstats_reset(struct rte_eth_dev *dev); static int i40evf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on); static int i40evf_vlan_offload_set(struct rte_eth_dev *dev, int mask); -static void i40evf_dev_close(struct rte_eth_dev *dev); +static int i40evf_dev_close(struct rte_eth_dev *dev); static int i40evf_dev_reset(struct rte_eth_dev *dev); static int i40evf_check_vf_reset_done(struct rte_eth_dev *dev); static int i40evf_dev_promiscuous_enable(struct rte_eth_dev *dev); @@ -2401,7 +2401,7 @@ i40evf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) return ret; } -static void +static int i40evf_dev_close(struct rte_eth_dev *dev) { struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2433,6 +2433,7 @@ i40evf_dev_close(struct rte_eth_dev *dev) vf->aq_resp = NULL; hw->adapter_closed = 1; + return 0; } /* diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c index 440da7d76a..8f46c4588f 100644 --- a/drivers/net/iavf/iavf_ethdev.c +++ b/drivers/net/iavf/iavf_ethdev.c @@ -32,7 +32,7 @@ static int iavf_dev_configure(struct rte_eth_dev *dev); static int iavf_dev_start(struct rte_eth_dev *dev); static void iavf_dev_stop(struct rte_eth_dev *dev); -static void iavf_dev_close(struct rte_eth_dev *dev); +static int iavf_dev_close(struct rte_eth_dev *dev); static int iavf_dev_reset(struct rte_eth_dev *dev); static int iavf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -1463,7 +1463,7 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) return 0; } -static void +static int iavf_dev_close(struct rte_eth_dev *dev) { struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1506,6 +1506,8 @@ iavf_dev_close(struct rte_eth_dev *dev) rte_free(vf->aq_resp); vf->aq_resp = NULL; + + return 0; } static int diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index 2faed3cc7a..5b626cb641 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -847,13 +847,13 @@ ice_dcf_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int ice_dcf_dev_close(struct rte_eth_dev *dev) { struct ice_dcf_adapter *adapter = dev->data->dev_private; if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return; + return 0; dev->dev_ops = NULL; dev->rx_pkt_burst = NULL; @@ -861,6 +861,8 @@ ice_dcf_dev_close(struct rte_eth_dev *dev) ice_dcf_uninit_parent_adapter(dev); ice_dcf_uninit_hw(dev, &adapter->real_hw); + + return 0; } static int diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index cfd357b055..b4ac5e3f81 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -77,7 +77,7 @@ static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { static int ice_dev_configure(struct rte_eth_dev *dev); static int ice_dev_start(struct rte_eth_dev *dev); static void ice_dev_stop(struct rte_eth_dev *dev); -static void ice_dev_close(struct rte_eth_dev *dev); +static int ice_dev_close(struct rte_eth_dev *dev); static int ice_dev_reset(struct rte_eth_dev *dev); static int ice_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -2430,7 +2430,7 @@ ice_dev_stop(struct rte_eth_dev *dev) pf->adapter_stopped = true; } -static void +static int ice_dev_close(struct rte_eth_dev *dev) { struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private); @@ -2478,6 +2478,8 @@ ice_dev_close(struct rte_eth_dev *dev) /* unregister callback func from eal lib */ rte_intr_callback_unregister(intr_handle, ice_interrupt_handler, dev); + + return 0; } static int diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index 810568bc54..11397c5c1d 100644 --- a/drivers/net/igc/igc_ethdev.c +++ b/drivers/net/igc/igc_ethdev.c @@ -183,7 +183,7 @@ static void eth_igc_stop(struct rte_eth_dev *dev); static int eth_igc_start(struct rte_eth_dev *dev); static int eth_igc_set_link_up(struct rte_eth_dev *dev); static int eth_igc_set_link_down(struct rte_eth_dev *dev); -static void eth_igc_close(struct rte_eth_dev *dev); +static int eth_igc_close(struct rte_eth_dev *dev); static int eth_igc_reset(struct rte_eth_dev *dev); static int eth_igc_promiscuous_enable(struct rte_eth_dev *dev); static int eth_igc_promiscuous_disable(struct rte_eth_dev *dev); @@ -1165,7 +1165,7 @@ igc_dev_free_queues(struct rte_eth_dev *dev) dev->data->nb_tx_queues = 0; } -static void +static int eth_igc_close(struct rte_eth_dev *dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); @@ -1199,6 +1199,8 @@ eth_igc_close(struct rte_eth_dev *dev) /* Reset any pending lock */ igc_reset_swfw_lock(hw); + + return 0; } static void diff --git a/drivers/net/ionic/ionic_ethdev.c b/drivers/net/ionic/ionic_ethdev.c index 800f6e5d64..1775fd29b7 100644 --- a/drivers/net/ionic/ionic_ethdev.c +++ b/drivers/net/ionic/ionic_ethdev.c @@ -25,7 +25,7 @@ static int ionic_dev_configure(struct rte_eth_dev *dev); static int ionic_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static int ionic_dev_start(struct rte_eth_dev *dev); static void ionic_dev_stop(struct rte_eth_dev *dev); -static void ionic_dev_close(struct rte_eth_dev *dev); +static int ionic_dev_close(struct rte_eth_dev *dev); static int ionic_dev_set_link_up(struct rte_eth_dev *dev); static int ionic_dev_set_link_down(struct rte_eth_dev *dev); static int ionic_dev_link_update(struct rte_eth_dev *eth_dev, @@ -956,7 +956,7 @@ ionic_dev_stop(struct rte_eth_dev *eth_dev) /* * Reset and stop device. */ -static void +static int ionic_dev_close(struct rte_eth_dev *eth_dev) { struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev); @@ -967,14 +967,16 @@ ionic_dev_close(struct rte_eth_dev *eth_dev) err = ionic_lif_stop(lif); if (err) { IONIC_PRINT(ERR, "Cannot stop LIF: %d", err); - return; + return -1; } err = eth_ionic_dev_uninit(eth_dev); if (err) { IONIC_PRINT(ERR, "Cannot destroy LIF: %d", err); - return; + return -1; } + + return 0; } static int diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c index b673c49149..d49abbf758 100644 --- a/drivers/net/ipn3ke/ipn3ke_representor.c +++ b/drivers/net/ipn3ke/ipn3ke_representor.c @@ -208,7 +208,7 @@ ipn3ke_rpst_dev_stop(struct rte_eth_dev *dev) } } -static void +static int ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) { struct ipn3ke_hw *hw = IPN3KE_DEV_PRIVATE_TO_HW(dev); @@ -221,6 +221,8 @@ ipn3ke_rpst_dev_close(struct rte_eth_dev *dev) /* Disable the RX path */ ipn3ke_xmac_rx_disable(hw, rpst->port_id, 0); } + + return 0; } /* diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0f065bbc04..a1369a0744 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -147,7 +147,7 @@ static int ixgbe_dev_start(struct rte_eth_dev *dev); static void ixgbe_dev_stop(struct rte_eth_dev *dev); static int ixgbe_dev_set_link_up(struct rte_eth_dev *dev); static int ixgbe_dev_set_link_down(struct rte_eth_dev *dev); -static void ixgbe_dev_close(struct rte_eth_dev *dev); +static int ixgbe_dev_close(struct rte_eth_dev *dev); static int ixgbe_dev_reset(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev); static int ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -251,7 +251,7 @@ static int ixgbevf_dev_start(struct rte_eth_dev *dev); static int ixgbevf_dev_link_update(struct rte_eth_dev *dev, int wait_to_complete); static void ixgbevf_dev_stop(struct rte_eth_dev *dev); -static void ixgbevf_dev_close(struct rte_eth_dev *dev); +static int ixgbevf_dev_close(struct rte_eth_dev *dev); static int ixgbevf_dev_reset(struct rte_eth_dev *dev); static void ixgbevf_intr_disable(struct rte_eth_dev *dev); static void ixgbevf_intr_enable(struct rte_eth_dev *dev); @@ -2994,7 +2994,7 @@ ixgbe_dev_set_link_down(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int ixgbe_dev_close(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = @@ -3065,6 +3065,7 @@ ixgbe_dev_close(struct rte_eth_dev *dev) rte_free(dev->security_ctx); #endif + return 0; } /* @@ -5443,7 +5444,7 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) adapter->rss_reta_updated = 0; } -static void +static int ixgbevf_dev_close(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -5472,6 +5473,8 @@ ixgbevf_dev_close(struct rte_eth_dev *dev) rte_intr_disable(intr_handle); rte_intr_callback_unregister(intr_handle, ixgbevf_dev_interrupt_handler, dev); + + return 0; } /* diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index 831fe96c96..aa365a57de 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -198,7 +198,7 @@ eth_kni_dev_stop(struct rte_eth_dev *dev) dev->data->dev_link.link_status = 0; } -static void +static int eth_kni_close(struct rte_eth_dev *eth_dev) { struct pmd_internals *internals; @@ -214,6 +214,8 @@ eth_kni_close(struct rte_eth_dev *eth_dev) if (ret) PMD_LOG(WARNING, "Not able to release kni for %s", eth_dev->data->name); + + return 0; } static int diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c index 2c2b27e62a..93e2ed5670 100644 --- a/drivers/net/liquidio/lio_ethdev.c +++ b/drivers/net/liquidio/lio_ethdev.c @@ -1550,7 +1550,7 @@ lio_dev_set_link_down(struct rte_eth_dev *eth_dev) * @return * - nothing */ -static void +static int lio_dev_close(struct rte_eth_dev *eth_dev) { struct lio_device *lio_dev = LIO_DEV(eth_dev); @@ -1581,6 +1581,8 @@ lio_dev_close(struct rte_eth_dev *eth_dev) /* Delete all queues */ lio_dev_clear_queues(eth_dev); + + return 0; } /** diff --git a/drivers/net/memif/rte_eth_memif.c b/drivers/net/memif/rte_eth_memif.c index a19c0f3e6b..1a2411c838 100644 --- a/drivers/net/memif/rte_eth_memif.c +++ b/drivers/net/memif/rte_eth_memif.c @@ -1218,7 +1218,7 @@ memif_dev_start(struct rte_eth_dev *dev) return ret; } -static void +static int memif_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *pmd = dev->data->dev_private; @@ -1239,6 +1239,8 @@ memif_dev_close(struct rte_eth_dev *dev) } rte_free(dev->process_private); + + return 0; } static int diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 71061a720f..df59314b66 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -370,7 +370,7 @@ mlx4_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mlx4_dev_close(struct rte_eth_dev *dev) { struct mlx4_priv *priv = dev->data->dev_private; @@ -400,6 +400,7 @@ mlx4_dev_close(struct rte_eth_dev *dev) MLX4_ASSERT(priv->ctx == NULL); mlx4_intr_uninstall(priv); memset(priv, 0, sizeof(*priv)); + return 0; } static const struct eth_dev_ops mlx4_dev_ops = { diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 4a807fb4fd..01ead6e6af 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -1341,7 +1341,7 @@ mlx5_proc_priv_uninit(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -void +int mlx5_dev_close(struct rte_eth_dev *dev) { struct mlx5_priv *priv = dev->data->dev_private; @@ -1351,14 +1351,14 @@ mlx5_dev_close(struct rte_eth_dev *dev) if (rte_eal_process_type() == RTE_PROC_SECONDARY) { /* Check if process_private released. */ if (!dev->process_private) - return; + return 0; mlx5_tx_uar_uninit_secondary(dev); mlx5_proc_priv_uninit(dev); rte_eth_dev_release_port(dev); - return; + return 0; } if (!priv->sh) - return; + return 0; DRV_LOG(DEBUG, "port %u closing device \"%s\"", dev->data->port_id, ((priv->sh->ctx != NULL) ? @@ -1479,6 +1479,7 @@ mlx5_dev_close(struct rte_eth_dev *dev) * it is freed when dev_private is freed. */ dev->data->mac_addrs = NULL; + return 0; } /** diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 865e72d318..56f0e25b4c 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -842,7 +842,7 @@ int mlx5_proc_priv_init(struct rte_eth_dev *dev); int mlx5_udp_tunnel_port_add(struct rte_eth_dev *dev, struct rte_eth_udp_tunnel *udp_tunnel); uint16_t mlx5_eth_find_next(uint16_t port_id, struct rte_pci_device *pci_dev); -void mlx5_dev_close(struct rte_eth_dev *dev); +int mlx5_dev_close(struct rte_eth_dev *dev); /* Macro to iterate over all valid ports for mlx5 driver. */ #define MLX5_ETH_FOREACH_DEV(port_id, pci_dev) \ diff --git a/drivers/net/mvneta/mvneta_ethdev.c b/drivers/net/mvneta/mvneta_ethdev.c index 5bf3ebc4bd..eebcdb840e 100644 --- a/drivers/net/mvneta/mvneta_ethdev.c +++ b/drivers/net/mvneta/mvneta_ethdev.c @@ -429,7 +429,7 @@ mvneta_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mvneta_dev_close(struct rte_eth_dev *dev) { struct mvneta_priv *priv = dev->data->dev_private; @@ -455,6 +455,8 @@ mvneta_dev_close(struct rte_eth_dev *dev) mvneta_neta_deinit(); rte_mvep_deinit(MVEP_MOD_T_NETA); } + + return 0; } /** diff --git a/drivers/net/mvpp2/mrvl_ethdev.c b/drivers/net/mvpp2/mrvl_ethdev.c index f5e77d07bf..27f7cfb056 100644 --- a/drivers/net/mvpp2/mrvl_ethdev.c +++ b/drivers/net/mvpp2/mrvl_ethdev.c @@ -855,7 +855,7 @@ mrvl_dev_stop(struct rte_eth_dev *dev) * @param dev * Pointer to Ethernet device structure. */ -static void +static int mrvl_dev_close(struct rte_eth_dev *dev) { struct mrvl_priv *priv = dev->data->dev_private; @@ -915,6 +915,8 @@ mrvl_dev_close(struct rte_eth_dev *dev) mrvl_deinit_pp2(); rte_mvep_deinit(MVEP_MOD_T_PP2); } + + return 0; } /** diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 229c1b9149..8968036ea3 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -841,13 +841,15 @@ hn_dev_stop(struct rte_eth_dev *dev) hn_vf_stop(dev); } -static void +static int hn_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); hn_vf_close(dev); hn_dev_free_queues(dev); + + return 0; } static const struct eth_dev_ops hn_eth_dev_ops = { diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c index b039ab6fc2..c3c3d003f1 100644 --- a/drivers/net/nfb/nfb_ethdev.c +++ b/drivers/net/nfb/nfb_ethdev.c @@ -209,7 +209,7 @@ nfb_eth_dev_info(struct rte_eth_dev *dev, * @param dev * Pointer to Ethernet device structure. */ -static void +static int nfb_eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -235,6 +235,8 @@ nfb_eth_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = NULL; + + return 0; } /** diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index f5e4cd339d..9509dc8bd6 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -50,7 +50,7 @@ #include <errno.h> /* Prototypes */ -static void nfp_net_close(struct rte_eth_dev *dev); +static int nfp_net_close(struct rte_eth_dev *dev); static int nfp_net_configure(struct rte_eth_dev *dev); static void nfp_net_dev_interrupt_handler(void *param); static void nfp_net_dev_interrupt_delayed_handler(void *param); @@ -864,7 +864,7 @@ nfp_net_set_link_down(struct rte_eth_dev *dev) } /* Reset and stop device. The device can not be restarted. */ -static void +static int nfp_net_close(struct rte_eth_dev *dev) { struct nfp_net_hw *hw; @@ -906,6 +906,8 @@ nfp_net_close(struct rte_eth_dev *dev) * The ixgbe PMD driver disables the pcie master on the * device. The i40e does not... */ + + return 0; } static int diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index ff2e22cd44..10eeeac642 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -478,7 +478,7 @@ octeontx_dev_configure(struct rte_eth_dev *dev) return 0; } -static void +static int octeontx_dev_close(struct rte_eth_dev *dev) { struct octeontx_txq *txq = NULL; @@ -517,6 +517,8 @@ octeontx_dev_close(struct rte_eth_dev *dev) dev->tx_pkt_burst = NULL; dev->rx_pkt_burst = NULL; + + return 0; } static int diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c index 51a6f99877..abe5f03628 100644 --- a/drivers/net/octeontx2/otx2_ethdev.c +++ b/drivers/net/octeontx2/otx2_ethdev.c @@ -2222,7 +2222,7 @@ otx2_nix_dev_start(struct rte_eth_dev *eth_dev) } static int otx2_nix_dev_reset(struct rte_eth_dev *eth_dev); -static void otx2_nix_dev_close(struct rte_eth_dev *eth_dev); +static int otx2_nix_dev_close(struct rte_eth_dev *eth_dev); /* Initialize and register driver with DPDK Application */ static const struct eth_dev_ops otx2_eth_dev_ops = { @@ -2635,10 +2635,11 @@ otx2_eth_dev_uninit(struct rte_eth_dev *eth_dev, bool mbox_close) return 0; } -static void +static int otx2_nix_dev_close(struct rte_eth_dev *eth_dev) { otx2_eth_dev_uninit(eth_dev, true); + return 0; } static int diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index 668cbd1fc7..76e704a65a 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -728,7 +728,7 @@ eth_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { unsigned int i; @@ -748,6 +748,7 @@ eth_dev_close(struct rte_eth_dev *dev) } } + return 0; } static void diff --git a/drivers/net/pfe/pfe_ethdev.c b/drivers/net/pfe/pfe_ethdev.c index 97356d2b0b..187a0019ff 100644 --- a/drivers/net/pfe/pfe_ethdev.c +++ b/drivers/net/pfe/pfe_ethdev.c @@ -398,14 +398,14 @@ pfe_eth_exit(struct rte_eth_dev *dev, struct pfe *pfe) pfe->nb_devs--; } -static void +static int pfe_eth_close(struct rte_eth_dev *dev) { if (!dev) - return; + return -1; if (!g_pfe) - return; + return -1; pfe_eth_exit(dev, g_pfe); @@ -415,6 +415,8 @@ pfe_eth_close(struct rte_eth_dev *dev) rte_free(g_pfe); g_pfe = NULL; } + + return 0; } static int diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 59f1746ee9..9535df183f 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -1542,7 +1542,7 @@ static void qede_poll_sp_sb_cb(void *param) } } -static void qede_dev_close(struct rte_eth_dev *eth_dev) +static int qede_dev_close(struct rte_eth_dev *eth_dev) { struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); @@ -1586,6 +1586,8 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev) if (ECORE_IS_CMT(edev)) rte_eal_alarm_cancel(qede_poll_sp_sb_cb, (void *)eth_dev); + + return 0; } static int diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 1a58e0df84..eaa48627d6 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -318,7 +318,7 @@ sfc_dev_set_link_down(struct rte_eth_dev *dev) return 0; } -static void +static int sfc_dev_close(struct rte_eth_dev *dev) { struct sfc_adapter *sa = sfc_adapter_by_eth_dev(dev); @@ -364,6 +364,8 @@ sfc_dev_close(struct rte_eth_dev *dev) dev->process_private = NULL; free(sa); + + return 0; } static int diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c index e453fd1486..038abd98da 100644 --- a/drivers/net/softnic/rte_eth_softnic.c +++ b/drivers/net/softnic/rte_eth_softnic.c @@ -201,10 +201,10 @@ pmd_dev_stop(struct rte_eth_dev *dev) softnic_mtr_free(p); } -static void +static int pmd_dev_close(struct rte_eth_dev *dev __rte_unused) { - return; + return 0; } static int diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c index a17c53577c..daa40cfd6c 100644 --- a/drivers/net/szedata2/rte_eth_szedata2.c +++ b/drivers/net/szedata2/rte_eth_szedata2.c @@ -1155,7 +1155,7 @@ eth_tx_queue_release(void *q) } } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internals *internals = dev->data->dev_private; @@ -1180,6 +1180,8 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(dev->data->mac_addrs); dev->data->mac_addrs = NULL; + + return 0; } static int diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index df16aa4ea7..2d1e4e365a 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1067,7 +1067,7 @@ tap_stats_reset(struct rte_eth_dev *dev) return 0; } -static void +static int tap_dev_close(struct rte_eth_dev *dev) { int i; @@ -1116,6 +1116,8 @@ tap_dev_close(struct rte_eth_dev *dev) * Since TUN device has no more opened file descriptors * it will be removed from kernel */ + + return 0; } static void diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c index 83d9488360..3d7348771a 100644 --- a/drivers/net/thunderx/nicvf_ethdev.c +++ b/drivers/net/thunderx/nicvf_ethdev.c @@ -1852,7 +1852,7 @@ nicvf_vf_stop(struct rte_eth_dev *dev, struct nicvf *nic, bool cleanup) } } -static void +static int nicvf_dev_close(struct rte_eth_dev *dev) { size_t i; @@ -1869,6 +1869,8 @@ nicvf_dev_close(struct rte_eth_dev *dev) nicvf_periodic_alarm_stop(nicvf_vf_interrupt, nic->snicvf[i]); } + + return 0; } static int diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index ce32be9ce3..f67f4db812 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -1164,7 +1164,7 @@ eth_dev_stop(struct rte_eth_dev *dev) update_queuing_status(dev); } -static void +static int eth_dev_close(struct rte_eth_dev *dev) { struct pmd_internal *internal; @@ -1173,7 +1173,7 @@ eth_dev_close(struct rte_eth_dev *dev) internal = dev->data->dev_private; if (!internal) - return; + return 0; eth_dev_stop(dev); @@ -1201,6 +1201,8 @@ eth_dev_close(struct rte_eth_dev *dev) rte_free(vring_states[dev->data->port_id]); vring_states[dev->data->port_id] = NULL; + + return 0; } static int diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 013a2904e6..0787337a01 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -704,7 +704,7 @@ virtio_alloc_queues(struct rte_eth_dev *dev) static void virtio_queues_unbind_intr(struct rte_eth_dev *dev); -static void +static int virtio_dev_close(struct rte_eth_dev *dev) { struct virtio_hw *hw = dev->data->dev_private; @@ -713,7 +713,7 @@ virtio_dev_close(struct rte_eth_dev *dev) PMD_INIT_LOG(DEBUG, "virtio_dev_close"); if (!hw->opened) - return; + return 0; hw->opened = false; /* reset the NIC */ @@ -743,6 +743,8 @@ virtio_dev_close(struct rte_eth_dev *dev) if (!hw->modern) rte_pci_ioport_unmap(VTPCI_IO(hw)); } + + return 0; } static int diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c index fa80e75a5b..17fed0ed6e 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -64,7 +64,7 @@ static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev); static int vmxnet3_dev_configure(struct rte_eth_dev *dev); static int vmxnet3_dev_start(struct rte_eth_dev *dev); static void vmxnet3_dev_stop(struct rte_eth_dev *dev); -static void vmxnet3_dev_close(struct rte_eth_dev *dev); +static int vmxnet3_dev_close(struct rte_eth_dev *dev); static void vmxnet3_dev_set_rxmode(struct vmxnet3_hw *hw, uint32_t feature, int set); static int vmxnet3_dev_promiscuous_enable(struct rte_eth_dev *dev); static int vmxnet3_dev_promiscuous_disable(struct rte_eth_dev *dev); @@ -888,13 +888,15 @@ vmxnet3_free_queues(struct rte_eth_dev *dev) /* * Reset and stop device. */ -static void +static int vmxnet3_dev_close(struct rte_eth_dev *dev) { PMD_INIT_FUNC_TRACE(); vmxnet3_dev_stop(dev); vmxnet3_free_queues(dev); + + return 0; } static void diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index 23cc1e0959..6abfd58d2f 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -42,7 +42,7 @@ typedef int (*eth_dev_set_link_up_t)(struct rte_eth_dev *dev); typedef int (*eth_dev_set_link_down_t)(struct rte_eth_dev *dev); /**< @internal Function used to link down a configured Ethernet device. */ -typedef void (*eth_dev_close_t)(struct rte_eth_dev *dev); +typedef int (*eth_dev_close_t)(struct rte_eth_dev *dev); /**< @internal Function used to close a configured Ethernet device. */ typedef int (*eth_dev_reset_t)(struct rte_eth_dev *dev);
The device operation .dev_close was returning void. This driver interface is changed to return an int. Note that the API rte_eth_dev_close() is still returning void, although a deprecation notice is pending to change it as well. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- app/test/virtual_pmd.c | 6 ++++-- drivers/net/af_packet/rte_eth_af_packet.c | 3 ++- drivers/net/af_xdp/rte_eth_af_xdp.c | 4 +++- drivers/net/ark/ark_ethdev.c | 6 ++++-- drivers/net/atlantic/atl_ethdev.c | 6 ++++-- drivers/net/avp/avp_ethdev.c | 5 +++-- drivers/net/axgbe/axgbe_ethdev.c | 5 +++-- drivers/net/bnx2x/bnx2x_ethdev.c | 4 +++- drivers/net/bnxt/bnxt_ethdev.c | 4 +++- drivers/net/bnxt/bnxt_reps.c | 3 ++- drivers/net/bnxt/bnxt_reps.h | 2 +- drivers/net/bonding/eth_bond_private.h | 2 +- drivers/net/bonding/rte_eth_bond_pmd.c | 4 +++- drivers/net/cxgbe/cxgbe_ethdev.c | 10 ++++++---- drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- drivers/net/dpaa/dpaa_ethdev.c | 4 +++- drivers/net/dpaa2/dpaa2_ethdev.c | 6 ++++-- drivers/net/e1000/em_ethdev.c | 6 ++++-- drivers/net/e1000/igb_ethdev.c | 12 ++++++++---- drivers/net/ena/ena_ethdev.c | 6 ++++-- drivers/net/enetc/enetc_ethdev.c | 4 +++- drivers/net/enic/enic_ethdev.c | 4 +++- drivers/net/enic/enic_vf_representor.c | 5 +++-- drivers/net/failsafe/failsafe_ops.c | 3 ++- drivers/net/fm10k/fm10k_ethdev.c | 4 +++- drivers/net/hinic/hinic_pmd_ethdev.c | 6 ++++-- drivers/net/hns3/hns3_ethdev.c | 6 ++++-- drivers/net/hns3/hns3_ethdev_vf.c | 6 ++++-- drivers/net/i40e/i40e_ethdev.c | 5 +++-- drivers/net/i40e/i40e_ethdev_vf.c | 5 +++-- drivers/net/iavf/iavf_ethdev.c | 6 ++++-- drivers/net/ice/ice_dcf_ethdev.c | 6 ++++-- drivers/net/ice/ice_ethdev.c | 6 ++++-- drivers/net/igc/igc_ethdev.c | 6 ++++-- drivers/net/ionic/ionic_ethdev.c | 10 ++++++---- drivers/net/ipn3ke/ipn3ke_representor.c | 4 +++- drivers/net/ixgbe/ixgbe_ethdev.c | 11 +++++++---- drivers/net/kni/rte_eth_kni.c | 4 +++- drivers/net/liquidio/lio_ethdev.c | 4 +++- drivers/net/memif/rte_eth_memif.c | 4 +++- drivers/net/mlx4/mlx4.c | 3 ++- drivers/net/mlx5/mlx5.c | 9 +++++---- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mvneta/mvneta_ethdev.c | 4 +++- drivers/net/mvpp2/mrvl_ethdev.c | 4 +++- drivers/net/netvsc/hn_ethdev.c | 4 +++- drivers/net/nfb/nfb_ethdev.c | 4 +++- drivers/net/nfp/nfp_net.c | 6 ++++-- drivers/net/octeontx/octeontx_ethdev.c | 4 +++- drivers/net/octeontx2/otx2_ethdev.c | 5 +++-- drivers/net/pcap/rte_eth_pcap.c | 3 ++- drivers/net/pfe/pfe_ethdev.c | 8 +++++--- drivers/net/qede/qede_ethdev.c | 4 +++- drivers/net/sfc/sfc_ethdev.c | 4 +++- drivers/net/softnic/rte_eth_softnic.c | 4 ++-- drivers/net/szedata2/rte_eth_szedata2.c | 4 +++- drivers/net/tap/rte_eth_tap.c | 4 +++- drivers/net/thunderx/nicvf_ethdev.c | 4 +++- drivers/net/vhost/rte_eth_vhost.c | 6 ++++-- drivers/net/virtio/virtio_ethdev.c | 6 ++++-- drivers/net/vmxnet3/vmxnet3_ethdev.c | 6 ++++-- lib/librte_ethdev/rte_ethdev_driver.h | 2 +- 62 files changed, 206 insertions(+), 103 deletions(-)