From patchwork Thu Jan 21 11:57:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 10038 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 35AC98E9E; Thu, 21 Jan 2016 12:57:38 +0100 (CET) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by dpdk.org (Postfix) with ESMTP id 364978E96 for ; Thu, 21 Jan 2016 12:57:34 +0100 (CET) Received: by mail-wm0-f45.google.com with SMTP id b14so76721777wmb.1 for ; Thu, 21 Jan 2016 03:57:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=PxuJ3iv11FJjQ8O6p/pkGxuiEskZHHtDna1VDef6qzQ=; b=ptgwsF9MlptSO32H8PB9Tb1TTK1h1JVcmcyzloAKHnI1Ke5pFHNSl/blgUyBbjCwuS chmXYjHsE7bgZL5O276NQaJyLQwgbntgCSbQoLqARnMVVF+ufxJ74gFe4/KvotkzASeU od9ea+laEadjFQuUOSG2JHbagvuMZMe/enf+uiyPphFeCTIk0YufeCO9gg1ODcSHzL6Z KAx4cquPb3nr5k29NTybwruuG4v3lxYh/HlZsTjMbFOpSuBdvY65QvTlRnQVfndsvPE5 8swOl178jVV4gv0aHiMlMBxC3djqvwkIWvaDMBq6EXXePBM8/eO9oLoU9A+TgFRfZHzM GvXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PxuJ3iv11FJjQ8O6p/pkGxuiEskZHHtDna1VDef6qzQ=; b=S1Hf45AM+MiZ4WYbKyzPji2L2BZ88HdmXdADDqpo5yMyoKkUPSOb/0a4rFmQieoMJR Nge4Y2G/qIpczFhdGWd9QynFCw/+dlesznsXk7WEEV30CKYQjdx1vyABLTPRDDBa/CUc +WiY5j/VeE9K0rMw4cLXkhmSZNeArQd+xFgSE19uJm/7LKzjR59Ma/OiSSFU6xFZ0wMF UlqtPCeRXTc6jxlelUjinKkuBnAlWYSDH2lzFlz5f6PZXMZr5FC8otabPv6URwMluiB0 ZWTRwWj8UQaepzIK8Z7Zw1m4BmcBWnahNpDJOdw5A5J65Dn5GRk+dMqTddYPoqb4Vc2Z Adfw== X-Gm-Message-State: AG10YOS3dvEr0oHZRTH9o+ys3efXFR+TBT+v1L/OcWW1yVIhDtxkLR+erbl+M3IV8IXDhu34 X-Received: by 10.194.5.193 with SMTP id u1mr11846690wju.166.1453377454100; Thu, 21 Jan 2016 03:57:34 -0800 (PST) Received: from alcyon.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id u4sm1178591wjz.4.2016.01.21.03.57.33 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 21 Jan 2016 03:57:33 -0800 (PST) From: David Marchand To: dev@dpdk.org Date: Thu, 21 Jan 2016 12:57:11 +0100 Message-Id: <1453377431-25850-3-git-send-email-david.marchand@6wind.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1453377431-25850-1-git-send-email-david.marchand@6wind.com> References: <1453377431-25850-1-git-send-email-david.marchand@6wind.com> Subject: [dpdk-dev] [PATCH 2/2] ethdev: move code to common place in hotplug X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Move these error logs and checks on detach capabilities in a common place. Signed-off-by: David Marchand --- 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; err: - RTE_LOG(ERR, EAL, "Driver, cannot attach the device\n"); return -1; } @@ -525,10 +524,6 @@ rte_eth_dev_detach_pdev(uint8_t port_id, struct rte_pci_addr *addr) struct rte_pci_addr freed_addr; struct rte_pci_addr vp; - /* check whether the driver supports detach feature, or not */ - if (rte_eth_dev_is_detachable(port_id)) - goto err; - /* get pci address by port id */ if (rte_eth_dev_get_addr_by_port(port_id, &freed_addr)) goto err; @@ -546,7 +541,6 @@ rte_eth_dev_detach_pdev(uint8_t port_id, struct rte_pci_addr *addr) *addr = freed_addr; return 0; err: - RTE_LOG(ERR, EAL, "Driver, cannot detach the device\n"); return -1; } @@ -577,8 +571,6 @@ end: free(name); free(args); - if (ret < 0) - RTE_LOG(ERR, EAL, "Driver, cannot attach the device\n"); return ret; } @@ -588,10 +580,6 @@ rte_eth_dev_detach_vdev(uint8_t port_id, char *vdevname) { char name[RTE_ETH_NAME_MAX_LEN]; - /* check whether the driver supports detach feature, or not */ - if (rte_eth_dev_is_detachable(port_id)) - goto err; - /* get device name by port id */ if (rte_eth_dev_get_name_by_port(port_id, name)) goto err; @@ -603,7 +591,6 @@ rte_eth_dev_detach_vdev(uint8_t port_id, char *vdevname) strncpy(vdevname, name, sizeof(name)); return 0; err: - RTE_LOG(ERR, EAL, "Driver, cannot detach the device\n"); return -1; } @@ -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; - 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; + + /* check whether the driver supports detach feature, or not */ + if (rte_eth_dev_is_detachable(port_id)) + goto err; if (rte_eth_dev_get_device_type(port_id) == RTE_ETH_DEV_PCI) { ret = rte_eth_dev_get_addr_by_port(port_id, &addr); if (ret < 0) - return ret; + goto err; ret = rte_eth_dev_detach_pdev(port_id, &addr); - if (ret == 0) - snprintf(name, RTE_ETH_NAME_MAX_LEN, - "%04x:%02x:%02x.%d", - addr.domain, addr.bus, - addr.devid, addr.function); + if (ret < 0) + goto err; - return ret; - } else - return rte_eth_dev_detach_vdev(port_id, name); + snprintf(name, RTE_ETH_NAME_MAX_LEN, + "%04x:%02x:%02x.%d", + addr.domain, addr.bus, + addr.devid, addr.function); + } else { + ret = rte_eth_dev_detach_vdev(port_id, name); + if (ret < 0) + goto err; + } + + return 0; + +err: + RTE_LOG(ERR, EAL, "Driver, cannot detach the device\n"); + return ret; } static int