> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Qiming Yang > Sent: Wednesday, September 2, 2020 2:38 PM > To: dev@dpdk.org > Cc: Zhang, Qi Z <qi.z.zh...@intel.com>; Yang, Qiming > <qiming.y...@intel.com> > Subject: [dpdk-dev] [PATCH 1/2] net/ice: add dcf port representor > infrastructure > > Defines data structures and code to init/uninit VF representors during > pci_probe and pci_remove respectively. > Most of the dev_ops for the VF representor are just stubs for now and will be > will be filled out in next patch > > Signed-off-by: Qiming Yang <qiming.y...@intel.com> > --- > drivers/net/ice/Makefile | 1 + > drivers/net/ice/ice_dcf_ethdev.c | 66 +++++- > drivers/net/ice/ice_dcf_ethdev.h | 11 + > drivers/net/ice/ice_dcf_vf_representor.c | 245 +++++++++++++++++++++++ > 4 files changed, 321 insertions(+), 2 deletions(-) create mode 100644 > drivers/net/ice/ice_dcf_vf_representor.c > > diff --git a/drivers/net/ice/Makefile b/drivers/net/ice/Makefile index > 34cd4024b..f9eb34a87 100644 > --- a/drivers/net/ice/Makefile > +++ b/drivers/net/ice/Makefile > @@ -88,6 +88,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += > ice_generic_flow.c > > SRCS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += ice_dcf.c > SRCS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += ice_dcf_ethdev.c > +SRCS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += ice_dcf_vf_representor.c > SRCS-$(CONFIG_RTE_LIBRTE_ICE_PMD) += ice_dcf_parent.c Need to change in meson.build. > > # install this header file > diff --git a/drivers/net/ice/ice_dcf_ethdev.c > b/drivers/net/ice/ice_dcf_ethdev.c > index 2faed3cc7..73af87785 100644 > --- a/drivers/net/ice/ice_dcf_ethdev.c > +++ b/drivers/net/ice/ice_dcf_ethdev.c > @@ -973,17 +973,79 @@ ice_dcf_cap_selected(struct rte_devargs *devargs) > static int eth_ice_dcf_pci_probe(__rte_unused struct rte_pci_driver *pci_drv, > struct rte_pci_device *pci_dev) { <snip> > > static int eth_ice_dcf_pci_remove(struct rte_pci_device *pci_dev) { > - return rte_eth_dev_pci_generic_remove(pci_dev, ice_dcf_dev_uninit); > + struct rte_eth_dev *ethdev; > + > + ethdev = rte_eth_dev_allocated(pci_dev->device.name); > + if (!ethdev) > + return 0; > + > + if (ethdev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) > + return rte_eth_dev_pci_generic_remove(pci_dev, > + ice_dcf_dev_uninit); Should be ice_dcf_vf_representor_uninit here and ice_dcf_dev_uninit below ? > + else > + return rte_eth_dev_pci_generic_remove(pci_dev, > + > ice_dcf_vf_representor_uninit); > } > <snip>