2017-01-18 06:17, Shreyansh Jain: > From: Thomas Monjalon [mailto:thomas.monja...@6wind.com] > > 2017-01-17 19:07, Shreyansh Jain: > > > +static int > > > +rte_eal_pci_detach_dev(struct rte_pci_driver *dr, > > > + struct rte_pci_device *dev) > > > +{ > > > + int ret; > > > + struct rte_pci_addr *loc; > > > + > > > + if ((dr == NULL) || (dev == NULL)) > > > + return -EINVAL; > > > + > > > + ret = rte_pci_match(dr, dev); > > > > I do not understand this function. > > The driver should be known by the device at this stage. > > Why specifying a driver as parameter? > > > > I know it is not new in this series, but > > pci_detach_all_drivers(struct rte_pci_device *dev) makes no sense to me. > > From what I understand, pci_detach_all_drivers is simply a wrapper over the > PCI driver list, calling rte_eal_pci_detach_dev for each driver. Considering > that all it does is iterate, it is not functionally required. > > But, let me clarify one more thing: There is a possibility that > rte_pci_device->pci_driver be directly used in case of detach rather than > searching for a driver. This is assuming that before 'detach', a pci_device > would link to a valid pci_driver. Is there some caveat in this assumption?
I would say it it always true. But seeing this code existing makes me hesitates. I suggest to go with this assumption for RC1 and remove this loop.