From patchwork Tue Jun 25 10:40:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 167692 Delivered-To: patch@linaro.org Received: by 2002:ac9:6410:0:0:0:0:0 with SMTP id r16csp4826426ock; Tue, 25 Jun 2019 03:42:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqy0M2bppiVr2fdIuiVbDxnw5dqvR17iDytBzdWuvy3m6R0GZlDlxc79W7XuWOaDpzOKe5x3 X-Received: by 2002:a17:906:d7aa:: with SMTP id pk10mr72985656ejb.125.1561459343114; Tue, 25 Jun 2019 03:42:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561459343; cv=none; d=google.com; s=arc-20160816; b=lxKb7R+9F3NTL5wXeatPR5vpruTx6gVoOIyF1wodqPo3JQQUlbodSheD3bnzZpn9fk KpyPTCb+MFWEsuRPyMc9B3OAGq1a7im6fEZ+S3YKArDIv9uRUPL02RXxU9jYVkqiDg9w kOU6mFSPmUx4jgHXY9TX7KOedgpxTTekfBPENC5wS/cXg+jNo1BhcJCHo0jqB1c7AY7l DKauqYrij79XV9RBVwKP19pD7QnKscO+hIdzI0RomTVjMPIYzvK4LXhF5Oro02jFkDaV FXpLLpVHNhqV710UWZtBgc/X72nzSIzVErL9hq50bcCG34nIQrQXIgmMupHmDnfnVc9O hdqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=kMRsb63rJ8O15r8XrUHXxLEMIkx5FTTtoe7iRHm0VnE=; b=ARN7Up2xucJqw1h+lwFlDC3AiCDyYId99HQo3I09hrnjVXCVRmY8tU+gAk81sS6DzI n8hGpuYp1Sj6hD2sD7v+IOYNH0w8bo6Lu1aqbUsUrdQ+D1qDQRnyKD8/XHZcPCbKmQ3p sscS9Qj1f2XVh+bJJFDhsOIKegKwBRuhjT4b75DZVdx/YZ61FPgssuw1i1/UrXk/Roix FU/4bmUDBCSgoNcMrnz4kCECdTSy3HF3WIY4kzHch1PgCmucpOgOieE7B0EhiaoC0vDa r+q1RurIs9qzZfR8+l1lC+dCFCbCz49OUJRzm9Se1C9KbQSdcGpppsY94i4VkfT/sVCW jOZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id d31si100793ede.441.2019.06.25.03.42.22; Tue, 25 Jun 2019 03:42:23 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 008D61B9FC; Tue, 25 Jun 2019 12:42:14 +0200 (CEST) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by dpdk.org (Postfix) with ESMTP id 31D29559A for ; Tue, 25 Jun 2019 12:42:05 +0200 (CEST) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id A2479200ED5; Tue, 25 Jun 2019 12:42:04 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id C26ED200EF5; Tue, 25 Jun 2019 12:42:02 +0200 (CEST) Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.133.63]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 48D4D4030C; Tue, 25 Jun 2019 18:42:00 +0800 (SGT) From: Hemant Agrawal To: dev@dpdk.org Cc: ferruh.yigit@intel.com Date: Tue, 25 Jun 2019 16:10:19 +0530 Message-Id: <20190625104019.19287-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190625104019.19287-1-hemant.agrawal@nxp.com> References: <20190625104019.19287-1-hemant.agrawal@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH 3/3] net/dpaa: support interface init for multi process X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Akhil Goyal The existing code is enabling the Tx queues as per the number of lcore count, which is causing issue in case of secondary process running on different number of cores. This patch fixes the Tx queues to number of DPAA cores, which helps in using fixed number of Tx queues across processes access. Signed-off-by: Akhil Goyal Acked-by: Hemant Agrawal --- drivers/net/dpaa/dpaa_ethdev.c | 44 ++++++++++++++++++++-------------- drivers/net/dpaa/dpaa_ethdev.h | 1 + 2 files changed, 27 insertions(+), 18 deletions(-) -- 2.17.1 diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 4b0027929..adc0bd5ac 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -1214,7 +1214,7 @@ static int dpaa_debug_queue_init(struct qman_fq *fq, uint32_t fqid) static int dpaa_dev_init(struct rte_eth_dev *eth_dev) { - int num_cores, num_rx_fqs, fqid; + int num_rx_fqs, fqid; int loop, ret = 0; int dev_id; struct rte_dpaa_device *dpaa_device; @@ -1319,23 +1319,22 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) dpaa_intf->nb_rx_queues = num_rx_fqs; /* Initialise Tx FQs.free_rx Have as many Tx FQ's as number of cores */ - num_cores = rte_lcore_count(); dpaa_intf->tx_queues = rte_zmalloc(NULL, sizeof(struct qman_fq) * - num_cores, MAX_CACHELINE); + MAX_DPAA_CORES, MAX_CACHELINE); if (!dpaa_intf->tx_queues) { DPAA_PMD_ERR("Failed to alloc mem for TX queues\n"); ret = -ENOMEM; goto free_rx; } - for (loop = 0; loop < num_cores; loop++) { + for (loop = 0; loop < MAX_DPAA_CORES; loop++) { ret = dpaa_tx_queue_init(&dpaa_intf->tx_queues[loop], fman_intf); if (ret) goto free_tx; dpaa_intf->tx_queues[loop].dpaa_intf = dpaa_intf; } - dpaa_intf->nb_tx_queues = num_cores; + dpaa_intf->nb_tx_queues = MAX_DPAA_CORES; #ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER dpaa_debug_queue_init(&dpaa_intf->debug_queues[ @@ -1484,7 +1483,7 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv __rte_unused, return 0; } - if (!is_global_init) { + if (!is_global_init && (rte_eal_process_type() == RTE_PROC_PRIMARY)) { /* One time load of Qman/Bman drivers */ ret = qman_global_init(); if (ret) { @@ -1530,20 +1529,29 @@ rte_dpaa_probe(struct rte_dpaa_driver *dpaa_drv __rte_unused, } } - eth_dev = rte_eth_dev_allocate(dpaa_dev->name); - if (eth_dev == NULL) - return -ENOMEM; + /* In case of secondary process, the device is already configured + * and no further action is required, except portal initialization + * and verifying secondary attachment to port name. + */ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + eth_dev = rte_eth_dev_attach_secondary(dpaa_dev->name); + if (!eth_dev) + return -ENOMEM; + } else { + eth_dev = rte_eth_dev_allocate(dpaa_dev->name); + if (eth_dev == NULL) + return -ENOMEM; - eth_dev->data->dev_private = rte_zmalloc( - "ethdev private structure", - sizeof(struct dpaa_if), - RTE_CACHE_LINE_SIZE); - if (!eth_dev->data->dev_private) { - DPAA_PMD_ERR("Cannot allocate memzone for port data"); - rte_eth_dev_release_port(eth_dev); - return -ENOMEM; + eth_dev->data->dev_private = rte_zmalloc( + "ethdev private structure", + sizeof(struct dpaa_if), + RTE_CACHE_LINE_SIZE); + if (!eth_dev->data->dev_private) { + DPAA_PMD_ERR("Cannot allocate memzone for port data"); + rte_eth_dev_release_port(eth_dev); + return -ENOMEM; + } } - eth_dev->device = &dpaa_dev->device; dpaa_dev->eth_dev = eth_dev; diff --git a/drivers/net/dpaa/dpaa_ethdev.h b/drivers/net/dpaa/dpaa_ethdev.h index e906a0bec..18bc7dfa8 100644 --- a/drivers/net/dpaa/dpaa_ethdev.h +++ b/drivers/net/dpaa/dpaa_ethdev.h @@ -18,6 +18,7 @@ #include #include +#define MAX_DPAA_CORES 4 #define DPAA_MBUF_HW_ANNOTATION 64 #define DPAA_FD_PTA_SIZE 64