On Thu, 21 Jan 2016 12:57:11 +0100 David Marchand <david.marchand at 6wind.com> wrote:
> Move these error logs and checks on detach capabilities in a common place. > > Signed-off-by: David Marchand <david.marchand at 6wind.com> > > --- > lib/librte_ether/rte_ethdev.c | 69 +++++++++++++++++++++++++------------------ > 1 file changed, 40 insertions(+), 29 deletions(-) > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 951fb1c..9083783 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -514,7 +514,6 @@ rte_eth_dev_attach_pdev(struct rte_pci_addr *addr, > uint8_t *port_id) > > return 0; > [snip] > > @@ -612,14 +599,25 @@ int > rte_eth_dev_attach(const char *devargs, uint8_t *port_id) > { > struct rte_pci_addr addr; > + int ret = -1; > > if ((devargs == NULL) || (port_id == NULL)) > - return -EINVAL; > + goto err; This change modifies the return value from -EINVAL to -1. I don't know whether is this an issue but it looks suspicious. > > - if (eal_parse_pci_DomBDF(devargs, &addr) == 0) > - return rte_eth_dev_attach_pdev(&addr, port_id); > - else > - return rte_eth_dev_attach_vdev(devargs, port_id); > + if (eal_parse_pci_DomBDF(devargs, &addr) == 0) { > + ret = rte_eth_dev_attach_pdev(&addr, port_id); > + if (ret < 0) > + goto err; > + } else { > + ret = rte_eth_dev_attach_vdev(devargs, port_id); > + if (ret < 0) > + goto err; > + } > + > + return 0; > +err: > + RTE_LOG(ERR, EAL, "Driver, cannot attach the device\n"); > + return ret; > } > > /* detach the device, then store the name of the device */ > @@ -627,26 +625,39 @@ int > rte_eth_dev_detach(uint8_t port_id, char *name) > { > struct rte_pci_addr addr; > - int ret; > + int ret = -1; > > if (name == NULL) > - return -EINVAL; > + goto err; Same here... > + > + /* check whether the driver supports detach feature, or not */ > + if (rte_eth_dev_is_detachable(port_id)) > + goto err; > > [snip] -- Jan Viktorin E-mail: Viktorin at RehiveTech.com System Architect Web: www.RehiveTech.com RehiveTech Brno, Czech Republic