[dpdk-dev] CALL to eth PMD maintainers: complete closing of port

Thomas Monjalon thomas at monjalon.net
Tue Apr 30 16:12:41 CEST 2019


30/04/2019 14:45, Nithin Dabilpuram:
> On Mon, Apr 29, 2019 at 10:30:00PM +0200, Thomas Monjalon wrote:
> > 29/04/2019 18:51, Ferruh Yigit:
> > > I would like to detail a little more what needs to be done, mainly for the sake
> > > of the discussion, please comment if something missing/wrong.
> > > 
> > > There are two exit paths for driver:
> > > 1) Hotplug remove the device
> > >    rte_dev_remove() OR rte_eal_hotplug_remove()
> > > 
> > > 2) Application exit:
> > >    rte_eth_dev_close()
> > > 
> > > 
> > > (1) can be called without ethdev stop and close functions called, so the path
> > > should cover those functions.
> > > And in the PMD entry point in this path is .remove() function. In this .remove()
> > > function PMD should:
> > > - stop forwarding
> > > - clean PMD private resources (dev_close() ? )
> > 
> > yes
> > 
> > > - clean ethdev generic resources (rte_eth_dev_release_port() ? )
> > 
> > already done in dev_close thanks to RTE_ETH_DEV_CLOSE_REMOVE
> > 
> > > - remove device resources, which already done by remove APIs
> > 
> > There can be some specific PMD private resources,
> > not cleaned when closing a port, to clean in "remove".
> > 
> > > (2) ethdev won't be usable after "rte_eth_dev_close()" and it should clear PMD
> > > private and ethdev generic resources.
> > > With RTE_ETH_DEV_CLOSE_REMOVE flag 'rte_eth_dev_close()' will free generic
> > > ethdev resources (rte_eth_dev_release_port()) so PMD specific '.dev_close()' should:
> > > - stop forwarding
> > > - clean PMD private resources
> > 
> > yes, but only port-related resources,
> > not those common with other ports or features of the device.
> I have a related query. Even after rte_eth_dev_close(), we have to call
> rte_eal_hotplug_remove() to free up common resource if any 
> and remove the device from application ?
> And rte_eal_hotplug_remove() would still call drivers .remove function for this.

Yes if you really want to free the whole device,
you should call the .remove op from rte_eal_hotplug_remove()
or rte_dev_remove().




More information about the dev mailing list