[dpdk-dev] [PATCH 2/7] ethdev: reduce goto's in attach/detach

Stephen Hemminger stephen at networkplumber.org
Tue Jan 10 00:30:17 CET 2017


Extra goto's to just a return are unnecessary.
Don't do unnecessary initialization. Propgate return value.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 lib/librte_ether/rte_ethdev.c | 52 +++++++++++++++++--------------------------
 1 file changed, 21 insertions(+), 31 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 9dea1f15..2bd7db6d 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -419,18 +419,17 @@ rte_eth_dev_is_detachable(uint8_t port_id)
 int
 rte_eth_dev_attach(const char *devargs, uint8_t *port_id)
 {
-	int ret = -1;
 	int current = rte_eth_dev_count();
 	char *name = NULL;
 	char *args = NULL;
+	int ret;
 
-	if ((devargs == NULL) || (port_id == NULL)) {
-		ret = -EINVAL;
-		goto err;
-	}
+	if (devargs == NULL || port_id == NULL)
+		return -EINVAL;
 
 	/* parse devargs, then retrieve device name and args */
-	if (rte_eal_parse_devargs_str(devargs, &name, &args))
+	ret = rte_eal_parse_devargs_str(devargs, &name, &args);
+	if (ret < 0)
 		goto err;
 
 	ret = rte_eal_dev_attach(name, args);
@@ -441,20 +440,18 @@ rte_eth_dev_attach(const char *devargs, uint8_t *port_id)
 	if (!rte_eth_dev_count()) {
 		RTE_LOG(ERR, EAL, "No port found for device (%s)\n", name);
 		ret = -1;
-		goto err;
-	}
-
-	/* if nothing happened, there is a bug here, since some driver told us
-	 * it did attach a device, but did not create a port.
-	 */
-	if (current == rte_eth_dev_count()) {
+	} else if (current == rte_eth_dev_count()) {
+		/*
+		 * if nothing happened, there is a bug here, since
+		 * some driver told us it did attach a device, but did
+		 * not create a port.
+		 */
 		ret = -1;
-		goto err;
+	} else {
+		*port_id = eth_dev_last_created_port;
+		ret = 0;
 	}
 
-	*port_id = eth_dev_last_created_port;
-	ret = 0;
-
 err:
 	free(name);
 	free(args);
@@ -465,27 +462,20 @@ rte_eth_dev_attach(const char *devargs, uint8_t *port_id)
 int
 rte_eth_dev_detach(uint8_t port_id, char *name)
 {
-	int ret = -1;
+	int ret;
 
-	if (name == NULL) {
-		ret = -EINVAL;
-		goto err;
-	}
+	if (name == NULL)
+		return -EINVAL;
 
 	/* FIXME: move this to eal, once device flags are relocated there */
-	if (rte_eth_dev_is_detachable(port_id))
-		goto err;
+	ret = rte_eth_dev_is_detachable(port_id);
+	if (ret < 0)
+		return ret;
 
 	snprintf(name, sizeof(rte_eth_devices[port_id].data->name),
 		 "%s", rte_eth_devices[port_id].data->name);
-	ret = rte_eal_dev_detach(name);
-	if (ret < 0)
-		goto err;
 
-	return 0;
-
-err:
-	return ret;
+	return rte_eal_dev_detach(name);
 }
 
 static int
-- 
2.11.0



More information about the dev mailing list