From patchwork Wed Dec 9 23:53:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84895 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1573BA04DB; Thu, 10 Dec 2020 00:54:16 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7F1FDC950; Thu, 10 Dec 2020 00:53:57 +0100 (CET) Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by dpdk.org (Postfix) with ESMTP id 6968BBE79; Thu, 10 Dec 2020 00:53:55 +0100 (CET) Received: by mail-pf1-f169.google.com with SMTP id s21so2270816pfu.13; Wed, 09 Dec 2020 15:53:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2ZxiPBdi7vTyi6zR73rUMtvlKA6+NjerGb6zulWcr+8=; b=FcO2kWWO/w6Y5QGmJOrwRxZZey9HJAXC+Guzx3TtYeSTx3Zly87Opq621plGPidvmm GxqEI/raHcCByOhDaPnkq5Szobb//2XjROIfmzZxstoaEOyD0R2vsRbXkOVwS4b9+dRE ayDndXBZIy8aGWTOiidzg6mNkSqJ4/1XbTcawQsPeRCi2L1m2B+vQDY7bU8LWjEGo0j4 HF//GF1lozvmSu/aFeGVyEmcUKw0i9PGqb83GTF6diaeElzFmsyGEWl1UwsPuh9joqQU Ga47gjJ2HTfbR5RwICC0N4MGYlLdhkGvl31G9YrGrHF9FWeoF/x2tnv/K1fweaItUxIW /C0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2ZxiPBdi7vTyi6zR73rUMtvlKA6+NjerGb6zulWcr+8=; b=fBXY6YEBXAJ94isuYGDQ8PqRGfPbxyemk7aWoINyGQTfHGiozE3pfNzpA5n055SCZ6 l1LoyJfZPZcjoCLxq/7lUml3ILv5mXIGCxSgq46BfPpMfO33GtQx6wxCPqQGEhAtVrV8 ARtPgatpAnf+SeQep216pMQyRBRFbP9wpZymuDeC1MvhyHGBmaF1Xk/NfuyY+v6xHHST 96GmYBZyX9vrrFGAZuO7ttvA0OK5nJt9RYr9kFPfI4o53/wiEJon0mpvFxUYWURtbKx9 +eY0FVk0kuyGv7D/MMxhsZVAyfUJfE/PlMMm9DSx2jN+FsM3VUUPv/gEKgrUlvgiaij8 o1FQ== X-Gm-Message-State: AOAM531CZZO76Jfm6CxtQp0tB6N7Sh6zmyTa2evbWYa3OartXSmhyGxI mDdJPTs7Qo73kuJvBZwGun8AV+lEm11tz+dY X-Google-Smtp-Source: ABdhPJz29XfHt5IiJ9dRqp523t2Yvwo7Dw3q69Ld33kzRp3XTE/OJ0cxN5X5dpy5Lc137eU/8ijKsQ== X-Received: by 2002:a65:4801:: with SMTP id h1mr4127978pgs.44.1607558033377; Wed, 09 Dec 2020 15:53:53 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:53:52 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Samik Gupta , stable@dpdk.org Date: Wed, 9 Dec 2020 15:53:31 -0800 Message-Id: <20201209235347.16180-2-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 01/17] net/bnxt: fix RX rings in RSS redirection table 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: Samik Gupta This commit introduces a limit on the number of RX rings included in the RSS redirection table to a value no larger than the size supported by Thor as defined by BNXT_RSS_TBL_SIZE_THOR. Fixes: d819382543f3 ("net/bnxt: add RSS redirection table operations") Cc: stable@dpdk.org Reviewed-by: Ajit Khaparde Signed-off-by: Samik Gupta --- drivers/net/bnxt/bnxt.h | 2 +- drivers/net/bnxt/bnxt_ethdev.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 90ced972c..9bd4f1da9 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -389,7 +389,7 @@ struct bnxt_coal { #define DBR_TYPE_NQ (0xaULL << 60) #define DBR_TYPE_NQ_ARM (0xbULL << 60) -#define BNXT_RSS_TBL_SIZE_THOR 512 +#define BNXT_RSS_TBL_SIZE_THOR 512U #define BNXT_RSS_ENTRIES_PER_CTX_THOR 64 #define BNXT_MAX_RSS_CTXTS_THOR \ (BNXT_RSS_TBL_SIZE_THOR / BNXT_RSS_ENTRIES_PER_CTX_THOR) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 81c8f8d79..c363c8427 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -207,12 +207,15 @@ int is_bnxt_in_error(struct bnxt *bp) static uint16_t bnxt_rss_ctxts(const struct bnxt *bp) { + unsigned int num_rss_rings = RTE_MIN(bp->rx_nr_rings, + BNXT_RSS_TBL_SIZE_THOR); + if (!BNXT_CHIP_THOR(bp)) return 1; - return RTE_ALIGN_MUL_CEIL(bp->rx_nr_rings, + return RTE_ALIGN_MUL_CEIL(num_rss_rings, BNXT_RSS_ENTRIES_PER_CTX_THOR) / - BNXT_RSS_ENTRIES_PER_CTX_THOR; + BNXT_RSS_ENTRIES_PER_CTX_THOR; } uint16_t bnxt_rss_hash_tbl_size(const struct bnxt *bp) @@ -424,6 +427,14 @@ static int bnxt_setup_one_vnic(struct bnxt *bp, uint16_t vnic_id) if (dev_conf->rxmode.mq_mode & ETH_MQ_RX_RSS) { int j, nr_ctxs = bnxt_rss_ctxts(bp); + if (bp->rx_nr_rings > BNXT_RSS_TBL_SIZE_THOR) { + PMD_DRV_LOG(ERR, "RxQ cnt %d > reta_size %d\n", + bp->rx_nr_rings, BNXT_RSS_TBL_SIZE_THOR); + PMD_DRV_LOG(ERR, + "Only queues 0-%d will be in RSS table\n", + BNXT_RSS_TBL_SIZE_THOR - 1); + } + rc = 0; for (j = 0; j < nr_ctxs; j++) { rc = bnxt_hwrm_vnic_ctx_alloc(bp, vnic, j); From patchwork Wed Dec 9 23:53:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84896 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 49F3FA04DB; Thu, 10 Dec 2020 00:54:42 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E69EFC996; Thu, 10 Dec 2020 00:53:59 +0100 (CET) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by dpdk.org (Postfix) with ESMTP id DDC4FC962; Thu, 10 Dec 2020 00:53:56 +0100 (CET) Received: by mail-pl1-f193.google.com with SMTP id bj5so1831643plb.4; Wed, 09 Dec 2020 15:53:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=r2mmbYWfwWyqexB3MPBjTdy2n/fKd0DGojjC9WTubNI=; b=Vb0GlAq3nAbTVzen5Ici9I0SIFOHed3t//oeEm6AdvvoGH66iLhlw5uF4+70y3K3JD UtcH2VD1QeoYnOFO3XBe7dlu1GuygPZTcndqshzk89+BkpoyLOHKdQLqhsh8wSVfa2Uj ICvqPyelTRbHO70FtPIYWABRQO/7o96iS2qdHh7BCeqPk1mxSk2IqC+QmhB7CSRq/xVW 0rWAKsm9C865dK1nk5r9TlI7yLB55ryresqewqNN9m5P7GGUXowOurva3hD7X7uWsJ7X y6nTsUuv2iOKarBkgtwfaIZFYBa8/7KJB3HbZEZgis/kOnqNakXy4sDFURdJ75EKpPrg T11Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r2mmbYWfwWyqexB3MPBjTdy2n/fKd0DGojjC9WTubNI=; b=jUXu0XQMMjfG9s5r8n4kfQV7qyWV8pnjoI7LzsdMplve9rDOd5ruL32tTM6gRYBlu6 U5BJXs7XFUnagK8myb1I/wRJenA4gb6TtUyUsElhdyDHBMYRAVtfCL2rRi60JGF2XQwO wizH1x6nylVj6LjzSVYjT93uLPRuI6J2zfBwiCDTt1JnPT25nnf5U+ioUTOpwC4oGABH 3qjC52uPtnpgAsDdZle41Y9J0WOXS6jjPooe2XFwmSDFDITHkRBuqL5fidOhSttEcDgE HcihKIYcnodCrEbacw89JBPSs2Qa0/MxIbiZ09S4WH9+5mkRkLK48C/6PgG3azB4kQql aE7A== X-Gm-Message-State: AOAM532ZXJI0InREh8wECcWmN88CWyZ+zsLaWBkns7MNGB1rvbmGI9vn 9Rgik9vblx4NB9PFestu88GbcGq+IXf0TfJ9 X-Google-Smtp-Source: ABdhPJw3kZDPqfwH45IuCrd1sCDqukTAOjzY0CfjnkdxFervQbWLOo1ShI0DygIEsfHU913fVdRoyg== X-Received: by 2002:a17:902:c395:b029:da:9aca:c972 with SMTP id g21-20020a170902c395b02900da9acac972mr4407699plg.32.1607558034732; Wed, 09 Dec 2020 15:53:54 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.53 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:53:54 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Samik Gupta , stable@dpdk.org, Lance Richardson , Somnath Kotur Date: Wed, 9 Dec 2020 15:53:32 -0800 Message-Id: <20201209235347.16180-3-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 02/17] net/bnxt: fix VNIC config on Rx queue stop 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: Samik Gupta This commit reconfigures a vnic's default ring if the current default ring is stopped by the application. It picks the lowest numbered ring that is currently active to be the new default, and issues the hwrm_vnic_cfg command to update the configuration. Applies to adapters that are not Thor-based. Fixes: 9b63c6fd70e3 ("net/bnxt: support Rx/Tx queue start/stop") Cc: stable@dpdk.org Reviewed-by: Ajit Khaparde Reviewed-by: Lance Richardson Reviewed-by: Somnath Kotur Signed-off-by: Samik Gupta --- drivers/net/bnxt/bnxt_rxq.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index e0ec34216..61196eba9 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -557,12 +557,12 @@ int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id) rc = bnxt_vnic_rss_configure(bp, vnic); } - if (BNXT_CHIP_THOR(bp)) { - /* Compute current number of active receive queues. */ - for (i = vnic->start_grp_id; i < vnic->end_grp_id; i++) - if (bp->rx_queues[i]->rx_started) - active_queue_cnt++; + /* Compute current number of active receive queues. */ + for (i = vnic->start_grp_id; i < vnic->end_grp_id; i++) + if (bp->rx_queues[i]->rx_started) + active_queue_cnt++; + if (BNXT_CHIP_THOR(bp)) { /* * For Thor, we need to ensure that the VNIC default receive * ring corresponds to an active receive queue. When no queue @@ -582,6 +582,22 @@ int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id) /* Reconfigure default receive ring. */ bnxt_hwrm_vnic_cfg(bp, vnic); } + } else if (active_queue_cnt) { + /* + * If the queue being stopped is the current default queue and + * there are other active queues, pick one of them as the + * default and reconfigure the vnic. + */ + if (vnic->dflt_ring_grp == bp->grp_info[rx_queue_id].fw_grp_id) { + for (i = vnic->start_grp_id; i < vnic->end_grp_id; i++) { + if (bp->rx_queues[i]->rx_started) { + vnic->dflt_ring_grp = + bp->grp_info[i].fw_grp_id; + bnxt_hwrm_vnic_cfg(bp, vnic); + break; + } + } + } } if (rc == 0) From patchwork Wed Dec 9 23:53:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84897 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11D49A04DB; Thu, 10 Dec 2020 00:55:02 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9C27EC9AC; Thu, 10 Dec 2020 00:54:01 +0100 (CET) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by dpdk.org (Postfix) with ESMTP id 1A289C968 for ; Thu, 10 Dec 2020 00:53:57 +0100 (CET) Received: by mail-pg1-f196.google.com with SMTP id e2so2458286pgi.5 for ; Wed, 09 Dec 2020 15:53:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=MOUVzIgibbljDfkTQxSD3/d1zzlIrxFGGUKNHDqrgsM=; b=MO76s1rKLOCdTi19z9OyAXO0fT6CAqG4e+oeGn8YmKfurNyRqBfjEk5cE3IWCVLVSB jdjNsYJiiYJ8ES/fN8PStdf2itoSiBEyzA00y0DeSYhondxWr9PO8NY2eFCLOQ+3M8N7 kzQ+f1MAI73f7mfiUF/4SVyP3GI7DDeWrVehfK4LGm9GV1QLCr+T/0MqEz06L38DvaOh 6UeZMxsgr70mNHOe1oyQsSPN0W03HW+hi/hK8VzaCMyQna1fCGezdc2mnpXec8X1sMvl 3PcB9GjcsPsRV1BsK+W/JqyA/eaHR3wH77wS0iMhXxAgl3G15CQvbqngIcdF86EAKlNI xj0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MOUVzIgibbljDfkTQxSD3/d1zzlIrxFGGUKNHDqrgsM=; b=KbqOkBha+2cic8LSyuuqar4ZpVj5dTui1VOENeJf7MBTtzAyiX5EQO8s5H0IhIUzKE wwix+FZhk+h5fI53t8HZtfWMfA6SYV4fekQcen9Fxy39q84BfqXUl+fRXKhdHG7UrgvZ gS/P8JYoiU0qK6Wf2uXjxCzMYqO5ZLKICzpNBGHpHYGY0mqolu5j8HRyywPm0lMZPZ7R kQA8PTWfielxPsivcYA+ly6Ni9xdze20XHO/ra8SHh/fQEZv43XSMpuvKYTbTkL11HpD HaEYKjbTbRkkpcytjQSZlRJnPKthnmdOd53bRPOOkqLhwsSP12tyzaueAhojEAn2AAml M3Ow== X-Gm-Message-State: AOAM530m1ZXQkEal0SIxo2Il61dLdKL6UcelncJ/SC7isRblbxMDFcDU LXlZb/uINcHSjO76WhA41nfETLLVVzNoQ5hP X-Google-Smtp-Source: ABdhPJwNYdTvKRInfaZ9SqBjrxGwmdWYPnrvj6UxutZIbgPq8biL+3i1iguIfdFy3Q17ip0lp1VUgQ== X-Received: by 2002:a63:6e45:: with SMTP id j66mr4215146pgc.238.1607558036086; Wed, 09 Dec 2020 15:53:56 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:53:55 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:33 -0800 Message-Id: <20201209235347.16180-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 03/17] net/bnxt: remove unused field 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" Remove flow_xstat from bnxt structure. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt.h | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 9bd4f1da9..f13d586d4 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -818,7 +818,6 @@ struct bnxt { struct bnxt_dmabuf_info dmabuf; struct bnxt_ulp_context *ulp_ctx; struct bnxt_flow_stat_info *flow_stat; - uint8_t flow_xstat; uint16_t max_num_kflows; uint16_t tx_cfa_action; }; From patchwork Wed Dec 9 23:53:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84898 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A5B84A04DB; Thu, 10 Dec 2020 00:55:19 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2C0D4C9BA; Thu, 10 Dec 2020 00:54:03 +0100 (CET) Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by dpdk.org (Postfix) with ESMTP id 0AEEEC99E; Thu, 10 Dec 2020 00:54:00 +0100 (CET) Received: by mail-pl1-f196.google.com with SMTP id s2so1817272plr.9; Wed, 09 Dec 2020 15:53:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=AgLJF5O8wOVwEQYh4CO/JDSAHKIbOStTU2/x9/E6qQk=; b=FzLCUiCn7r1EaYdy57jTNBApV0Bzxi9Zdl2Dj25w9VSOH361RLchNOZM6ZGfs8YUho l/Ru25JHMWC7/4ku+r1BRdaFRZtO2H1FgHtQGN3kceKhPl2sp5r/tIgYW6hd7+rQqUVP M2kKddj0xA/P0kOvZC/wfb2UrOVc+AIftX99Dfye34yc3Jqg9p7xaV5VC4u2extY9CpM seqhHSp8sts16oOQ8Z1c+9SvujaEfxxkkVjBrwklGNe0yejVvBJnxxygHhUhq5CeXbKg j11cSJIq91lQ04QYrAJ3OGLcRaW7UXg7X/S5JaeavMdILcmFfbq3OrjKF0ffFrIa/jzu DWjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AgLJF5O8wOVwEQYh4CO/JDSAHKIbOStTU2/x9/E6qQk=; b=AUJ+ABIyUbhyk3FBevIjav9gfxFR02LIvGoYDrnk8Ls1UTSo5DYyxhgtUb1lL0issy 88ReVlXDVIQ2TTeijFLhSDpv539KRm55KO3CBJXDaAh913kDJ8JWllUMC6sxsC2gJU39 FNOuh85/h+UFc9iEAWNNbOG1uQtEsiiY0ln8Cxp6mLxvLed1NOyX8PwCqbD7vG1wZhtH b20qj+OCkGCb1uFI1XLZBx8ExieKsZURcC9ykJqtmTl2B5CSIwyug++elheUEGXt8gxZ qpXmp27BfYZvxmxFiTZMiq4Mgn+vOXcWMzXKC6bRF+zqMUnL/igTbSy0Q1DO6gNCxIjg rQfA== X-Gm-Message-State: AOAM531FiZvJOXPhIPUG+19d95lWfAMBgSRBNX9PiM2TpZsg/ClmnV5w 8J6yeHLqb85t5ZMnQPAi9biZyByqg6fRGa7O X-Google-Smtp-Source: ABdhPJzhxwk4GRDXe/ouYjvHVROKaEf8Etf8XQWcVQD6kduH90SRW0DYktbgITUs0jlvp32QJQBdtQ== X-Received: by 2002:a17:902:694c:b029:db:d939:1061 with SMTP id k12-20020a170902694cb02900dbd9391061mr1149527plt.80.1607558038005; Wed, 09 Dec 2020 15:53:58 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:53:57 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Wed, 9 Dec 2020 15:53:34 -0800 Message-Id: <20201209235347.16180-5-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 04/17] net/bnxt: release hwrm lock in the error case 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: Kalesh AP In __bnxt_hwrm_func_qcaps, when memory allocations fails driver is not releasing the hwrm lock. This patch fixes it by calling hwrm_unlock in that error case. Fixes: b7778e8a1c00 ("net/bnxt: refactor to properly allocate resources for PF/VF") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index ebbf504c0..784e9778a 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -718,6 +718,7 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) sizeof(bp->pf->vf_info[0]) * new_max_vfs, 0); if (bp->pf->vf_info == NULL) { PMD_DRV_LOG(ERR, "Alloc vf info fail\n"); + HWRM_UNLOCK(); return -ENOMEM; } bp->pf->max_vfs = new_max_vfs; From patchwork Wed Dec 9 23:53:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84899 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C6E24A04DB; Thu, 10 Dec 2020 00:55:40 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 14AD5C9CC; Thu, 10 Dec 2020 00:54:05 +0100 (CET) Received: from mail-pl1-f195.google.com (mail-pl1-f195.google.com [209.85.214.195]) by dpdk.org (Postfix) with ESMTP id 00F13C9B2 for ; Thu, 10 Dec 2020 00:54:01 +0100 (CET) Received: by mail-pl1-f195.google.com with SMTP id u4so1812473plr.12 for ; Wed, 09 Dec 2020 15:54:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Lanru/SQC8M99d5umQKQHOUPZsb8XRCTCQtaYxPlkXo=; b=RKoqA9EdkVjqjwrrv6VmqQRWszt7VbO2HjjwVLV6NV+1F45K8EBwg1vJIdy6sWuAK5 yzGmJBfmHpDYfw0hS+bHdH9UzFNBO9zMcgprO0GZ/6YEIkf/mgBuA5NMiuRp5m6ivwUo xKH2mz3BxwH6AvpW6/5BorjgbwZPdTX1tYMcgohlE/MpHfh5Nwe4rsjb0H5cGJlAYMfe 0srHrxeU1gIjiDL3d8f4A8Wj6JVfvR1Kjz76IOx4O+j2X86VpU4F+ZRySrYnGUWVIksJ Q9O7lgLykwXSVAwIycxV5aGbuOOyyTzqvpPovAuHGlG93uzwe35hmFKoqjkz//ikizLb ZXeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Lanru/SQC8M99d5umQKQHOUPZsb8XRCTCQtaYxPlkXo=; b=PmCABkUVkU1Ywsw2t805/ks9kdT1yKz7LKchcmUk4sE7L9W4kVW/acwt1FL4uLUsZX 467twDTjUgc39j81fYdXdH1B+jLBhT+ZqzIm7HlukcjDZvDlkJutUo5vzCouVOvRQSYv wWKfBlOFB86MkYqapooJmr3+nV/siWBabKh4kXPKbbEQyNVRNrwy06GjdlF5l8mjngec UHFazOvM3S6fl59NHtBMv0IWPjfw4mXXSdkB7XFxh/edLhrAmGSzDlt5BdpDpVG42hyL OmkancosgUNN4gazLiXZIwQz1r1IW0+wtEJ4WhPI7kijf54TqFoe/0gmORYxH5kfbqsQ SLqQ== X-Gm-Message-State: AOAM532mYr3WQjVO3C3sv5r5kMPmTtbN2otL/UpXKQQpoUi/xXFNjFH3 JX7aoAk6w5tkHoS7T2Ah1jqJCgCb9vWcWcTc X-Google-Smtp-Source: ABdhPJxDBguDUUyBkLQ/wJC29CDbtheh6WobpHRXEIIjmRIbfP68aMJpo0npQBN5Z0g5+vlVTC+iuA== X-Received: by 2002:a17:902:8343:b029:da:cf6a:f65c with SMTP id z3-20020a1709028343b02900dacf6af65cmr4180066pln.5.1607558039584; Wed, 09 Dec 2020 15:53:59 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:53:58 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:35 -0800 Message-Id: <20201209235347.16180-6-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 05/17] net/bnxt: remove references to Thor 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" Refactor code to remove references to Thor. Instead use P5 as in phase 5 of development cycle since it is applicable to boards other than Thor as well. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt.h | 20 +++++++------- drivers/net/bnxt/bnxt_ethdev.c | 43 +++++++++++++++-------------- drivers/net/bnxt/bnxt_hwrm.c | 44 +++++++++++++++--------------- drivers/net/bnxt/bnxt_ring.c | 8 +++--- drivers/net/bnxt/bnxt_rxq.c | 4 +-- drivers/net/bnxt/bnxt_rxr.c | 12 ++++---- drivers/net/bnxt/bnxt_rxr.h | 2 +- drivers/net/bnxt/bnxt_vnic.c | 4 +-- drivers/net/bnxt/tf_ulp/bnxt_ulp.c | 2 +- 9 files changed, 70 insertions(+), 69 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index f13d586d4..9c1c87489 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -112,11 +112,11 @@ #define TPA_MAX_SEGS 5 /* 32 segments in log2 units */ #define BNXT_TPA_MAX_AGGS(bp) \ - (BNXT_CHIP_THOR(bp) ? TPA_MAX_AGGS_TH : \ + (BNXT_CHIP_P5(bp) ? TPA_MAX_AGGS_TH : \ TPA_MAX_AGGS) #define BNXT_TPA_MAX_SEGS(bp) \ - (BNXT_CHIP_THOR(bp) ? TPA_MAX_SEGS_TH : \ + (BNXT_CHIP_P5(bp) ? TPA_MAX_SEGS_TH : \ TPA_MAX_SEGS) /* @@ -389,10 +389,10 @@ struct bnxt_coal { #define DBR_TYPE_NQ (0xaULL << 60) #define DBR_TYPE_NQ_ARM (0xbULL << 60) -#define BNXT_RSS_TBL_SIZE_THOR 512U -#define BNXT_RSS_ENTRIES_PER_CTX_THOR 64 -#define BNXT_MAX_RSS_CTXTS_THOR \ - (BNXT_RSS_TBL_SIZE_THOR / BNXT_RSS_ENTRIES_PER_CTX_THOR) +#define BNXT_RSS_TBL_SIZE_P5 512U +#define BNXT_RSS_ENTRIES_PER_CTX_P5 64 +#define BNXT_MAX_RSS_CTXTS_P5 \ + (BNXT_RSS_TBL_SIZE_P5 / BNXT_RSS_ENTRIES_PER_CTX_P5) #define BNXT_MAX_TC 8 #define BNXT_MAX_QUEUE 8 @@ -629,7 +629,7 @@ struct bnxt { #define BNXT_FLAG_KONG_MB_EN BIT(10) #define BNXT_FLAG_TRUSTED_VF_EN BIT(11) #define BNXT_FLAG_DFLT_VNIC_SET BIT(12) -#define BNXT_FLAG_THOR_CHIP BIT(13) +#define BNXT_FLAG_CHIP_P5 BIT(13) #define BNXT_FLAG_STINGRAY BIT(14) #define BNXT_FLAG_FW_RESET BIT(15) #define BNXT_FLAG_FATAL_ERROR BIT(16) @@ -653,10 +653,10 @@ struct bnxt { #define BNXT_USE_CHIMP_MB 0 //For non-CFA commands, everything uses Chimp. #define BNXT_USE_KONG(bp) ((bp)->flags & BNXT_FLAG_KONG_MB_EN) #define BNXT_VF_IS_TRUSTED(bp) ((bp)->flags & BNXT_FLAG_TRUSTED_VF_EN) -#define BNXT_CHIP_THOR(bp) ((bp)->flags & BNXT_FLAG_THOR_CHIP) +#define BNXT_CHIP_P5(bp) ((bp)->flags & BNXT_FLAG_CHIP_P5) #define BNXT_STINGRAY(bp) ((bp)->flags & BNXT_FLAG_STINGRAY) -#define BNXT_HAS_NQ(bp) BNXT_CHIP_THOR(bp) -#define BNXT_HAS_RING_GRPS(bp) (!BNXT_CHIP_THOR(bp)) +#define BNXT_HAS_NQ(bp) BNXT_CHIP_P5(bp) +#define BNXT_HAS_RING_GRPS(bp) (!BNXT_CHIP_P5(bp)) #define BNXT_FLOW_XSTATS_EN(bp) ((bp)->flags & BNXT_FLAG_FLOW_XSTATS_EN) #define BNXT_HAS_DFLT_MAC_SET(bp) ((bp)->flags & BNXT_FLAG_DFLT_MAC_SET) #define BNXT_TRUFLOW_EN(bp) ((bp)->flags & BNXT_FLAG_TRUFLOW_EN) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index c363c8427..8047b0b5d 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -208,22 +208,22 @@ int is_bnxt_in_error(struct bnxt *bp) static uint16_t bnxt_rss_ctxts(const struct bnxt *bp) { unsigned int num_rss_rings = RTE_MIN(bp->rx_nr_rings, - BNXT_RSS_TBL_SIZE_THOR); + BNXT_RSS_TBL_SIZE_P5); - if (!BNXT_CHIP_THOR(bp)) + if (!BNXT_CHIP_P5(bp)) return 1; return RTE_ALIGN_MUL_CEIL(num_rss_rings, - BNXT_RSS_ENTRIES_PER_CTX_THOR) / - BNXT_RSS_ENTRIES_PER_CTX_THOR; + BNXT_RSS_ENTRIES_PER_CTX_P5) / + BNXT_RSS_ENTRIES_PER_CTX_P5; } uint16_t bnxt_rss_hash_tbl_size(const struct bnxt *bp) { - if (!BNXT_CHIP_THOR(bp)) + if (!BNXT_CHIP_P5(bp)) return HW_HASH_INDEX_SIZE; - return bnxt_rss_ctxts(bp) * BNXT_RSS_ENTRIES_PER_CTX_THOR; + return bnxt_rss_ctxts(bp) * BNXT_RSS_ENTRIES_PER_CTX_P5; } static void bnxt_free_parent_info(struct bnxt *bp) @@ -427,12 +427,12 @@ static int bnxt_setup_one_vnic(struct bnxt *bp, uint16_t vnic_id) if (dev_conf->rxmode.mq_mode & ETH_MQ_RX_RSS) { int j, nr_ctxs = bnxt_rss_ctxts(bp); - if (bp->rx_nr_rings > BNXT_RSS_TBL_SIZE_THOR) { + if (bp->rx_nr_rings > BNXT_RSS_TBL_SIZE_P5) { PMD_DRV_LOG(ERR, "RxQ cnt %d > reta_size %d\n", - bp->rx_nr_rings, BNXT_RSS_TBL_SIZE_THOR); + bp->rx_nr_rings, BNXT_RSS_TBL_SIZE_P5); PMD_DRV_LOG(ERR, "Only queues 0-%d will be in RSS table\n", - BNXT_RSS_TBL_SIZE_THOR - 1); + BNXT_RSS_TBL_SIZE_P5 - 1); } rc = 0; @@ -712,8 +712,8 @@ static int bnxt_init_chip(struct bnxt *bp) /* THOR does not support ring groups. * But we will use the array to save RSS context IDs. */ - if (BNXT_CHIP_THOR(bp)) - bp->max_ring_grps = BNXT_MAX_RSS_CTXTS_THOR; + if (BNXT_CHIP_P5(bp)) + bp->max_ring_grps = BNXT_MAX_RSS_CTXTS_P5; rc = bnxt_alloc_all_hwrm_stat_ctxs(bp); if (rc) { @@ -1832,7 +1832,7 @@ static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev, return -EINVAL; } - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { vnic->rss_table[i * 2] = rxq->rx_ring->rx_ring_struct->fw_ring_id; vnic->rss_table[i * 2 + 1] = @@ -1881,7 +1881,7 @@ static int bnxt_reta_query_op(struct rte_eth_dev *eth_dev, if (reta_conf[idx].mask & (1ULL << sft)) { uint16_t qid; - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) qid = bnxt_rss_to_qid(bp, vnic->rss_table[i * 2]); else @@ -3232,7 +3232,7 @@ bnxt_timesync_read_time(struct rte_eth_dev *dev, struct timespec *ts) if (!ptp) return 0; - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) rc = bnxt_hwrm_port_ts_query(bp, BNXT_PTP_FLAGS_CURRENT_TIME, &systime_cycles); else @@ -3278,7 +3278,7 @@ bnxt_timesync_enable(struct rte_eth_dev *dev) ptp->tx_tstamp_tc.cc_shift = shift; ptp->tx_tstamp_tc.nsec_mask = (1ULL << shift) - 1; - if (!BNXT_CHIP_THOR(bp)) + if (!BNXT_CHIP_P5(bp)) bnxt_map_ptp_regs(bp); return 0; @@ -3299,7 +3299,7 @@ bnxt_timesync_disable(struct rte_eth_dev *dev) bnxt_hwrm_ptp_cfg(bp); - if (!BNXT_CHIP_THOR(bp)) + if (!BNXT_CHIP_P5(bp)) bnxt_unmap_ptp_regs(bp); return 0; @@ -3318,7 +3318,7 @@ bnxt_timesync_read_rx_timestamp(struct rte_eth_dev *dev, if (!ptp) return 0; - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) rx_tstamp_cycles = ptp->rx_timestamp; else bnxt_get_rx_ts(bp, &rx_tstamp_cycles); @@ -3341,7 +3341,7 @@ bnxt_timesync_read_tx_timestamp(struct rte_eth_dev *dev, if (!ptp) return 0; - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) rc = bnxt_hwrm_port_ts_query(bp, BNXT_PTP_FLAGS_PATH_TX, &tx_tstamp_cycles); else @@ -4007,7 +4007,8 @@ static bool bnxt_vf_pciid(uint16_t device_id) } } -static bool bnxt_thor_device(uint16_t device_id) +/* Phase 5 device */ +static bool bnxt_p5_device(uint16_t device_id) { switch (device_id) { case BROADCOM_DEV_ID_57508: @@ -5240,8 +5241,8 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev, void *params __rte_unused) if (bnxt_vf_pciid(pci_dev->id.device_id)) bp->flags |= BNXT_FLAG_VF; - if (bnxt_thor_device(pci_dev->id.device_id)) - bp->flags |= BNXT_FLAG_THOR_CHIP; + if (bnxt_p5_device(pci_dev->id.device_id)) + bp->flags |= BNXT_FLAG_CHIP_P5; if (pci_dev->id.device_id == BROADCOM_DEV_ID_58802 || pci_dev->id.device_id == BROADCOM_DEV_ID_58804 || diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 784e9778a..6f5402070 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -635,7 +635,7 @@ static int bnxt_hwrm_ptp_qcfg(struct bnxt *bp) HWRM_CHECK_RESULT(); - if (!BNXT_CHIP_THOR(bp) && + if (!BNXT_CHIP_P5(bp) && !(resp->flags & HWRM_PORT_MAC_PTP_QCFG_OUTPUT_FLAGS_DIRECT_ACCESS)) return 0; @@ -646,7 +646,7 @@ static int bnxt_hwrm_ptp_qcfg(struct bnxt *bp) if (!ptp) return -ENOMEM; - if (!BNXT_CHIP_THOR(bp)) { + if (!BNXT_CHIP_P5(bp)) { ptp->rx_regs[BNXT_PTP_RX_TS_L] = rte_le_to_cpu_32(resp->rx_ts_reg_off_lower); ptp->rx_regs[BNXT_PTP_RX_TS_H] = @@ -766,7 +766,7 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->first_vf_id = rte_le_to_cpu_16(resp->first_vf_id); bp->max_rx_em_flows = rte_le_to_cpu_16(resp->max_rx_em_flows); bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); - if (!BNXT_CHIP_THOR(bp) && !bp->pdev->max_vfs) + if (!BNXT_CHIP_P5(bp) && !bp->pdev->max_vfs) bp->max_l2_ctx += bp->max_rx_em_flows; /* TODO: For now, do not support VMDq/RFS on VFs. */ if (BNXT_PF(bp)) { @@ -1056,7 +1056,7 @@ int bnxt_hwrm_func_resc_qcaps(struct bnxt *bp) * So use the value provided by func_qcaps. */ bp->max_l2_ctx = rte_le_to_cpu_16(resp->max_l2_ctxs); - if (!BNXT_CHIP_THOR(bp) && !bp->pdev->max_vfs) + if (!BNXT_CHIP_P5(bp) && !bp->pdev->max_vfs) bp->max_l2_ctx += bp->max_rx_em_flows; bp->max_vnics = rte_le_to_cpu_16(resp->max_vnics); bp->max_stat_ctx = rte_le_to_cpu_16(resp->max_stat_ctx); @@ -1557,7 +1557,7 @@ int bnxt_hwrm_ring_alloc(struct bnxt *bp, req.ring_type = ring_type; req.cmpl_ring_id = rte_cpu_to_le_16(cmpl_ring_id); req.stat_ctx_id = rte_cpu_to_le_32(stats_ctx_id); - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { mb_pool = bp->rx_queues[0]->mb_pool; rx_buf_size = rte_pktmbuf_data_room_size(mb_pool) - RTE_PKTMBUF_HEADROOM; @@ -1927,7 +1927,7 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic) HWRM_PREP(&req, HWRM_VNIC_CFG, BNXT_USE_CHIMP_MB); - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { int dflt_rxq = vnic->start_grp_id; struct bnxt_rx_ring_info *rxr; struct bnxt_cp_ring_info *cpr; @@ -2117,7 +2117,7 @@ int bnxt_hwrm_vnic_ctx_free(struct bnxt *bp, struct bnxt_vnic_info *vnic) { int rc = 0; - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { int j; for (j = 0; j < vnic->num_lb_ctxts; j++) { @@ -2164,7 +2164,7 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic) } static int -bnxt_hwrm_vnic_rss_cfg_thor(struct bnxt *bp, struct bnxt_vnic_info *vnic) +bnxt_hwrm_vnic_rss_cfg_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic) { int i; int rc = 0; @@ -2208,8 +2208,8 @@ int bnxt_hwrm_vnic_rss_cfg(struct bnxt *bp, if (!vnic->rss_table) return 0; - if (BNXT_CHIP_THOR(bp)) - return bnxt_hwrm_vnic_rss_cfg_thor(bp, vnic); + if (BNXT_CHIP_P5(bp)) + return bnxt_hwrm_vnic_rss_cfg_p5(bp, vnic); HWRM_PREP(&req, HWRM_VNIC_RSS_CFG, BNXT_USE_CHIMP_MB); @@ -2274,7 +2274,7 @@ int bnxt_hwrm_vnic_tpa_cfg(struct bnxt *bp, struct hwrm_vnic_tpa_cfg_input req = {.req_type = 0 }; struct hwrm_vnic_tpa_cfg_output *resp = bp->hwrm_cmd_resp_addr; - if (BNXT_CHIP_THOR(bp) && !bp->max_tpa_v2) { + if (BNXT_CHIP_P5(bp) && !bp->max_tpa_v2) { if (enable) PMD_DRV_LOG(ERR, "No HW support for LRO\n"); return -ENOTSUP; @@ -2566,7 +2566,7 @@ void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index) ring = rxr->ag_ring_struct; if (ring->fw_ring_id != INVALID_HW_RING_ID) { bnxt_hwrm_ring_free(bp, ring, - BNXT_CHIP_THOR(bp) ? + BNXT_CHIP_P5(bp) ? HWRM_RING_FREE_INPUT_RING_TYPE_RX_AGG : HWRM_RING_FREE_INPUT_RING_TYPE_RX); if (BNXT_HAS_RING_GRPS(bp)) @@ -3068,7 +3068,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) goto port_phy_cfg; autoneg = bnxt_check_eth_link_autoneg(dev_conf->link_speeds); - if (BNXT_CHIP_THOR(bp) && + if (BNXT_CHIP_P5(bp) && dev_conf->link_speeds == ETH_LINK_SPEED_40G) { /* 40G is not supported as part of media auto detect. * The speed should be forced and autoneg disabled @@ -3093,7 +3093,7 @@ int bnxt_set_hwrm_link_config(struct bnxt *bp, bool link_up) * to 40G until link comes up at new speed. */ if (autoneg == 1 && - !(!BNXT_CHIP_THOR(bp) && + !(!BNXT_CHIP_P5(bp) && (bp->link_info->auto_link_speed || bp->link_info->force_link_speed))) { link_req.phy_flags |= @@ -4820,7 +4820,7 @@ int bnxt_hwrm_clear_ntuple_filter(struct bnxt *bp, } static int -bnxt_vnic_rss_configure_thor(struct bnxt *bp, struct bnxt_vnic_info *vnic) +bnxt_vnic_rss_configure_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic) { struct hwrm_vnic_rss_cfg_output *resp = bp->hwrm_cmd_resp_addr; uint8_t *rx_queue_state = bp->eth_dev->data->rx_queue_state; @@ -4844,7 +4844,7 @@ bnxt_vnic_rss_configure_thor(struct bnxt *bp, struct bnxt_vnic_info *vnic) req.ring_grp_tbl_addr = rte_cpu_to_le_64(vnic->rss_table_dma_addr + - i * BNXT_RSS_ENTRIES_PER_CTX_THOR * + i * BNXT_RSS_ENTRIES_PER_CTX_P5 * 2 * sizeof(*ring_tbl)); req.hash_key_tbl_addr = rte_cpu_to_le_64(vnic->rss_hash_key_dma_addr); @@ -4899,8 +4899,8 @@ int bnxt_vnic_rss_configure(struct bnxt *bp, struct bnxt_vnic_info *vnic) if (!(vnic->rss_table && vnic->hash_type)) return 0; - if (BNXT_CHIP_THOR(bp)) - return bnxt_vnic_rss_configure_thor(bp, vnic); + if (BNXT_CHIP_P5(bp)) + return bnxt_vnic_rss_configure_p5(bp, vnic); if (vnic->fw_vnic_id == INVALID_HW_RING_ID) return 0; @@ -4959,7 +4959,7 @@ static void bnxt_hwrm_set_coal_params(struct bnxt_coal *hw_coal, req->flags = rte_cpu_to_le_16(flags); } -static int bnxt_hwrm_set_coal_params_thor(struct bnxt *bp, +static int bnxt_hwrm_set_coal_params_p5(struct bnxt *bp, struct hwrm_ring_cmpl_ring_cfg_aggint_params_input *agg_req) { struct hwrm_ring_aggint_qcaps_input req = {0}; @@ -4996,8 +4996,8 @@ int bnxt_hwrm_set_ring_coal(struct bnxt *bp, int rc; /* Set ring coalesce parameters only for 100G NICs */ - if (BNXT_CHIP_THOR(bp)) { - if (bnxt_hwrm_set_coal_params_thor(bp, &req)) + if (BNXT_CHIP_P5(bp)) { + if (bnxt_hwrm_set_coal_params_p5(bp, &req)) return -1; } else if (bnxt_stratus_device(bp)) { bnxt_hwrm_set_coal_params(coal, &req); @@ -5026,7 +5026,7 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) int total_alloc_len; int rc, i, tqm_rings; - if (!BNXT_CHIP_THOR(bp) || + if (!BNXT_CHIP_P5(bp) || bp->hwrm_spec_code < HWRM_VERSION_1_9_2 || BNXT_VF(bp) || bp->ctx) diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index aeb6cb615..579c48d8c 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -57,8 +57,8 @@ int bnxt_alloc_ring_grps(struct bnxt *bp) /* THOR does not support ring groups. * But we will use the array to save RSS context IDs. */ - if (BNXT_CHIP_THOR(bp)) { - bp->max_ring_grps = BNXT_MAX_RSS_CTXTS_THOR; + if (BNXT_CHIP_P5(bp)) { + bp->max_ring_grps = BNXT_MAX_RSS_CTXTS_P5; } else if (bp->max_ring_grps < bp->rx_cp_nr_rings) { /* 1 ring is for default completion ring */ PMD_DRV_LOG(ERR, "Insufficient resource: Ring Group\n"); @@ -344,7 +344,7 @@ static void bnxt_set_db(struct bnxt *bp, uint32_t map_idx, uint32_t fid) { - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { if (BNXT_PF(bp)) db->doorbell = (char *)bp->doorbell_base + 0x10000; else @@ -538,7 +538,7 @@ static int bnxt_alloc_rx_agg_ring(struct bnxt *bp, int queue_index) ring->fw_rx_ring_id = rxr->rx_ring_struct->fw_ring_id; - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { ring_type = HWRM_RING_ALLOC_INPUT_RING_TYPE_RX_AGG; hw_stats_ctx_id = cpr->hw_stats_ctx_id; } else { diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 61196eba9..328cc994d 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -472,7 +472,7 @@ int bnxt_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id) if (rc) return rc; - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { /* Reconfigure default receive ring and MRU. */ bnxt_hwrm_vnic_cfg(bp, rxq->vnic); } @@ -562,7 +562,7 @@ int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id) if (bp->rx_queues[i]->rx_started) active_queue_cnt++; - if (BNXT_CHIP_THOR(bp)) { + if (BNXT_CHIP_P5(bp)) { /* * For Thor, we need to ensure that the VNIC default receive * ring corresponds to an active receive queue. When no queue diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index af1774844..e9c4fffed 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -225,13 +225,13 @@ static int bnxt_rx_pages(struct bnxt_rx_queue *rxq, uint16_t cp_cons, ag_cons; struct rx_pkt_cmpl *rxcmp; struct rte_mbuf *last = mbuf; - bool is_thor_tpa = tpa_info && BNXT_CHIP_THOR(rxq->bp); + bool is_p5_tpa = tpa_info && BNXT_CHIP_P5(rxq->bp); for (i = 0; i < agg_buf; i++) { struct rte_mbuf **ag_buf; struct rte_mbuf *ag_mbuf; - if (is_thor_tpa) { + if (is_p5_tpa) { rxcmp = (void *)&tpa_info->agg_arr[i]; } else { *tmp_raw_cons = NEXT_RAW_CMP(*tmp_raw_cons); @@ -285,7 +285,7 @@ static inline struct rte_mbuf *bnxt_tpa_end( uint8_t payload_offset; struct bnxt_tpa_info *tpa_info; - if (BNXT_CHIP_THOR(rxq->bp)) { + if (BNXT_CHIP_P5(rxq->bp)) { struct rx_tpa_v2_end_cmpl *th_tpa_end; struct rx_tpa_v2_end_cmpl_hi *th_tpa_end1; @@ -497,11 +497,11 @@ bnxt_set_ol_flags(struct rx_pkt_cmpl *rxcmp, struct rx_pkt_cmpl_hi *rxcmp1, #ifdef RTE_LIBRTE_IEEE1588 static void -bnxt_get_rx_ts_thor(struct bnxt *bp, uint32_t rx_ts_cmpl) +bnxt_get_rx_ts_p5(struct bnxt *bp, uint32_t rx_ts_cmpl) { uint64_t systime_cycles = 0; - if (!BNXT_CHIP_THOR(bp)) + if (!BNXT_CHIP_P5(bp)) return; /* On Thor, Rx timestamps are provided directly in the @@ -747,7 +747,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, RX_PKT_CMPL_FLAGS_MASK) == RX_PKT_CMPL_FLAGS_ITYPE_PTP_W_TIMESTAMP)) { mbuf->ol_flags |= PKT_RX_IEEE1588_PTP | PKT_RX_IEEE1588_TMST; - bnxt_get_rx_ts_thor(rxq->bp, rxcmp1->reorder); + bnxt_get_rx_ts_p5(rxq->bp, rxcmp1->reorder); } #endif diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h index 3fc901fdf..2a53cf87b 100644 --- a/drivers/net/bnxt/bnxt_rxr.h +++ b/drivers/net/bnxt/bnxt_rxr.h @@ -17,7 +17,7 @@ static inline uint16_t bnxt_tpa_start_agg_id(struct bnxt *bp, struct rx_tpa_start_cmpl *cmp) { - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) return BNXT_TPA_START_AGG_ID_TH(cmp); else return BNXT_TPA_START_AGG_ID_PRE_TH(cmp); diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c index 1602fb2b8..4d378eca4 100644 --- a/drivers/net/bnxt/bnxt_vnic.c +++ b/drivers/net/bnxt/bnxt_vnic.c @@ -129,8 +129,8 @@ int bnxt_alloc_vnic_attributes(struct bnxt *bp) entry_length = HW_HASH_KEY_SIZE + BNXT_MAX_MC_ADDRS * RTE_ETHER_ADDR_LEN; - if (BNXT_CHIP_THOR(bp)) - rss_table_size = BNXT_RSS_TBL_SIZE_THOR * + if (BNXT_CHIP_P5(bp)) + rss_table_size = BNXT_RSS_TBL_SIZE_P5 * 2 * sizeof(*vnic->rss_table); else rss_table_size = HW_HASH_INDEX_SIZE * sizeof(*vnic->rss_table); diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c index 26fd3009f..de47fde88 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c @@ -52,7 +52,7 @@ static int32_t bnxt_ulp_devid_get(struct bnxt *bp, enum bnxt_ulp_device_id *ulp_dev_id) { - if (BNXT_CHIP_THOR(bp)) + if (BNXT_CHIP_P5(bp)) return -EINVAL; /* Assuming Whitney */ *ulp_dev_id = BNXT_ULP_DEVICE_ID_WH_PLUS; From patchwork Wed Dec 9 23:53:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84900 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A0E17A04DB; Thu, 10 Dec 2020 00:56:04 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6D876C9E2; Thu, 10 Dec 2020 00:54:07 +0100 (CET) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by dpdk.org (Postfix) with ESMTP id D74D2C9B2; Thu, 10 Dec 2020 00:54:02 +0100 (CET) Received: by mail-pf1-f196.google.com with SMTP id d2so2298644pfq.5; Wed, 09 Dec 2020 15:54:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=BY0Xj7Y4S2VJLskFcw9jRnNDmSKR1gwF03p+Vuu5eYY=; b=s/Cu2tgSG6G3oBmyRCP743jhIFsw8XWnv97T6aGTl6PvoRsCQOdV70jNLA9uqdvfTI Hez2yPpVy6XDtcGG8s8pWM15KHccq0HakNEr/gULghmtARCXsLAMURG6itYgwgKTTb8R t+MUlP3dQhpHChg3VlVmMEobSyiakkGKD9AhCVaYba8LQJkE1jSV4VAQIwvWj1vBVvqL lII3SLMZ2yhoCeNrwa3pSglW5cSJ6Rx1PDk5pYBP2yPxgns9bwsH5Mp/VBFpqXzSzTn9 uYHDCiQosMnb65kmdIVynXHq77+C0SiOOLrobgAV6Elk6hDBYResuhlK/wdhP2Z732XG tEaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BY0Xj7Y4S2VJLskFcw9jRnNDmSKR1gwF03p+Vuu5eYY=; b=qdrCTOZ4bf7+5RuE7FwZGAftCoA1fsQkTsFbAhvliru4m/nhrssbr2Fj1Wpn9VBaFk jC3Gb15C0fUPIceMFnxzEQ1GpKXZL1Cnse9fJrpme5q/291vVqXLQPeenWfSMYl9Y7Nf USPV+HqjSFMXgHunmNqIYwcF70QxQXZm25Rr64uQJ6Fhav7NK1CtLz8Sy1eDDAeFI3WQ nDHiw9uYBncc6UTkUam4OKXgFgFr2028gOHmDYJCz7Ywj6K47rqKeoG7kQ8FGl2IAmTU n+K2mpgJmAwD+oG/r9PFQ+F26yf5pzRr2VS/T2weys6KfzIbqV61BHkPWbH8iWotMO6F tlPw== X-Gm-Message-State: AOAM531LCv11qbrcf8+bvMb4+fEz1LT1lIXfhEtwJsNLl4lNZNv3MJT2 cq/EFVUoxL4mjZ7UbZlIiPjQSPN6QzYlP02o X-Google-Smtp-Source: ABdhPJzqcOzbAxzaxO7uHXvZy1sSBRHBkvSvS6faYSbNJPRu1kHIIeGjULciqpYKXGJkHHf33LwG3g== X-Received: by 2002:a17:90a:6445:: with SMTP id y5mr4449758pjm.64.1607558040896; Wed, 09 Dec 2020 15:54:00 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.53.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:00 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Wed, 9 Dec 2020 15:53:36 -0800 Message-Id: <20201209235347.16180-7-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 06/17] net/bnxt: fix to return error when fw command fails 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: Kalesh AP In bnxt_reta_update_op() and bnxt_rss_hash_update_op(), driver does not propagate the error back to the application when the fw command fails. Fixes: 378ab645bb0b ("net/bnxt: fix RSS RETA indirection table ops") Fixes: fcc0aa1edc10 ("net/bnxt: add RSS hash configuration") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 8047b0b5d..33358779b 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1843,8 +1843,8 @@ static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev, } } - bnxt_hwrm_vnic_rss_cfg(bp, vnic); - return 0; + rc = bnxt_hwrm_vnic_rss_cfg(bp, vnic); + return rc; } static int bnxt_reta_query_op(struct rte_eth_dev *eth_dev, @@ -1949,8 +1949,8 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, memcpy(vnic->rss_hash_key, rss_conf->rss_key, rss_conf->rss_key_len); rss_config: - bnxt_hwrm_vnic_rss_cfg(bp, vnic); - return 0; + rc = bnxt_hwrm_vnic_rss_cfg(bp, vnic); + return rc; } static int bnxt_rss_hash_conf_get_op(struct rte_eth_dev *eth_dev, From patchwork Wed Dec 9 23:53:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84901 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C1D2CA04DB; Thu, 10 Dec 2020 00:56:24 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 32F96C9EC; Thu, 10 Dec 2020 00:54:09 +0100 (CET) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by dpdk.org (Postfix) with ESMTP id 25D7DC9CE; Thu, 10 Dec 2020 00:54:04 +0100 (CET) Received: by mail-pg1-f193.google.com with SMTP id 69so2445563pgg.8; Wed, 09 Dec 2020 15:54:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i8bmEdj4Fp9mTF5mbjxxI1CAVtCsCT5Xo2fWxih6qcM=; b=EwGSmpKrhz6OiTOfoU7Xqa899eWqB+WkINeiKu8nA/N2cxHWNamRBrHgUueFc1xb+r dh6hCZ8kuqhWWq5aIzCMHp9Q0rOXacfZY/Izp4kG9xOFdvNtj5Sme9n7BZX5mWXRV8jS go2o+OL7hjXoEX8Ewi66d/VHbCIp+vbc7OZuZp6KG5cdSEeK+GUD2zwoT6GjlD/bghsc ze7xVDBd1W9AFYULw1oyKNXGKArYT1GybuWb5hz5HSwTKd+9EUzi+vB/QpFIHUERrySL 3RBYYBhPpBIA7OxIzQoEyTHnoyYsIIJ7Wval9hiBdcVhDxDUR+Dn7PdIWHL1N20paakl k47g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=i8bmEdj4Fp9mTF5mbjxxI1CAVtCsCT5Xo2fWxih6qcM=; b=Hi+pOQBpUMziSAXS+kNsffKBojON/vfOyGH0UNLO3vxx/cDf3CrSvwB/dObeSs8jL0 PtnG2pOCQkFtdwEg9spbOTyN2KPQs57ZTy/VVLzpaLZA00Ems93dUmsHaea+8ZRaQMkC f934XEIkwiG7a0NBkOhAa6bJwxG2vBz/Kl2g6WPpM0rezbwX5jJiS9v57UWoGP6Fxp6/ i0HYq1jQ8EgPxkVDfi97vrw4EUIlWjCxJlx63gki1TjMeREC0r9/iOJ0gv6ZoygHHp/Z KyvGc4DUfu7JkFyLc7dUWQqyF3IMNOYEIXXak72gcm4Mw53QMfklBRzJOzTXsIjjBa8p yL6w== X-Gm-Message-State: AOAM5330AU4UH5TxoGUByqBDrvSIz8DA+HGBK649zcRFsoqUDZejKDi2 0Qnqu3AAdcrOuIswmWPfeDjelOaXw/3eWQng X-Google-Smtp-Source: ABdhPJwE98m4xgG6aS/ZT/fnHemGWOHpMVeVh0Z75hCjBI7yySN6gVNI9OwsB9jMQYUNZIIvrmAwPA== X-Received: by 2002:a17:90a:a45:: with SMTP id o63mr4521883pjo.146.1607558042182; Wed, 09 Dec 2020 15:54:02 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:01 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: stable@dpdk.org Date: Wed, 9 Dec 2020 15:53:37 -0800 Message-Id: <20201209235347.16180-8-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 07/17] net/bnxt: fix cleanup on mutex init failure 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" In case mutex init fails during initialization, start cleanup and fail the initialization process. Fixes: a73b8e939f10 ("net/bnxt: fix race between start and interrupt handler") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt_ethdev.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 33358779b..0b14ca234 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4739,8 +4739,10 @@ bnxt_init_locks(struct bnxt *bp) } err = pthread_mutex_init(&bp->def_cp_lock, NULL); - if (err) + if (err) { PMD_DRV_LOG(ERR, "Unable to initialize def_cp_lock\n"); + return err; + } err = pthread_mutex_init(&bp->health_check_lock, NULL); if (err) From patchwork Wed Dec 9 23:53:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84902 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E2C5AA04DB; Thu, 10 Dec 2020 00:56:46 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 242D6CA04; Thu, 10 Dec 2020 00:54:11 +0100 (CET) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by dpdk.org (Postfix) with ESMTP id 90F99C8F8; Thu, 10 Dec 2020 00:54:04 +0100 (CET) Received: by mail-pg1-f196.google.com with SMTP id w4so2420923pgg.13; Wed, 09 Dec 2020 15:54:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CSoc2hNtNOC/LiyMti8IDCG15Dap4qlzyAUdEMq4iK0=; b=UkIuosKmbBjS1ee99uM+RcoTWfN4hH5aqDKPt93VNX3OfcmeBbquRXXjZL6thBzudA OEswiz38UvAlnBQvVPzoNyiOrgznGWaBY9G8ikwgCAIvQxIiihI4r7u7gqUeD3HWBmrt +2nvAIjEdmy/XAb0R7egEuVRnGh5w9VOYgqLzypd5ucUrkS91N5UBBo/L6jqPWskN5S0 lNUThd2yxk2MIpso4CgtGyF7lREgmQ2CkrqmpyXlpBqn6ULLnC4qiONAy5gW28UWPJWc yskHwBfIVUp4cMSK5u5VwHW67js0xcE6608LR0oujHmXjIuGvc+vRJpdLTtxW5/VgvA5 3Ggg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CSoc2hNtNOC/LiyMti8IDCG15Dap4qlzyAUdEMq4iK0=; b=hbyrK7THomOR2BmGXd2ye1Ql5x/v60e6qRSCcF+FQjXYEeK+5STxyor3mgjhYn2OgZ 4qESus7WhnQ4TWHWt3Bss73mSBKmP1vjAVNtB3WJba3T6le2SUUTt+9HqbdYrcvOuasw JTeiT/ZOMDXpzrHWAgk6yxTe3reRA4nxGGmtf9sds+z5cFjBr6WanyI0pdaqDAvM7VEm ofb1VCTV49lQaLBJLdoLgo4owg1q8XzfNN8zcCV/LRnU/mNjbaNrpHlsoRubnPcM+l7c JCaSKfCNSFDF3LeaQLWObBWlxAl0wzSJvmwg0Farkyw4YiHYr6giPkS1kUve4Lu6aY0X aKcg== X-Gm-Message-State: AOAM532/5RA4eXuDL903BI2CBWNqY8uy1s0SnPiuMXZiPLW1Id2tf1B/ zsb4dlnwQASOx+/0HOFf2IxNJc1H70RCucqN X-Google-Smtp-Source: ABdhPJyWUJiSIWls8hetBI4Bto/t4OR1LQO6zns3T5wbmaiBRuAEUz218AqmcB1cJKsFXxyS/4qKWQ== X-Received: by 2002:a17:90a:8c18:: with SMTP id a24mr4428577pjo.215.1607558043555; Wed, 09 Dec 2020 15:54:03 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:03 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: stable@dpdk.org Date: Wed, 9 Dec 2020 15:53:38 -0800 Message-Id: <20201209235347.16180-9-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 08/17] net/bnxt: fix format specifier for unsigned int 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" &device requires the %u format specifer not the %d specifier, as &device is unsigned. Fixes: a46bbb57605b ("net/bnxt: update multi device design") Cc: stable@dpdk.org Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/tf_core/tf_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/tf_core/tf_core.c b/drivers/net/bnxt/tf_core/tf_core.c index 24d49096a..3409cbbce 100644 --- a/drivers/net/bnxt/tf_core/tf_core.c +++ b/drivers/net/bnxt/tf_core/tf_core.c @@ -82,7 +82,7 @@ tf_open_session(struct tf *tfp, return rc; TFP_DRV_LOG(INFO, - "domain:%d, bus:%d, device:%d\n", + "domain:%d, bus:%d, device:%u\n", parms->session_id.internal.domain, parms->session_id.internal.bus, parms->session_id.internal.device); From patchwork Wed Dec 9 23:53:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84903 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6BABEA04DB; Thu, 10 Dec 2020 00:57:06 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 710C6CA0E; Thu, 10 Dec 2020 00:54:12 +0100 (CET) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 08B83C9DC; Thu, 10 Dec 2020 00:54:07 +0100 (CET) Received: by mail-pg1-f195.google.com with SMTP id t3so2434393pgi.11; Wed, 09 Dec 2020 15:54:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6jJdV41BRw4l0qeC+e/ZTNbv2J3RerTm8XEnp9TjRAI=; b=J2lZun+XCotPLbmC5QVV5p5Cwzar97j2uj96g6/uNGWv5p+EPI4Ar1Hq4685bdP5Mw GzcvbitbXvlKh9h9zo84k2utAsbJZ6gzHM1mlRz7/AgCj4ZPYbrUGInKIuJ1REgUPzWr 3Y67y340lQZ1Q0W32mZQZrnhYEQOK1ORcN1D8s5L5bcfYwfyGNf0p+ceoQXSEZVxYfPv H+zBi7viIBUQKkVMtH4y7QkxJjg4eTdCyNwvUYcwhquJUdzOVr/1JKLDUaRrKTMEvtti seUaO0yeeN1qKQ0JLzkOYaMu4+gAACcC75klM+zP2lqVOqypfhcI9bHlGFzSAcaEAY8g gAEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6jJdV41BRw4l0qeC+e/ZTNbv2J3RerTm8XEnp9TjRAI=; b=bFk39KlhY3L/spulzXNym4tVQlQ0QkD0KAJ1VVSbeO44ZNfZlfbPWKtQKTc1uRUfr+ 6ZDVpShsRm3VRVwn3XQhBRHv1rjM/mjpN72bTPSWo+GIm3VDCA94DfVJyuR6Y3LIbsIU owSGzgfmisxHGkatHlELQKHJOtSC3Xpr4PA5jlQQKV1D/A0rMQymbQiBiydojbHXcz4V gxAxymI1NaJXpHGLD9S3cQkdE1/Nn6w9xCD0/FZSBKNBLO4O3Yp9jkzMlAiiO0RokFXr Rw53j9pr+SX8HiOVNDaJsAdtjfq4sLGwtS/rxoTmQrw3UJcRA4MA3ldbmLcWrK/YqSVc keQA== X-Gm-Message-State: AOAM530wjFOdT9J8kZs+ztNqwr3UT5pWZyngWjaD8egcPKqgcP8HlLyV Ir1H1bjuiQBryglIE27jxL38BPKQHW9Ddcp4 X-Google-Smtp-Source: ABdhPJxqNlzjD/U9dJbc5aYdHa6pDdEZGKqBgSZAH1FZEZl3ni0I2e0e+i3J0GEYjkHKFUGrPimxoQ== X-Received: by 2002:aa7:8708:0:b029:19e:924:345a with SMTP id b8-20020aa787080000b029019e0924345amr4463757pfo.54.1607558044935; Wed, 09 Dec 2020 15:54:04 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:04 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Sriharsha Basavapatna , stable@dpdk.org, Somnath Kotur Date: Wed, 9 Dec 2020 15:53:39 -0800 Message-Id: <20201209235347.16180-10-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 09/17] net/bnxt: fix max rings computation 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: Sriharsha Basavapatna The current max_rings computation does not take into account the case when max_nq_rings is <= num_async_cpr. This results in a wrong value like 0, when max_nq_rings is 1. Fix this by subtracting num_async_cpr only when max_cp_rings > num_async_cpr. Apart from this, the entire logic is currently spread across a few macros, making it hard to read and debug this code. Move this code into an inline function. max_msix is not used in the max_rings calculation. Apparently the max_msix field returned in HWRM_RESC_QCAPS is only valid for Thor and newer chips. On Wh+ it will be equal to min_compl_rings. Also, when a function reset is performed on an application quit, FW will not reset the VF resource pool as per design. This can lead to a strange condition wherein the max_msix field on Wh+ keeps changing on each application re-load thereby throwing throwing off the max_rings computation. Fixes: f03e66cb64ce ("net/bnxt: limit queue count for NS3/Stingray devices") Cc: stable@dpdk.org Signed-off-by: Sriharsha Basavapatna Signed-off-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 41 +++++++++++++++++++++++----------- drivers/net/bnxt/bnxt_ethdev.c | 2 +- drivers/net/bnxt/bnxt_rxq.c | 7 +++--- drivers/net/bnxt/bnxt_txq.c | 2 +- 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 9c1c87489..bc0935272 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -752,19 +752,6 @@ struct bnxt { uint16_t max_tx_rings; uint16_t max_rx_rings; #define MAX_STINGRAY_RINGS 128U -/* For sake of symmetry, max Tx rings == max Rx rings, one stat ctx for each */ -#define BNXT_MAX_RX_RINGS(bp) \ - (BNXT_STINGRAY(bp) ? RTE_MIN(RTE_MIN(bp->max_rx_rings / 2U, \ - MAX_STINGRAY_RINGS), \ - bp->max_stat_ctx / 2U) : \ - RTE_MIN(bp->max_rx_rings / 2U, \ - bp->max_stat_ctx / 2U)) -#define BNXT_MAX_TX_RINGS(bp) \ - (RTE_MIN((bp)->max_tx_rings, BNXT_MAX_RX_RINGS(bp))) - -#define BNXT_MAX_RINGS(bp) \ - (RTE_MIN((((bp)->max_cp_rings - BNXT_NUM_ASYNC_CPR(bp)) / 2U), \ - BNXT_MAX_TX_RINGS(bp))) #define BNXT_MAX_VF_REP_RINGS 8 @@ -822,6 +809,34 @@ struct bnxt { uint16_t tx_cfa_action; }; +static +inline uint16_t bnxt_max_rings(struct bnxt *bp) +{ + uint16_t max_tx_rings = bp->max_tx_rings; + uint16_t max_rx_rings = bp->max_rx_rings; + uint16_t max_cp_rings = bp->max_cp_rings; + uint16_t max_rings; + + /* For the sake of symmetry: + * max Tx rings == max Rx rings, one stat ctx for each. + */ + if (BNXT_STINGRAY(bp)) { + max_rx_rings = RTE_MIN(RTE_MIN(max_rx_rings / 2U, + MAX_STINGRAY_RINGS), + bp->max_stat_ctx / 2U); + } else { + max_rx_rings = RTE_MIN(max_rx_rings / 2U, + bp->max_stat_ctx / 2U); + } + + max_tx_rings = RTE_MIN(max_tx_rings, max_rx_rings); + if (max_cp_rings > BNXT_NUM_ASYNC_CPR(bp)) + max_cp_rings -= BNXT_NUM_ASYNC_CPR(bp); + max_rings = RTE_MIN(max_cp_rings / 2U, max_tx_rings); + + return max_rings; +} + #define BNXT_FC_TIMER 1 /* Timer freq in Sec Flow Counters */ /** diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 0b14ca234..bf8963577 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -920,7 +920,7 @@ static int bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev, if (BNXT_PF(bp)) dev_info->max_vfs = pdev->max_vfs; - max_rx_rings = BNXT_MAX_RINGS(bp); + max_rx_rings = bnxt_max_rings(bp); /* For the sake of symmetry, max_rx_queues = max_tx_queues */ dev_info->max_rx_queues = max_rx_rings; dev_info->max_tx_queues = max_rx_rings; diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 328cc994d..19e11e47b 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -311,7 +311,7 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, if (rc) return rc; - if (queue_idx >= BNXT_MAX_RINGS(bp)) { + if (queue_idx >= bnxt_max_rings(bp)) { PMD_DRV_LOG(ERR, "Cannot create Rx ring %d. Only %d rings available\n", queue_idx, bp->max_rx_rings); @@ -364,8 +364,9 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, eth_dev->data->rx_queues[queue_idx] = rxq; /* Allocate RX ring hardware descriptors */ - if (bnxt_alloc_rings(bp, queue_idx, NULL, rxq, rxq->cp_ring, NULL, - "rxr")) { + rc = bnxt_alloc_rings(bp, queue_idx, NULL, rxq, rxq->cp_ring, NULL, + "rxr"); + if (rc) { PMD_DRV_LOG(ERR, "ring_dma_zone_reserve for rx_ring failed!\n"); goto err; diff --git a/drivers/net/bnxt/bnxt_txq.c b/drivers/net/bnxt/bnxt_txq.c index c9792a2af..99a31cef2 100644 --- a/drivers/net/bnxt/bnxt_txq.c +++ b/drivers/net/bnxt/bnxt_txq.c @@ -98,7 +98,7 @@ int bnxt_tx_queue_setup_op(struct rte_eth_dev *eth_dev, if (rc) return rc; - if (queue_idx >= BNXT_MAX_RINGS(bp)) { + if (queue_idx >= bnxt_max_rings(bp)) { PMD_DRV_LOG(ERR, "Cannot create Tx ring %d. Only %d rings available\n", queue_idx, bp->max_tx_rings); From patchwork Wed Dec 9 23:53:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84904 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 76D7BA04DB; Thu, 10 Dec 2020 00:57:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 48B34CA1E; Thu, 10 Dec 2020 00:54:14 +0100 (CET) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 57EDAC97C for ; Thu, 10 Dec 2020 00:54:07 +0100 (CET) Received: by mail-pg1-f195.google.com with SMTP id o4so2477790pgj.0 for ; Wed, 09 Dec 2020 15:54:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ak0QsN4XPss9aJYBOsdiH1WlEw597LlFm7gWPLMsKiM=; b=Dp3ZIA/0zUdc99+izoFI6HXhOs45Zrm0VlJ2TGc6Q0QuaxxPr5AIgz4k5h5vEhgNn/ 1fNzt4POxoVtq5GMywq7NeCbXQB47wsD8OYzsgQlx5jilY1ivAlFXJBMTmcKb+tXZskR WMqHOydLlx6rnlmNZVwbd5rIC1fxdqCSw2vkovWWXEHPIXkb7qY6wdsDdCCK+Ygu/lft U5FW2sfO1/BylnQ/hFdc1UENJDGMy0ffWOVIAjbrHwtKXHyZ6jNqtzIkrRKSoP9cvq8Y 0q0FlRKYsu8l6vbD3hmCyIPyjq2N5B2iJl8ACU6dAYkCx7IiOeknUHb21m8nSoyBay07 I2qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ak0QsN4XPss9aJYBOsdiH1WlEw597LlFm7gWPLMsKiM=; b=Ix2oPrPA1albjNIHlPn+KCK0+LG2aW06zZSuHL0sD3fpALoElXpSdrO/8QgSJjRHBp iCj6jHAeLAIUhTAU7YOneFIBzw+WyJ8roSzpzi8axjhq5wn+6t5cxgukMV1cY+bivhoK vUWW31uprIQJIfO9JqVvdO2Fwbbjw61+yQ1pHOsxjxPtcClmvUPquN8kIa18ehWd2IMf 819cyz1/auJwZactQRxdyQ2rbFlehxM13UwQIjRKeNFsX9woTNaBIQ8GIoXy0iDrRziq bphi2m54WsDyyV8FwBfbimnJ1JfEAbB4xrk5h5wxIM5fOqHDdt0c++KJtaFYGgAO7Xi1 VoJg== X-Gm-Message-State: AOAM530Vql6zHIKqTSoDGqQT+ZqaaV8UYKBPoaQixmpty/ymXub4WQQQ TcsPrVrEcLiBr5R76LI42UFaxUt4SjdAJB8i X-Google-Smtp-Source: ABdhPJxBKXN7xCfk9cOnyGAYqrK5DI+ZQri9gsykCY2gaP970viGLlIf0pFLHHCc6LCmzsx/fzYfRA== X-Received: by 2002:a17:90a:72c6:: with SMTP id l6mr4401436pjk.233.1607558046342; Wed, 09 Dec 2020 15:54:06 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.05 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:05 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Rahul Gupta Date: Wed, 9 Dec 2020 15:53:40 -0800 Message-Id: <20201209235347.16180-11-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 10/17] net/bnxt: support for 236 queues in NS3 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: Rahul Gupta For NS3, increased CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS to support 236 counters and increased MAX_STINGRAY_RINGS in driver to support more rings. Signed-off-by: Rahul Gupta Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index bc0935272..2a318efaf 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -751,8 +751,7 @@ struct bnxt { uint16_t max_cp_rings; uint16_t max_tx_rings; uint16_t max_rx_rings; -#define MAX_STINGRAY_RINGS 128U - +#define MAX_STINGRAY_RINGS 236U #define BNXT_MAX_VF_REP_RINGS 8 uint16_t max_nq_rings; From patchwork Wed Dec 9 23:53:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84905 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 18301A04DB; Thu, 10 Dec 2020 00:57:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 04DC4C9D3; Thu, 10 Dec 2020 00:54:16 +0100 (CET) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by dpdk.org (Postfix) with ESMTP id B327EC9F2 for ; Thu, 10 Dec 2020 00:54:08 +0100 (CET) Received: by mail-pf1-f193.google.com with SMTP id 11so2297131pfu.4 for ; Wed, 09 Dec 2020 15:54:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4jeTm1NVMmdCcN7PZPiK3/vW2yEl+BMX+VbcLvlHPK8=; b=A4U9aubFJC2MRpSiEiFtk9LU/SFrR7LRW6tanFoU4/5exveFDAhY8YnYtagSx4F1XR J0RadqEqDhiz3MH18hrLeCs5huNiv6hARuCEIO1wIMn7IubWWBUYfw94IJlRs5X81z41 Cky3WXs7hXfTbKumI5bRKd8gHhF4r22VxaGpIIN5F+kMSxWtZ0Zszd68HEWmw7fZvLQB FCNE+B33RoK//lZCmiKsXg5V9PpgEfIbp7GWzfEP997KGzy2Xmmndm31dJhOsLePOILU g66QynngiA56H6ZqgiRwPgipjyuiLkLhVTZyc6PWRf6L1Qdq3+N5hUgqWFsryRPpluXW 7XFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4jeTm1NVMmdCcN7PZPiK3/vW2yEl+BMX+VbcLvlHPK8=; b=jHWfDx7lHDXzsST97DcsY/IM+UZ1k6KV4Rl2khw6W6+qPkPn35ZMLQs1Yg8UBaOHth LZq5/FyPL1wSxzPeh1Iml4rbPGVolZkrlnyBsfyqqkVnmhIylodXRbapkqGqzi52ZoW6 JxYEmdQTtvFoxONva8Y7OtMRT57gicI3YLIEe2LUSlKPEjVDEfao+NMf45qJN6AYxdPw ptLGZItu55pEHyDUeNA0dNu/55qus0nRllUTms/0bogPfzBbG58d667Udb5KQu5TXahA POLeBZ0GFFbD3T17CZQJDqgNiHTm1a0uua9xyFiT3+TIRX9Gp11LvLPDmF/yldNbiaEV pYwA== X-Gm-Message-State: AOAM531MFsrD/H66Wwjhg5kYmkHhnDVDjHc2FlR2G8vkXzJTQGiRugAu /zRz8yoYsqczl4huA3LZxYsjYun1pNIK17Hi X-Google-Smtp-Source: ABdhPJzrZowRkAJZNoD5d6P39Dnl9qf1z9t5fpBTgWByoQpiRHRhJrBTFZm/RjHupc5gDmth4hRHbw== X-Received: by 2002:a17:90b:4c51:: with SMTP id np17mr4460003pjb.180.1607558047687; Wed, 09 Dec 2020 15:54:07 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:07 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur Date: Wed, 9 Dec 2020 15:53:41 -0800 Message-Id: <20201209235347.16180-12-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 11/17] net/bnxt: use the right function to free mbuf 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" mbufs are being allocated using rte_mbuf_raw_alloc(). Use corresponding rte_mbuf_raw_free() to free mbuf. Signed-off-by: Somnath Kotur Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt_reps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index e5ba0909b..167c46ad4 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -65,7 +65,7 @@ bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) /* Representor Rx ring full, drop pkt */ vfr_bp->rx_drop_bytes[que] += mbuf->pkt_len; vfr_bp->rx_drop_pkts[que]++; - rte_pktmbuf_free(mbuf); + rte_mbuf_raw_free(mbuf); } return 0; From patchwork Wed Dec 9 23:53:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84906 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BAE9AA04DB; Thu, 10 Dec 2020 00:58:01 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1F3DBCA2C; Thu, 10 Dec 2020 00:54:17 +0100 (CET) Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by dpdk.org (Postfix) with ESMTP id CCE83C9F4 for ; Thu, 10 Dec 2020 00:54:09 +0100 (CET) Received: by mail-pf1-f176.google.com with SMTP id c12so2280355pfo.10 for ; Wed, 09 Dec 2020 15:54:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=d5aFD+BGyUSjc1mIME8MFXAcleLu4riH8AX8b0Yaheo=; b=LJ8rnhSA+k3jqb5sxKY/Vk0XFlM/6tbDRUKTpQvWWWNVDz/gvJfvR92L1zL94GNtmR f108nnZL06MA6MwO+c0SqTCvpF6I2TBhRbsIU5yoTDkqXMgk1zDW8LdDyDZc7ip6tibQ so8yQxF/doq6Dbh8lz0yAAHIAB20oV/7Twjy/DdMsYklzVFCnH9truGynZV+IL/9Ii5N swGhMao01M1R7QRZYfMmyk+KHPern08I3aKHqfVv4zWBm0p5c107rglKHokW0H4p7hUX s42LE/LIq9UOHPzU9aLcOsbomQtnFfGO3S1+Qzj6ZFxEwNd/G+TNGCQz1Sl5UquPIQ5n VWmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d5aFD+BGyUSjc1mIME8MFXAcleLu4riH8AX8b0Yaheo=; b=NaMK3LqgWQ/Pkovet0DyuZ78C5UUJy/Wg+Ykq4oH7cvQGMBzv2lAOxJkebLHdSjb+/ H0wHqsqxQPlZs+9wthp5lf3/h1GoAXw4Tm6yIE4mSE9Bl1Td+02PPkJ5R7YBdete8mmr auLhjrTh6WvkIce+zVJPeaChtR9q40/+uIzYzSXmvLSrQJs6SrhHAeIliZm6X/2x276v ZtKX8l43Bs3kgHyV6cr7c2CrhKEGoS6868ifsVOHsoa+8mxjVT/+DkqBfVK8F0Nq0+pZ ZwOj2lqQgS3fX4/AEZ2VQInGxq4taMFrP6uHSI2ytmoGZHmLGof5ELxNH6XJI28unSf5 0Q5g== X-Gm-Message-State: AOAM530vtwGEsFIR7Cqx804McJ2JtNmqCX/j9UMhHyLJZ6Ejolq7vqqk /jRpCDEfTi8A7irXBqr2O3bpgN5nuyb1wO77 X-Google-Smtp-Source: ABdhPJzhA/MLv6LVt9rtbFu1sqiFRHHLwUCWTTXhBA+oBeiTrwnknGHOeM6U7gD34R8kMeZqumO2Pg== X-Received: by 2002:a63:4f4c:: with SMTP id p12mr1661251pgl.432.1607558048823; Wed, 09 Dec 2020 15:54:08 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:08 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:42 -0800 Message-Id: <20201209235347.16180-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 12/17] net/bnxt: remove function declaration 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" Remove an orphan function declaration. It has not been defined yet and hence not used anywhere. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt_hwrm.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 23ca6ab51..4b3290773 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -288,8 +288,6 @@ int bnxt_hwrm_cfa_counter_qstats(struct bnxt *bp, enum bnxt_flow_dir dir, uint16_t cntr, uint16_t num_entries); -int bnxt_hwrm_get_dflt_vnic_id(struct bnxt *bp, uint16_t fid, - uint16_t *vnic_id); int bnxt_hwrm_get_dflt_vnic_svif(struct bnxt *bp, uint16_t fid, uint16_t *vnic_id, uint16_t *svif); int bnxt_hwrm_parent_pf_qcfg(struct bnxt *bp); From patchwork Wed Dec 9 23:53:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84907 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CA42CA04DB; Thu, 10 Dec 2020 00:58:22 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 27B7BCA3E; Thu, 10 Dec 2020 00:54:19 +0100 (CET) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by dpdk.org (Postfix) with ESMTP id A7C52CA14; Thu, 10 Dec 2020 00:54:12 +0100 (CET) Received: by mail-pf1-f194.google.com with SMTP id 131so2283566pfb.9; Wed, 09 Dec 2020 15:54:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9PzNizc9U1DdhSspnLOvIwGQMtCcM4ukiufiC7APRkg=; b=KJXAeLgXYA9zz5UY0f5T11SSNwWDdYk8wHhkyPwj/2oe8+oMTnRXYSA158Famt+4+4 myPCedFBj7zHcjEs02CQL5N5LMiqQhd2KCfV4om7bjbjiTITjNalr/9EY5SJhnM26NEI LrNinKaCTiJQ1M8XTXu5mGdZ3O+1ITr/Y/qA31hJbv2QBvJsSj8ml+yAvkp17AGqlnhE H+8PC791vL+PUh+vpqEZZczkw+ZDuDGm/9Bp5gS00NldOuSnH/tpt6m3trHCKt9ifWQ4 kwUo1Xe6QoPpD5uaK4ydLYbf+tc5j5MIFtQCXUsNAwgVaVQw+mRZf0K8Ke1TP5t2Tq1a da6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9PzNizc9U1DdhSspnLOvIwGQMtCcM4ukiufiC7APRkg=; b=Lyc8fdF91X5rGOE3SH2ERmEK+wJCinX2tMTVDAHkDk2Z4LPCk174kdqQB4LIPKv9Qs ys1cOlKsnRh1U24Y/6G2in5jSgPN9zU95oz5HN/+UGe8rPJnDGlHGE80byBbQvP5Ycg8 L/xOo86sS+WCIflJmEVNTYgWkWNytz4i2Wc14V82ETK4g8UFpU15rh6eVOg4PVgSMAOn hOdBhVG8mucSajXK1KLoDnEQI5RC9zDZKW2Vs0jKqyIFXMVSCo1YmYWDh/L1x5skmuNt GgCUHqnc7f9NYhS+n0pr8eNeN40iZ7V6knOBxXN+WTPggLsvI2S7W9OkAjVWe8hYn66c 4s0Q== X-Gm-Message-State: AOAM532hjhkIXO//oNmfnZ+rBQKfeLf+iH3dzbSdGc79sju8TDvmMclx 6vbPeoxymSiLZrOejdnXEIm9PMgKqN+xYSZP X-Google-Smtp-Source: ABdhPJxeq/9/uVs/etvvjlYiAsLPiVbgV7aIATkSuzl125cpiBgDSgHMvGk9RUi+1/dFIc/Pm/LOeg== X-Received: by 2002:a17:90b:1b52:: with SMTP id nv18mr4507474pjb.172.1607558050660; Wed, 09 Dec 2020 15:54:10 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:10 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Wed, 9 Dec 2020 15:53:43 -0800 Message-Id: <20201209235347.16180-14-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 13/17] net/bnxt: fix vnic RSS configure function 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: Kalesh AP 1. moved invalid VNIC id check to the beginning of the function. 2. removed a duplicate check which avoids unnecessary code indentation. Fixes: 49d0709b257fc ("net/bnxt: delete and flush L2 filters cleanly") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_hwrm.c | 42 +++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 6f5402070..cee2656c1 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -4896,37 +4896,35 @@ int bnxt_vnic_rss_configure(struct bnxt *bp, struct bnxt_vnic_info *vnic) { unsigned int rss_idx, fw_idx, i; + if (vnic->fw_vnic_id == INVALID_HW_RING_ID) + return 0; + if (!(vnic->rss_table && vnic->hash_type)) return 0; if (BNXT_CHIP_P5(bp)) return bnxt_vnic_rss_configure_p5(bp, vnic); - if (vnic->fw_vnic_id == INVALID_HW_RING_ID) - return 0; - - if (vnic->rss_table && vnic->hash_type) { - /* - * Fill the RSS hash & redirection table with - * ring group ids for all VNICs - */ - for (rss_idx = 0, fw_idx = 0; rss_idx < HW_HASH_INDEX_SIZE; - rss_idx++, fw_idx++) { - for (i = 0; i < bp->rx_cp_nr_rings; i++) { - fw_idx %= bp->rx_cp_nr_rings; - if (vnic->fw_grp_ids[fw_idx] != - INVALID_HW_RING_ID) - break; - fw_idx++; - } - if (i == bp->rx_cp_nr_rings) - return 0; - vnic->rss_table[rss_idx] = vnic->fw_grp_ids[fw_idx]; + /* + * Fill the RSS hash & redirection table with + * ring group ids for all VNICs + */ + for (rss_idx = 0, fw_idx = 0; rss_idx < HW_HASH_INDEX_SIZE; + rss_idx++, fw_idx++) { + for (i = 0; i < bp->rx_cp_nr_rings; i++) { + fw_idx %= bp->rx_cp_nr_rings; + if (vnic->fw_grp_ids[fw_idx] != INVALID_HW_RING_ID) + break; + fw_idx++; } - return bnxt_hwrm_vnic_rss_cfg(bp, vnic); + + if (i == bp->rx_cp_nr_rings) + return 0; + + vnic->rss_table[rss_idx] = vnic->fw_grp_ids[fw_idx]; } - return 0; + return bnxt_hwrm_vnic_rss_cfg(bp, vnic); } static void bnxt_hwrm_set_coal_params(struct bnxt_coal *hw_coal, From patchwork Wed Dec 9 23:53:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84908 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D49D8A04DB; Thu, 10 Dec 2020 00:58:44 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B72F8CA4C; Thu, 10 Dec 2020 00:54:20 +0100 (CET) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 2B869C97A; Thu, 10 Dec 2020 00:54:14 +0100 (CET) Received: by mail-pg1-f195.google.com with SMTP id o4so2477992pgj.0; Wed, 09 Dec 2020 15:54:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NIgyByExLkf8JyPQhV3IrW/GfQFNvU7+7U9tVph/vJE=; b=oCRUXDV2TFf+osqwFTF60E3FhembxQ2viSpLzzcGH2TnBCqD4yHRcjV8tuoqJpmLI4 Ai8pusCqX53TjnFIVCFuA6F+16d2DWrHbyBnbifp4Nx5LeFaWxPMvfwKlCoaz0t6PWc4 22C8Kxg/aj/KldZV6JnRpqxUrk3YXAoBu1fLmvaevd7ROaXpTTaYME8iXUBfToDcy4P2 y4oebm+J2R0Cwp/4Sg7p1XdEx1KiSOuTZSv7L0DK9J0OVgChjltSOttAesSIO6tVpck9 XxgqNBmDHfdZ+IY753ybggZBxx6CKvnhlaiqFLAJALt9v7qGAqcj/uP0g/NP4XZEZXKV fjNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NIgyByExLkf8JyPQhV3IrW/GfQFNvU7+7U9tVph/vJE=; b=XzbwvqDyJlxjq+OoPT/yTSi4VNpujzr6RgsA9orWOUbACxZDwYpUu5UJ0gUEVaqizp hqZmXX/WzIYlskeyYM6agZjpU5qVNob9K77LohcU0Rvcp9eL5AJt5/9CnxECLvcPT2MJ QC7EemQQnmKkAlo6SSe+BolV8JQAu5XEifwMD5Psk/hJG3aPAvPDtbHAKdVcOu7Oa7Ms bEjBb1gEfIZwPgx3wlSUzFtBDYqhGuMV7Y0E3WzWFD5H4BGpFCIoZ9Lb1wTGDKvSC2DS hb8j/odUgT1eIVKCcSRO3cVQNQuFONr3ZY84Y6rI3Ita57pLDafmFEPJ10DFfqFPnbel 5qDw== X-Gm-Message-State: AOAM530afRZsgNIQqBP2ZXkTkueQ4lq+KKVU4CdPWTwNoKPFjyeaCGlr U8fk6fLWJViCeuRP6Y7cPPpSx0+oc4LQG/Xr X-Google-Smtp-Source: ABdhPJyFEatOh5OtwvDDrWGQMTSRkHIV3E9LLOSt7q56RvNO0vcVHYuru1iL9Mfg7pLG+yev/CpfJg== X-Received: by 2002:a17:90b:8d5:: with SMTP id ds21mr4344896pjb.5.1607558052131; Wed, 09 Dec 2020 15:54:12 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:11 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur , stable@dpdk.org, Venkat Duvvuru , Kalesh AP Date: Wed, 9 Dec 2020 15:53:44 -0800 Message-Id: <20201209235347.16180-15-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 14/17] net/bnxt: fix PF resource query 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: Somnath Kotur This cmd should be called by every driver after 'hwrm_func_cfg' to get the actual number of resources allocated by the HWRM. The values returned in the cmd are the max values for that PF. Also, now that the max values for the PF are computed in probe itself, no need to invoke FUNC_QCAPs or any other cmd in dev_configure_op() as that would just override the actual max values obtained above. Fixes: f8168ca0e690 ("net/bnxt: support thor controller") Cc: stable@dpdk.org Signed-off-by: Somnath Kotur Reviewed-by: Venkat Duvvuru Reviewed-by: Kalesh AP Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 7 ------- drivers/net/bnxt/bnxt_hwrm.c | 36 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index bf8963577..21d9e26ca 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1071,13 +1071,6 @@ static int bnxt_dev_configure_op(struct rte_eth_dev *eth_dev) } pthread_mutex_unlock(&bp->def_cp_lock); - } else { - /* legacy driver needs to get updated values */ - rc = bnxt_hwrm_func_qcaps(bp); - if (rc) { - PMD_DRV_LOG(ERR, "hwrm func qcaps fail:%d\n", rc); - return rc; - } } /* Inherit new configurations */ diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index cee2656c1..a3eb133c0 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -3456,6 +3456,35 @@ static int bnxt_update_max_resources(struct bnxt *bp, return 0; } +/* Update the PF resource values based on how many resources + * got allocated to it. + */ +static int bnxt_update_max_resources_pf_only(struct bnxt *bp) +{ + struct hwrm_func_qcfg_input req = {0}; + struct hwrm_func_qcfg_output *resp = bp->hwrm_cmd_resp_addr; + int rc; + + /* Get the actual allocated values now */ + HWRM_PREP(&req, HWRM_FUNC_QCFG, BNXT_USE_CHIMP_MB); + req.fid = rte_cpu_to_le_16(0xffff); + rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB); + HWRM_CHECK_RESULT(); + + bp->max_rsscos_ctx = rte_le_to_cpu_16(resp->alloc_rsscos_ctx); + bp->max_stat_ctx = rte_le_to_cpu_16(resp->alloc_stat_ctx); + bp->max_cp_rings = rte_le_to_cpu_16(resp->alloc_cmpl_rings); + bp->max_tx_rings = rte_le_to_cpu_16(resp->alloc_tx_rings); + bp->max_rx_rings = rte_le_to_cpu_16(resp->alloc_rx_rings); + bp->max_l2_ctx = rte_le_to_cpu_16(resp->alloc_l2_ctx); + bp->max_ring_grps = rte_le_to_cpu_16(resp->alloc_hw_ring_grps); + bp->max_vnics = rte_le_to_cpu_16(resp->alloc_vnics); + + HWRM_UNLOCK(); + + return 0; +} + int bnxt_hwrm_func_qcfg_current_vf_vlan(struct bnxt *bp, int vf) { struct hwrm_func_qcfg_input req = {0}; @@ -3555,8 +3584,13 @@ int bnxt_hwrm_allocate_pf_only(struct bnxt *bp) HWRM_FUNC_CFG_INPUT_FLAGS_STD_TX_RING_MODE_DISABLE); bp->pf->func_cfg_flags |= HWRM_FUNC_CFG_INPUT_FLAGS_STD_TX_RING_MODE_DISABLE; + rc = bnxt_hwrm_pf_func_cfg(bp, &pf_resc); - rc = __bnxt_hwrm_func_qcaps(bp); + if (rc) + return rc; + + rc = bnxt_update_max_resources_pf_only(bp); + return rc; } From patchwork Wed Dec 9 23:53:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84909 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4351AA04DB; Thu, 10 Dec 2020 00:58:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 56ADBCA54; Thu, 10 Dec 2020 00:54:22 +0100 (CET) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by dpdk.org (Postfix) with ESMTP id 4BCE1C9D3 for ; Thu, 10 Dec 2020 00:54:14 +0100 (CET) Received: by mail-pg1-f193.google.com with SMTP id t37so2448935pga.7 for ; Wed, 09 Dec 2020 15:54:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=VyA3/SlRtTbtFeEbm3PQMKzw+mHwXjPVof6WYYEqWjc=; b=oRBXLLMAXHRJUivCRFVN3zkQHbqJ69HaN+q2Bg49BS0JV+bzyeRhZFQUU8E2zAg7D9 nj3wgi/BjKhfdH1onUnajVQTbBmw2g0rsB9yxAkTYf87buxjw2+CBp9hSMKrNz7/P1U+ c1rQ3Esz7Gr7fS39IzMn+f7Wuk3q/6An8jbHBKvHbGKCHxTsg7wExBkSKXVYHOtQkG8z QhuwBvA0V9D9hM+0X4DWM6GyCTOaAUnlUMI75lXICXXdm6rLgo4scKaGiL/C+9qkW2xL fEk9wenAFqvDE0ZjhBNfa2KP8YCWZJtIX4jBpQKwUY4OcrJh6UYMI9oEyrw4GYfREaWe 6VsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VyA3/SlRtTbtFeEbm3PQMKzw+mHwXjPVof6WYYEqWjc=; b=LNDzj+rXPTB1HuUzHuupDwPkLaKWPGDLnYmbqRF64ruceE+m7P7tOjHzVU8mUGx/c3 XcqGiOjKfJTYlmqUkQQEJGJjnnyhpWF7woEQTDC32+Xu4yJFGoT55CGVtWOqP624nVNh //cIDCqiZlPB5Mnt/liPSdLMxP83xamCfUCJmyT2/pgvrighVmOye+PY55boHS0M0lOq aSc7IZOOQzc/ZsEb5eNh6w1/TBZES1TWhUOKOMRzJH6Oziq+Ps/yZ9Crgx+9lgm0b4Hr hZJDUR/SCJwvd5jKBU+xUehB6HdMHolOkvqo28r9MSGvkCqKzPST+B/+kSa3zt/RnM+y J+Jw== X-Gm-Message-State: AOAM532FHlrEJBM2k9/6dc6M1KK+WxjhZa5GgLZefNUaJfLAWYBbfLV8 1rD1j/JwxpQLv+X4L/MvnXICmHRU0O+N0J5k X-Google-Smtp-Source: ABdhPJySc0pbEcnyN7AqrCrqHNBKLyK4bfNfbObPtX4rahXsrOORagc9AQQGRUNuzcAiGkcWfmSCoA== X-Received: by 2002:a17:90b:19d2:: with SMTP id nm18mr4575540pjb.159.1607558053224; Wed, 09 Dec 2020 15:54:13 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:12 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:45 -0800 Message-Id: <20201209235347.16180-16-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 15/17] net/bnxt: changes to indentation and coding style 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" Indentation and coding style fixes. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt.h | 4 ++-- drivers/net/bnxt/bnxt_ethdev.c | 9 ++++----- drivers/net/bnxt/bnxt_reps.c | 2 +- drivers/net/bnxt/bnxt_ring.c | 3 +-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 2a318efaf..556e99203 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -127,9 +127,9 @@ */ #ifdef RTE_EXEC_ENV_FREEBSD /* In FreeBSD OS, nic_uio driver does not support interrupts */ -#define BNXT_NUM_ASYNC_CPR(bp) 0 +#define BNXT_NUM_ASYNC_CPR(bp) 0U #else -#define BNXT_NUM_ASYNC_CPR(bp) 1 +#define BNXT_NUM_ASYNC_CPR(bp) 1U #endif #define BNXT_MISC_VEC_ID RTE_INTR_VEC_ZERO_OFFSET diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 21d9e26ca..9d5c8aa0f 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1264,11 +1264,10 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) return -EINVAL; } - if (bp->rx_cp_nr_rings > RTE_ETHDEV_QUEUE_STAT_CNTRS) { + if (bp->rx_cp_nr_rings > RTE_ETHDEV_QUEUE_STAT_CNTRS) PMD_DRV_LOG(ERR, - "RxQ cnt %d > RTE_ETHDEV_QUEUE_STAT_CNTRS %d\n", - bp->rx_cp_nr_rings, RTE_ETHDEV_QUEUE_STAT_CNTRS); - } + "RxQ cnt %d > RTE_ETHDEV_QUEUE_STAT_CNTRS %d\n", + bp->rx_cp_nr_rings, RTE_ETHDEV_QUEUE_STAT_CNTRS); do { rc = bnxt_hwrm_if_change(bp, true); @@ -1622,7 +1621,7 @@ int bnxt_link_update_op(struct rte_eth_dev *eth_dev, int wait_to_complete) out: /* Timed out or success */ if (new.link_status != eth_dev->data->dev_link.link_status || - new.link_speed != eth_dev->data->dev_link.link_speed) { + new.link_speed != eth_dev->data->dev_link.link_speed) { rte_eth_linkstatus_set(eth_dev, &new); rte_eth_dev_callback_process(eth_dev, diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 167c46ad4..12d677d32 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -56,7 +56,7 @@ bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) /* Put this mbuf on the RxQ of the Representor */ prod_rx_buf = &rep_rxr->rx_buf_ring[rep_rxr->rx_prod & mask]; - if (!*prod_rx_buf) { + if (*prod_rx_buf == NULL) { *prod_rx_buf = mbuf; vfr_bp->rx_bytes[que] += mbuf->pkt_len; vfr_bp->rx_pkts[que]++; diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index 579c48d8c..f83bcaba2 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -599,8 +599,7 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index) if (rxq->rx_started) { if (bnxt_init_one_rx_ring(rxq)) { - PMD_DRV_LOG(ERR, - "bnxt_init_one_rx_ring failed!\n"); + PMD_DRV_LOG(ERR, "bnxt_init_one_rx_ring failed!\n"); bnxt_rx_queue_release_op(rxq); rc = -ENOMEM; goto err_out; From patchwork Wed Dec 9 23:53:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84910 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4F076A04DB; Thu, 10 Dec 2020 00:59:19 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 66100CA5A; Thu, 10 Dec 2020 00:54:23 +0100 (CET) Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 45458CA26 for ; Thu, 10 Dec 2020 00:54:15 +0100 (CET) Received: by mail-pg1-f195.google.com with SMTP id t3so2434703pgi.11 for ; Wed, 09 Dec 2020 15:54:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=TT8YdPYWfbYkyBD8nbmy/X4Y1w8JNrQ9q5fapLAPC0c=; b=tm1F/zqaYyJchugWgOG2Oo3he2/qTy91XbGG6IXLrmXxOFOE+u+62dOGYz7rLHC3me 6O7x1wgikVAEon0O5Jf2tpDqkhuYK97jXQKUK9s5cpyXjq1VXKynMcxOQRclQS4jCTaV Io09O/8ERKxiSksnju2S6bI8F8TxuGfCorWUOMFOidaqPd9mZQ7Jp3OQ+m9zXGGNaeBy Pnn+t91a2olvohQYk3RCcYfsZqkPqKmVdTTNfTPY4fAM51An6zxQbJvWWz4Xi0guGXGU 2r1YbEEycMmj7pnIVlp4k6q++IqnVDSQe0zcY1JFOsB4yClxBpuN6hLnHxb899reZnen fgYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TT8YdPYWfbYkyBD8nbmy/X4Y1w8JNrQ9q5fapLAPC0c=; b=J0CFZI6rWNLAyYXRBvGlsaCTBMBHxIVrTRLE0Z8JSfpCG3EoHxmCJtz8YohhWhJTe9 q+uGf36ox/LCW39L6MmC7w39rHtuUo68e2/nXjelmoBrtTRXHI4M5Ispb2aqhsKuR3W4 30N+RT59fNEE91GQS+PQhUtbPsK0jv9TknF1Z0lbscIvHkCzUgbWUkpmK1jJDvD46cTE QPxm/rCzItlAeDT1AfqN6nR4/yM8GXJ5aQyLPcfSumThxl2Rltzpw81XWfe6MSTiO1n/ JVxnwx4g4WGloQGgJoHgvuJEQ69xlDla3GyAlex8bIvzs91sng8GK14QPYCYDd+O3urG TrXw== X-Gm-Message-State: AOAM532TyCthmdCI70yaILr94czfsQzIAUUeOC6iK67XQGvWYuhN+qgO 4h1MPy5WkJ3DtnFsFIpD8o4Vb2pLwDn5uUkG X-Google-Smtp-Source: ABdhPJztZyksLJCUU/Lm2KH/k+LReTeh3yJS53oXywcSJnp+tdNLYSjdJDABwWfMRi/s/lHHz5FANw== X-Received: by 2002:a63:f201:: with SMTP id v1mr4179511pgh.267.1607558054264; Wed, 09 Dec 2020 15:54:14 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:13 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:46 -0800 Message-Id: <20201209235347.16180-17-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 16/17] net/bnxt: add missing comments 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" Add and update some missing comments in the code. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt.h | 6 ++++++ drivers/net/bnxt/tf_ulp/ulp_template_db_act.c | 5 +++++ drivers/net/bnxt/tf_ulp/ulp_template_db_class.c | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 556e99203..07d39ee93 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -724,7 +724,13 @@ struct bnxt { void *hwrm_short_cmd_req_addr; rte_iova_t hwrm_short_cmd_req_dma_addr; rte_spinlock_t hwrm_lock; + /* synchronize between dev_configure_op and int handler */ pthread_mutex_t def_cp_lock; + /* synchronize between dev_start_op and async evt handler + * Locking sequence in async evt handler will be + * def_cp_lock + * health_check_lock + */ pthread_mutex_t health_check_lock; uint16_t max_req_len; uint16_t max_resp_len; diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_act.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_act.c index 00ada607a..509af7c58 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_template_db_act.c +++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_act.c @@ -8,6 +8,10 @@ #include "ulp_template_struct.h" #include "ulp_rte_parser.h" +/* + * Action signature table: + * maps hash id to ulp_act_match_list[] index + */ uint16_t ulp_act_sig_tbl[BNXT_ULP_ACT_SIG_TBL_MAX_SZ] = { [BNXT_ULP_ACT_HID_015a] = 1, [BNXT_ULP_ACT_HID_00eb] = 2, @@ -93,6 +97,7 @@ uint16_t ulp_act_sig_tbl[BNXT_ULP_ACT_SIG_TBL_MAX_SZ] = { [BNXT_ULP_ACT_HID_0b4e] = 82 }; +/* Array for the act matcher list */ struct bnxt_ulp_act_match_info ulp_act_match_list[] = { [1] = { .act_hid = BNXT_ULP_ACT_HID_015a, diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c b/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c index fdb26da3e..d904a04cb 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c +++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_class.c @@ -8,6 +8,11 @@ #include "ulp_template_struct.h" #include "ulp_rte_parser.h" +/* Define the template structures */ +/* + * Classification signature table: + * maps hash id to ulp_class_match_list[] index + */ uint16_t ulp_class_sig_tbl[BNXT_ULP_CLASS_SIG_TBL_MAX_SZ] = { [BNXT_ULP_CLASS_HID_0138] = 1, [BNXT_ULP_CLASS_HID_03f0] = 2, @@ -227,6 +232,7 @@ uint16_t ulp_class_sig_tbl[BNXT_ULP_CLASS_SIG_TBL_MAX_SZ] = { [BNXT_ULP_CLASS_HID_01b4] = 216 }; +/* Array for the proto matcher list */ struct bnxt_ulp_class_match_info ulp_class_match_list[] = { [1] = { .class_hid = BNXT_ULP_CLASS_HID_0138, From patchwork Wed Dec 9 23:53:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84911 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4B4FDA04DB; Thu, 10 Dec 2020 00:59:37 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F3BF8CA63; Thu, 10 Dec 2020 00:54:24 +0100 (CET) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by dpdk.org (Postfix) with ESMTP id 64E97CA34 for ; Thu, 10 Dec 2020 00:54:17 +0100 (CET) Received: by mail-pf1-f194.google.com with SMTP id t8so2290637pfg.8 for ; Wed, 09 Dec 2020 15:54:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=LUcPuUcdWJStMt6YpBS2+lOIGCHNPY1gXi+dEgkoHTE=; b=gEFVBEW0DDf9tXLlch6/cGIPL9xYtasU39w1lgvvWAjjcZjVKF+/w087zluNsDuUI4 0hwj6oOsAwo+rZZSkBGdtjSssuumRrUJyBMCXUx+x3QVOj3W/Huz9hsXm5vnTnud/nnr CXVVPoGyLPTljs47Ich86HeUQfHIG2ceILGnDB32xCWAdHoWfltbKge89jPuL4W+HVGn EthTXkcGF6pvLqkVcGWduJDrKil0A+eBi05eG9Z8av2un04nfyzCW7bM7rGrfEq5Y9ea LdKCG24+h/oQ33y5GFgRgWEKvwQv5HREj74wL66w06N7yorahfxb+F/sHQoJsPXriMhf 0Orw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LUcPuUcdWJStMt6YpBS2+lOIGCHNPY1gXi+dEgkoHTE=; b=LYUtWYQjrQ/eQ/urazuoX8YTsQgRwWgvr1fHUMNkUc/Zia5ST6iSzCX0sm8mdIE59V KezWMNIGneUxfIx/Y8qKtwWS7UwLgqQVt+5m/9sHB8pUNyiubqOEzG60jJvlouVFjuLo u7W1z+XAxNV00cKg7lPXAiYhuR5d/vAqJsDgVbNkAxQLNjD03aKhILNqNkvlQ6UlQnCZ zwXsD3DGLOoyNORtF5jF0ZtAD8ILF2WAH3Hpe9jNYttvlFZ1LTY4OOSQe+QWCKUZwbjb 4RHcjHIhmkuYd6S7NxPOC3g7bvXT1i/SF94o981TacWmLKBEFbqDYZPBRPhX2hVcTi9m GxLg== X-Gm-Message-State: AOAM5327CbO99QRvEBBnC8+WKnHlCTecKmxf2gTEsdkvDTG1LXl79NjJ 6/19xjMUnITKH+Xea8yD3xxiaVo3shwXQULn X-Google-Smtp-Source: ABdhPJxzygF/1DuAEOEOJSvISdgTy3Fe7xtQpHbUG+OiA9g7OEZ3hZAEiyKs+nyqK6L+TmeosS/SUw== X-Received: by 2002:a65:5903:: with SMTP id f3mr4078778pgu.109.1607558055943; Wed, 09 Dec 2020 15:54:15 -0800 (PST) Received: from localhost.localdomain ([192.19.228.250]) by smtp.gmail.com with ESMTPSA id s7sm4047693pfh.207.2020.12.09.15.54.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2020 15:54:15 -0800 (PST) From: Ajit Khaparde X-Google-Original-From: Ajit Khaparde To: dev@dpdk.org Date: Wed, 9 Dec 2020 15:53:47 -0800 Message-Id: <20201209235347.16180-18-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201209235347.16180-1-ajit.khaparde@broadcom.com> References: <20201209192233.6518-1-ajit.khaparde@broadcom.com> <20201209235347.16180-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 17/17] net/bnxt: modify ring index logic 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" Change the ring logic so that the index increments unbounded and mask it only when needed. Modify the existing macros so that the index is not masked. Add a new macro RING_IDX() to mask it only when needed. - v2->v3: Updated the index calculation in Tx completion processing. Signed-off-by: Ajit Khaparde Acked-by: Lance Richardson --- drivers/net/bnxt/bnxt_cpr.h | 10 ++- drivers/net/bnxt/bnxt_hwrm.c | 4 +- drivers/net/bnxt/bnxt_reps.c | 4 +- drivers/net/bnxt/bnxt_ring.c | 39 +++++---- drivers/net/bnxt/bnxt_ring.h | 40 ++++++--- drivers/net/bnxt/bnxt_rxr.c | 110 +++++++++++++----------- drivers/net/bnxt/bnxt_rxr.h | 4 +- drivers/net/bnxt/bnxt_rxtx_vec_common.h | 14 +-- drivers/net/bnxt/bnxt_rxtx_vec_neon.c | 16 ++-- drivers/net/bnxt/bnxt_rxtx_vec_sse.c | 16 ++-- drivers/net/bnxt/bnxt_txr.c | 51 ++++++----- drivers/net/bnxt/bnxt_txr.h | 6 +- 12 files changed, 179 insertions(+), 135 deletions(-) diff --git a/drivers/net/bnxt/bnxt_cpr.h b/drivers/net/bnxt/bnxt_cpr.h index ff9697f4c..a763f6006 100644 --- a/drivers/net/bnxt/bnxt_cpr.h +++ b/drivers/net/bnxt/bnxt_cpr.h @@ -45,7 +45,7 @@ struct bnxt_db_info; } while (0) #define B_CP_DB_REARM(cpr, raw_cons) \ rte_write32((DB_CP_REARM_FLAGS | \ - RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \ + DB_RING_IDX(&((cpr)->cp_db), raw_cons)), \ ((cpr)->cp_db.doorbell)) #define B_CP_DB_ARM(cpr) rte_write32((DB_KEY_CP), \ @@ -65,8 +65,8 @@ struct bnxt_db_info; } while (0) #define B_CP_DIS_DB(cpr, raw_cons) \ rte_write32_relaxed((DB_CP_FLAGS | \ - RING_CMP(((cpr)->cp_ring_struct), raw_cons)), \ - ((cpr)->cp_db.doorbell)) + DB_RING_IDX(&((cpr)->cp_db), raw_cons)), \ + ((cpr)->cp_db.doorbell)) #define B_CP_DB(cpr, raw_cons, ring_mask) \ rte_write32((DB_CP_FLAGS | \ @@ -80,8 +80,11 @@ struct bnxt_db_info { uint32_t db_key32; }; bool db_64; + uint32_t db_ring_mask; }; +#define DB_RING_IDX(db, idx) ((idx) & (db)->db_ring_mask) + struct bnxt_ring; struct bnxt_cp_ring_info { uint32_t cp_raw_cons; @@ -95,7 +98,6 @@ struct bnxt_cp_ring_info { uint32_t hw_stats_ctx_id; struct bnxt_ring *cp_ring_struct; - uint16_t cp_cons; bool valid; }; diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index a3eb133c0..73647fba8 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -2601,8 +2601,8 @@ bnxt_free_all_hwrm_rings(struct bnxt *bp) memset(txr->tx_buf_ring, 0, txr->tx_ring_struct->ring_size * sizeof(*txr->tx_buf_ring)); - txr->tx_prod = 0; - txr->tx_cons = 0; + txr->tx_raw_prod = 0; + txr->tx_raw_cons = 0; } if (cpr->cp_ring_struct->fw_ring_id != INVALID_HW_RING_ID) { bnxt_free_cp_ring(bp, cpr); diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c index 12d677d32..f7bbf77d3 100644 --- a/drivers/net/bnxt/bnxt_reps.c +++ b/drivers/net/bnxt/bnxt_reps.c @@ -55,12 +55,12 @@ bnxt_vfr_recv(uint16_t port_id, uint16_t queue_id, struct rte_mbuf *mbuf) mask = rep_rxr->rx_ring_struct->ring_mask; /* Put this mbuf on the RxQ of the Representor */ - prod_rx_buf = &rep_rxr->rx_buf_ring[rep_rxr->rx_prod & mask]; + prod_rx_buf = &rep_rxr->rx_buf_ring[rep_rxr->rx_raw_prod & mask]; if (*prod_rx_buf == NULL) { *prod_rx_buf = mbuf; vfr_bp->rx_bytes[que] += mbuf->pkt_len; vfr_bp->rx_pkts[que]++; - rep_rxr->rx_prod++; + rep_rxr->rx_raw_prod++; } else { /* Representor Rx ring full, drop pkt */ vfr_bp->rx_drop_bytes[que] += mbuf->pkt_len; diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c index f83bcaba2..adddf9bc4 100644 --- a/drivers/net/bnxt/bnxt_ring.c +++ b/drivers/net/bnxt/bnxt_ring.c @@ -342,7 +342,8 @@ static void bnxt_set_db(struct bnxt *bp, struct bnxt_db_info *db, uint32_t ring_type, uint32_t map_idx, - uint32_t fid) + uint32_t fid, + uint32_t ring_mask) { if (BNXT_CHIP_P5(bp)) { if (BNXT_PF(bp)) @@ -381,6 +382,7 @@ static void bnxt_set_db(struct bnxt *bp, } db->db_64 = false; } + db->db_ring_mask = ring_mask; } static int bnxt_alloc_cmpl_ring(struct bnxt *bp, int queue_index, @@ -409,9 +411,9 @@ static int bnxt_alloc_cmpl_ring(struct bnxt *bp, int queue_index, if (rc) return rc; - cpr->cp_cons = 0; + cpr->cp_raw_cons = 0; bnxt_set_db(bp, &cpr->cp_db, ring_type, cp_ring_index, - cp_ring->fw_ring_id); + cp_ring->fw_ring_id, cp_ring->ring_mask); bnxt_db_cq(cpr); return 0; @@ -472,7 +474,7 @@ int bnxt_alloc_rxtx_nq_ring(struct bnxt *bp) } bnxt_set_db(bp, &nqr->cp_db, ring_type, ring_index, - ring->fw_ring_id); + ring->fw_ring_id, ring->ring_mask); bnxt_db_nq(nqr); bp->rxtx_nq_ring = nqr; @@ -515,11 +517,12 @@ static int bnxt_alloc_rx_ring(struct bnxt *bp, int queue_index) if (rc) return rc; - rxr->rx_prod = 0; + rxr->rx_raw_prod = 0; if (BNXT_HAS_RING_GRPS(bp)) bp->grp_info[queue_index].rx_fw_ring_id = ring->fw_ring_id; - bnxt_set_db(bp, &rxr->rx_db, ring_type, queue_index, ring->fw_ring_id); - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + bnxt_set_db(bp, &rxr->rx_db, ring_type, queue_index, ring->fw_ring_id, + ring->ring_mask); + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); return 0; } @@ -551,11 +554,12 @@ static int bnxt_alloc_rx_agg_ring(struct bnxt *bp, int queue_index) if (rc) return rc; - rxr->ag_prod = 0; + rxr->ag_raw_prod = 0; if (BNXT_HAS_RING_GRPS(bp)) bp->grp_info[queue_index].ag_fw_ring_id = ring->fw_ring_id; - bnxt_set_db(bp, &rxr->ag_db, ring_type, map_idx, ring->fw_ring_id); - bnxt_db_write(&rxr->ag_db, rxr->ag_prod); + bnxt_set_db(bp, &rxr->ag_db, ring_type, map_idx, ring->fw_ring_id, + ring->ring_mask); + bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod); return 0; } @@ -604,8 +608,8 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index) rc = -ENOMEM; goto err_out; } - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); - bnxt_db_write(&rxr->ag_db, rxr->ag_prod); + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); + bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod); } rxq->index = queue_index; #if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) @@ -710,8 +714,8 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp) bnxt_rx_queue_release_op(rxq); return -ENOMEM; } - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); - bnxt_db_write(&rxr->ag_db, rxr->ag_prod); + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); + bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod); rxq->index = i; #if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) bnxt_rxq_vec_setup(rxq); @@ -744,7 +748,8 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp) if (rc) goto err_out; - bnxt_set_db(bp, &txr->tx_db, ring_type, i, ring->fw_ring_id); + bnxt_set_db(bp, &txr->tx_db, ring_type, i, ring->fw_ring_id, + ring->ring_mask); txq->index = idx; bnxt_hwrm_set_ring_coal(bp, &coal, cp_ring->fw_ring_id); } @@ -777,10 +782,10 @@ int bnxt_alloc_async_cp_ring(struct bnxt *bp) if (rc) return rc; - cpr->cp_cons = 0; + cpr->cp_raw_cons = 0; cpr->valid = 0; bnxt_set_db(bp, &cpr->cp_db, ring_type, 0, - cp_ring->fw_ring_id); + cp_ring->fw_ring_id, cp_ring->ring_mask); if (BNXT_HAS_NQ(bp)) bnxt_db_nq(cpr); diff --git a/drivers/net/bnxt/bnxt_ring.h b/drivers/net/bnxt/bnxt_ring.h index 0a4685d16..49ae5c3c6 100644 --- a/drivers/net/bnxt/bnxt_ring.h +++ b/drivers/net/bnxt/bnxt_ring.h @@ -10,8 +10,9 @@ #include -#define RING_ADV(ring, idx, n) (((idx) + (n)) & (ring)->ring_mask) -#define RING_NEXT(ring, idx) RING_ADV(ring, idx, 1) +#define RING_ADV(idx, n) ((idx) + (n)) +#define RING_NEXT(idx) RING_ADV(idx, 1) +#define RING_IDX(ring, idx) ((idx) & (ring)->ring_mask) #define DB_IDX_MASK 0xffffff #define DB_IDX_VALID (0x1 << 26) @@ -82,38 +83,51 @@ void bnxt_free_rxtx_nq_ring(struct bnxt *bp); static inline void bnxt_db_write(struct bnxt_db_info *db, uint32_t idx) { - if (db->db_64) - rte_write64(db->db_key64 | idx, db->doorbell); - else - rte_write32(db->db_key32 | idx, db->doorbell); + uint32_t db_idx = DB_RING_IDX(db, idx); + void *doorbell = db->doorbell; + + if (db->db_64) { + uint64_t key_idx = db->db_key64 | db_idx; + + rte_write64(key_idx, doorbell); + } else { + uint32_t key_idx = db->db_key32 | db_idx; + + rte_write32(key_idx, doorbell); + } } /* Ring an NQ doorbell and disable interrupts for the ring. */ static inline void bnxt_db_nq(struct bnxt_cp_ring_info *cpr) { + uint32_t db_idx = DB_RING_IDX(&cpr->cp_db, cpr->cp_raw_cons); + uint64_t key_idx = cpr->cp_db.db_key64 | DBR_TYPE_NQ | db_idx; + void *doorbell = cpr->cp_db.doorbell; + + if (unlikely(!cpr->cp_db.db_64)) return; - rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ | - RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons), - cpr->cp_db.doorbell); + rte_write64(key_idx, doorbell); } /* Ring an NQ doorbell and enable interrupts for the ring. */ static inline void bnxt_db_nq_arm(struct bnxt_cp_ring_info *cpr) { + uint32_t db_idx = DB_RING_IDX(&cpr->cp_db, cpr->cp_raw_cons); + uint64_t key_idx = cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM | db_idx; + void *doorbell = cpr->cp_db.doorbell; + if (unlikely(!cpr->cp_db.db_64)) return; - rte_write64(cpr->cp_db.db_key64 | DBR_TYPE_NQ_ARM | - RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons), - cpr->cp_db.doorbell); + rte_write64(key_idx, doorbell); } static inline void bnxt_db_cq(struct bnxt_cp_ring_info *cpr) { struct bnxt_db_info *db = &cpr->cp_db; - uint32_t idx = RING_CMP(cpr->cp_ring_struct, cpr->cp_raw_cons); + uint32_t idx = DB_RING_IDX(&cpr->cp_db, cpr->cp_raw_cons); if (db->db_64) { uint64_t key_idx = db->db_key64 | idx; diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index e9c4fffed..445e6150d 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -39,12 +39,15 @@ static inline struct rte_mbuf *__bnxt_alloc_rx_data(struct rte_mempool *mb) static inline int bnxt_alloc_rx_data(struct bnxt_rx_queue *rxq, struct bnxt_rx_ring_info *rxr, - uint16_t prod) + uint16_t raw_prod) { - struct rx_prod_pkt_bd *rxbd = &rxr->rx_desc_ring[prod]; - struct rte_mbuf **rx_buf = &rxr->rx_buf_ring[prod]; + uint16_t prod = RING_IDX(rxr->rx_ring_struct, raw_prod); + struct rx_prod_pkt_bd *rxbd; + struct rte_mbuf **rx_buf; struct rte_mbuf *mbuf; + rxbd = &rxr->rx_desc_ring[prod]; + rx_buf = &rxr->rx_buf_ring[prod]; mbuf = __bnxt_alloc_rx_data(rxq->mb_pool); if (!mbuf) { rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); @@ -61,12 +64,15 @@ static inline int bnxt_alloc_rx_data(struct bnxt_rx_queue *rxq, static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq, struct bnxt_rx_ring_info *rxr, - uint16_t prod) + uint16_t raw_prod) { - struct rx_prod_pkt_bd *rxbd = &rxr->ag_desc_ring[prod]; - struct rte_mbuf **rx_buf = &rxr->ag_buf_ring[prod]; + uint16_t prod = RING_IDX(rxr->ag_ring_struct, raw_prod); + struct rx_prod_pkt_bd *rxbd; + struct rte_mbuf **rx_buf; struct rte_mbuf *mbuf; + rxbd = &rxr->ag_desc_ring[prod]; + rx_buf = &rxr->ag_buf_ring[prod]; if (rxbd == NULL) { PMD_DRV_LOG(ERR, "Jumbo Frame. rxbd is NULL\n"); return -EINVAL; @@ -94,10 +100,11 @@ static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq, static inline void bnxt_reuse_rx_mbuf(struct bnxt_rx_ring_info *rxr, struct rte_mbuf *mbuf) { - uint16_t prod = RING_NEXT(rxr->rx_ring_struct, rxr->rx_prod); + uint16_t prod, raw_prod = RING_NEXT(rxr->rx_raw_prod); struct rte_mbuf **prod_rx_buf; struct rx_prod_pkt_bd *prod_bd; + prod = RING_IDX(rxr->rx_ring_struct, raw_prod); prod_rx_buf = &rxr->rx_buf_ring[prod]; RTE_ASSERT(*prod_rx_buf == NULL); @@ -109,7 +116,7 @@ static inline void bnxt_reuse_rx_mbuf(struct bnxt_rx_ring_info *rxr, prod_bd->address = rte_cpu_to_le_64(rte_mbuf_data_iova_default(mbuf)); - rxr->rx_prod = prod; + rxr->rx_raw_prod = raw_prod; } static inline @@ -119,7 +126,7 @@ struct rte_mbuf *bnxt_consume_rx_buf(struct bnxt_rx_ring_info *rxr, struct rte_mbuf **cons_rx_buf; struct rte_mbuf *mbuf; - cons_rx_buf = &rxr->rx_buf_ring[cons]; + cons_rx_buf = &rxr->rx_buf_ring[RING_IDX(rxr->rx_ring_struct, cons)]; RTE_ASSERT(*cons_rx_buf != NULL); mbuf = *cons_rx_buf; *cons_rx_buf = NULL; @@ -175,7 +182,7 @@ static void bnxt_tpa_start(struct bnxt_rx_queue *rxq, mbuf->ol_flags |= PKT_RX_L4_CKSUM_GOOD; /* recycle next mbuf */ - data_cons = RING_NEXT(rxr->rx_ring_struct, data_cons); + data_cons = RING_NEXT(data_cons); bnxt_reuse_rx_mbuf(rxr, bnxt_consume_rx_buf(rxr, data_cons)); } @@ -198,18 +205,20 @@ static int bnxt_agg_bufs_valid(struct bnxt_cp_ring_info *cpr, static int bnxt_prod_ag_mbuf(struct bnxt_rx_queue *rxq) { struct bnxt_rx_ring_info *rxr = rxq->rx_ring; - uint16_t next = RING_NEXT(rxr->ag_ring_struct, rxr->ag_prod); + uint16_t raw_next = RING_NEXT(rxr->ag_raw_prod); + uint16_t bmap_next = RING_IDX(rxr->ag_ring_struct, raw_next); /* TODO batch allocation for better performance */ - while (rte_bitmap_get(rxr->ag_bitmap, next)) { - if (unlikely(bnxt_alloc_ag_data(rxq, rxr, next))) { - PMD_DRV_LOG(ERR, - "agg mbuf alloc failed: prod=0x%x\n", next); + while (rte_bitmap_get(rxr->ag_bitmap, bmap_next)) { + if (unlikely(bnxt_alloc_ag_data(rxq, rxr, raw_next))) { + PMD_DRV_LOG(ERR, "agg mbuf alloc failed: prod=0x%x\n", + raw_next); break; } - rte_bitmap_clear(rxr->ag_bitmap, next); - rxr->ag_prod = next; - next = RING_NEXT(rxr->ag_ring_struct, next); + rte_bitmap_clear(rxr->ag_bitmap, bmap_next); + rxr->ag_raw_prod = raw_next; + raw_next = RING_NEXT(raw_next); + bmap_next = RING_IDX(rxr->ag_ring_struct, raw_next); } return 0; @@ -666,7 +675,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, struct rx_pkt_cmpl *rxcmp; struct rx_pkt_cmpl_hi *rxcmp1; uint32_t tmp_raw_cons = *raw_cons; - uint16_t cons, prod, cp_cons = + uint16_t cons, raw_prod, cp_cons = RING_CMP(cpr->cp_ring_struct, tmp_raw_cons); struct rte_mbuf *mbuf; int rc = 0; @@ -726,7 +735,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, if (agg_buf && !bnxt_agg_bufs_valid(cpr, agg_buf, tmp_raw_cons)) return -EBUSY; - prod = rxr->rx_prod; + raw_prod = rxr->rx_raw_prod; cons = rxcmp->opaque; mbuf = bnxt_consume_rx_buf(rxr, cons); @@ -786,13 +795,14 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, * calls in favour of a tight loop with the same function being called * in it. */ - prod = RING_NEXT(rxr->rx_ring_struct, prod); - if (bnxt_alloc_rx_data(rxq, rxr, prod)) { - PMD_DRV_LOG(ERR, "mbuf alloc failed with prod=0x%x\n", prod); + raw_prod = RING_NEXT(raw_prod); + if (bnxt_alloc_rx_data(rxq, rxr, raw_prod)) { + PMD_DRV_LOG(ERR, "mbuf alloc failed with prod=0x%x\n", + raw_prod); rc = -ENOMEM; goto rx; } - rxr->rx_prod = prod; + rxr->rx_raw_prod = raw_prod; if (BNXT_TRUFLOW_EN(bp) && (BNXT_VF_IS_TRUSTED(bp) || BNXT_PF(bp)) && vfr_flag) { @@ -826,13 +836,13 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, struct bnxt_rx_queue *rxq = rx_queue; struct bnxt_cp_ring_info *cpr = rxq->cp_ring; struct bnxt_rx_ring_info *rxr = rxq->rx_ring; + uint16_t rx_raw_prod = rxr->rx_raw_prod; + uint16_t ag_raw_prod = rxr->ag_raw_prod; uint32_t raw_cons = cpr->cp_raw_cons; uint32_t cons; int nb_rx_pkts = 0; int nb_rep_rx_pkts = 0; struct rx_pkt_cmpl *rxcmp; - uint16_t prod = rxr->rx_prod; - uint16_t ag_prod = rxr->ag_prod; int rc = 0; bool evt = false; @@ -850,8 +860,8 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, */ while (unlikely(rxq->rxrearm_nb)) { if (!bnxt_alloc_rx_data(rxq, rxr, rxq->rxrearm_start)) { - rxr->rx_prod = rxq->rxrearm_start; - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + rxr->rx_raw_prod = rxq->rxrearm_start; + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); rxq->rxrearm_start++; rxq->rxrearm_nb--; } else { @@ -895,7 +905,7 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, break; /* Post some Rx buf early in case of larger burst processing */ if (nb_rx_pkts == BNXT_RX_POST_THRESH) - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); } cpr->cp_raw_cons = raw_cons; @@ -907,23 +917,27 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, goto done; } - if (prod != rxr->rx_prod) - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + rte_compiler_barrier(); + if (rx_raw_prod != rxr->rx_raw_prod) + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); + rte_compiler_barrier(); /* Ring the AGG ring DB */ - if (ag_prod != rxr->ag_prod) - bnxt_db_write(&rxr->ag_db, rxr->ag_prod); + if (ag_raw_prod != rxr->ag_raw_prod) + bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod); bnxt_db_cq(cpr); /* Attempt to alloc Rx buf in case of a previous allocation failure. */ if (rc == -ENOMEM) { - int i = RING_NEXT(rxr->rx_ring_struct, prod); + int i = RING_NEXT(rx_raw_prod); int cnt = nb_rx_pkts; - for (; cnt; - i = RING_NEXT(rxr->rx_ring_struct, i), cnt--) { - struct rte_mbuf **rx_buf = &rxr->rx_buf_ring[i]; + for (; nb_rx_pkts; i = RING_NEXT(i), cnt--) { + struct rte_mbuf **rx_buf; + uint16_t rx_raw_prod = RING_IDX(rxr->rx_ring_struct, i); + + rx_buf = &rxr->rx_buf_ring[rx_raw_prod]; /* Buffer already allocated for this index. */ if (*rx_buf != NULL && *rx_buf != &rxq->fake_mbuf) @@ -931,8 +945,8 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, /* This slot is empty. Alloc buffer for Rx */ if (!bnxt_alloc_rx_data(rxq, rxr, i)) { - rxr->rx_prod = i; - bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + rxr->rx_raw_prod = i; + bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod); } else { PMD_DRV_LOG(ERR, "Alloc mbuf failed\n"); break; @@ -1100,7 +1114,7 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) { struct bnxt_rx_ring_info *rxr; struct bnxt_ring *ring; - uint32_t prod, type; + uint32_t raw_prod, type; unsigned int i; uint16_t size; @@ -1119,18 +1133,18 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) ring = rxr->rx_ring_struct; bnxt_init_rxbds(ring, type, size); - prod = rxr->rx_prod; + raw_prod = rxr->rx_raw_prod; for (i = 0; i < ring->ring_size; i++) { if (unlikely(!rxr->rx_buf_ring[i])) { - if (bnxt_alloc_rx_data(rxq, rxr, prod) != 0) { + if (bnxt_alloc_rx_data(rxq, rxr, raw_prod) != 0) { PMD_DRV_LOG(WARNING, "init'ed rx ring %d with %d/%d mbufs only\n", rxq->queue_id, i, ring->ring_size); break; } } - rxr->rx_prod = prod; - prod = RING_NEXT(rxr->rx_ring_struct, prod); + rxr->rx_raw_prod = raw_prod; + raw_prod = RING_NEXT(raw_prod); } /* Initialize dummy mbuf pointers for vector mode rx. */ @@ -1142,19 +1156,19 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) ring = rxr->ag_ring_struct; type = RX_PROD_AGG_BD_TYPE_RX_PROD_AGG; bnxt_init_rxbds(ring, type, size); - prod = rxr->ag_prod; + raw_prod = rxr->ag_raw_prod; for (i = 0; i < ring->ring_size; i++) { if (unlikely(!rxr->ag_buf_ring[i])) { - if (bnxt_alloc_ag_data(rxq, rxr, prod) != 0) { + if (bnxt_alloc_ag_data(rxq, rxr, raw_prod) != 0) { PMD_DRV_LOG(WARNING, "init'ed AG ring %d with %d/%d mbufs only\n", rxq->queue_id, i, ring->ring_size); break; } } - rxr->ag_prod = prod; - prod = RING_NEXT(rxr->ag_ring_struct, prod); + rxr->ag_raw_prod = raw_prod; + raw_prod = RING_NEXT(raw_prod); } PMD_DRV_LOG(DEBUG, "AGG Done!\n"); diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h index 2a53cf87b..af6ff0972 100644 --- a/drivers/net/bnxt/bnxt_rxr.h +++ b/drivers/net/bnxt/bnxt_rxr.h @@ -50,8 +50,8 @@ struct bnxt_tpa_info { }; struct bnxt_rx_ring_info { - uint16_t rx_prod; - uint16_t ag_prod; + uint16_t rx_raw_prod; + uint16_t ag_raw_prod; uint16_t rx_cons; /* Needed for representor */ struct bnxt_db_info rx_db; struct bnxt_db_info ag_db; diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_common.h b/drivers/net/bnxt/bnxt_rxtx_vec_common.h index d540e9eee..8a7772a7e 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_common.h +++ b/drivers/net/bnxt/bnxt_rxtx_vec_common.h @@ -103,23 +103,23 @@ static inline void bnxt_tx_cmp_vec_fast(struct bnxt_tx_queue *txq, int nr_pkts) { struct bnxt_tx_ring_info *txr = txq->tx_ring; - uint32_t ring_mask = txr->tx_ring_struct->ring_mask; struct rte_mbuf **free = txq->free; - uint16_t cons = txr->tx_cons; + uint16_t cons, raw_cons = txr->tx_raw_cons; unsigned int blk = 0; + uint32_t ring_mask = txr->tx_ring_struct->ring_mask; while (nr_pkts--) { struct bnxt_sw_tx_bd *tx_buf; + cons = raw_cons++ & ring_mask; tx_buf = &txr->tx_buf_ring[cons]; - cons = (cons + 1) & ring_mask; free[blk++] = tx_buf->mbuf; tx_buf->mbuf = NULL; } if (blk) rte_mempool_put_bulk(free[0]->pool, (void **)free, blk); - txr->tx_cons = cons; + txr->tx_raw_cons = raw_cons; } static inline void @@ -127,7 +127,7 @@ bnxt_tx_cmp_vec(struct bnxt_tx_queue *txq, int nr_pkts) { struct bnxt_tx_ring_info *txr = txq->tx_ring; struct rte_mbuf **free = txq->free; - uint16_t cons = txr->tx_cons; + uint16_t cons, raw_cons = txr->tx_raw_cons; unsigned int blk = 0; uint32_t ring_mask = txr->tx_ring_struct->ring_mask; @@ -135,8 +135,8 @@ bnxt_tx_cmp_vec(struct bnxt_tx_queue *txq, int nr_pkts) struct bnxt_sw_tx_bd *tx_buf; struct rte_mbuf *mbuf; + cons = raw_cons++ & ring_mask; tx_buf = &txr->tx_buf_ring[cons]; - cons = (cons + 1) & ring_mask; mbuf = rte_pktmbuf_prefree_seg(tx_buf->mbuf); if (unlikely(mbuf == NULL)) continue; @@ -151,6 +151,6 @@ bnxt_tx_cmp_vec(struct bnxt_tx_queue *txq, int nr_pkts) if (blk) rte_mempool_put_bulk(free[0]->pool, (void **)free, blk); - txr->tx_cons = cons; + txr->tx_raw_cons = raw_cons; } #endif /* _BNXT_RXTX_VEC_COMMON_H_ */ diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c index de1d96570..81f9a7da2 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_neon.c +++ b/drivers/net/bnxt/bnxt_rxtx_vec_neon.c @@ -295,8 +295,7 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, out: if (nb_rx_pkts) { - rxr->rx_prod = - RING_ADV(rxr->rx_ring_struct, rxr->rx_prod, nb_rx_pkts); + rxr->rx_raw_prod = RING_ADV(rxr->rx_raw_prod, nb_rx_pkts); rxq->rxrearm_nb += nb_rx_pkts; cpr->cp_raw_cons += 2 * nb_rx_pkts; @@ -353,7 +352,7 @@ bnxt_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts, { struct bnxt_tx_queue *txq = tx_queue; struct bnxt_tx_ring_info *txr = txq->tx_ring; - uint16_t prod = txr->tx_prod; + uint16_t tx_prod, tx_raw_prod = txr->tx_raw_prod; struct rte_mbuf *tx_mbuf; struct tx_bd_long *txbd = NULL; struct bnxt_sw_tx_bd *tx_buf; @@ -370,16 +369,17 @@ bnxt_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts, tx_mbuf = *tx_pkts++; rte_prefetch0(tx_mbuf); - tx_buf = &txr->tx_buf_ring[prod]; + tx_prod = RING_IDX(txr->tx_ring_struct, tx_raw_prod); + tx_buf = &txr->tx_buf_ring[tx_prod]; tx_buf->mbuf = tx_mbuf; tx_buf->nr_bds = 1; - txbd = &txr->tx_desc_ring[prod]; + txbd = &txr->tx_desc_ring[tx_prod]; txbd->address = tx_mbuf->buf_iova + tx_mbuf->data_off; txbd->len = tx_mbuf->data_len; txbd->flags_type = bnxt_xmit_flags_len(tx_mbuf->data_len, TX_BD_FLAGS_NOCMPL); - prod = RING_NEXT(txr->tx_ring_struct, prod); + tx_raw_prod = RING_NEXT(tx_raw_prod); to_send--; } @@ -390,9 +390,9 @@ bnxt_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts, } rte_compiler_barrier(); - bnxt_db_write(&txr->tx_db, prod); + bnxt_db_write(&txr->tx_db, tx_raw_prod); - txr->tx_prod = prod; + txr->tx_raw_prod = tx_raw_prod; return nb_pkts; } diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c index e12bf8bb7..ce92629ab 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c +++ b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c @@ -277,8 +277,7 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, out: if (nb_rx_pkts) { - rxr->rx_prod = - RING_ADV(rxr->rx_ring_struct, rxr->rx_prod, nb_rx_pkts); + rxr->rx_raw_prod = RING_ADV(rxr->rx_raw_prod, nb_rx_pkts); rxq->rxrearm_nb += nb_rx_pkts; cpr->cp_raw_cons += 2 * nb_rx_pkts; @@ -351,11 +350,12 @@ bnxt_xmit_fixed_burst_vec(struct bnxt_tx_queue *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) { struct bnxt_tx_ring_info *txr = txq->tx_ring; - uint16_t tx_prod = txr->tx_prod; + uint16_t tx_prod, tx_raw_prod = txr->tx_raw_prod; struct tx_bd_long *txbd; struct bnxt_sw_tx_bd *tx_buf; uint16_t to_send; + tx_prod = RING_IDX(txr->tx_ring_struct, tx_raw_prod); txbd = &txr->tx_desc_ring[tx_prod]; tx_buf = &txr->tx_buf_ring[tx_prod]; @@ -395,10 +395,10 @@ bnxt_xmit_fixed_burst_vec(struct bnxt_tx_queue *txq, struct rte_mbuf **tx_pkts, txbd[-1].opaque = nb_pkts; txbd[-1].flags_type &= ~TX_BD_LONG_FLAGS_NO_CMPL; - tx_prod = RING_ADV(txr->tx_ring_struct, tx_prod, nb_pkts); - bnxt_db_write(&txr->tx_db, tx_prod); + tx_raw_prod += nb_pkts; + bnxt_db_write(&txr->tx_db, tx_raw_prod); - txr->tx_prod = tx_prod; + txr->tx_raw_prod = tx_raw_prod; return nb_pkts; } @@ -435,8 +435,8 @@ bnxt_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts, * Ensure that a ring wrap does not occur within a call to * bnxt_xmit_fixed_burst_vec(). */ - num = RTE_MIN(num, - ring_size - (txr->tx_prod & (ring_size - 1))); + num = RTE_MIN(num, ring_size - + (txr->tx_raw_prod & (ring_size - 1))); ret = bnxt_xmit_fixed_burst_vec(txq, &tx_pkts[nb_sent], num); nb_sent += ret; nb_pkts -= ret; diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c index fb358d6f1..9cf0126d2 100644 --- a/drivers/net/bnxt/bnxt_txr.c +++ b/drivers/net/bnxt/bnxt_txr.c @@ -110,12 +110,14 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, struct tx_bd_long **last_txbd) { struct bnxt_tx_ring_info *txr = txq->tx_ring; + struct bnxt_ring *ring = txr->tx_ring_struct; uint32_t outer_tpid_bd = 0; struct tx_bd_long *txbd; struct tx_bd_long_hi *txbd1 = NULL; uint32_t vlan_tag_flags; bool long_bd = false; unsigned short nr_bds = 0; + uint16_t prod; struct rte_mbuf *m_seg; struct bnxt_sw_tx_bd *tx_buf; static const uint32_t lhint_arr[4] = { @@ -168,11 +170,12 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, /* Check non zero data_len */ RTE_VERIFY(tx_pkt->data_len); - tx_buf = &txr->tx_buf_ring[txr->tx_prod]; + prod = RING_IDX(ring, txr->tx_raw_prod); + tx_buf = &txr->tx_buf_ring[prod]; tx_buf->mbuf = tx_pkt; tx_buf->nr_bds = nr_bds; - txbd = &txr->tx_desc_ring[txr->tx_prod]; + txbd = &txr->tx_desc_ring[prod]; txbd->opaque = *coal_pkts; txbd->flags_type = nr_bds << TX_BD_LONG_FLAGS_BD_CNT_SFT; txbd->flags_type |= TX_BD_SHORT_FLAGS_COAL_NOW; @@ -210,10 +213,10 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, TX_BD_LONG_CFA_META_VLAN_TPID_TPID8100; } - txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod); + txr->tx_raw_prod = RING_NEXT(txr->tx_raw_prod); - txbd1 = (struct tx_bd_long_hi *) - &txr->tx_desc_ring[txr->tx_prod]; + prod = RING_IDX(ring, txr->tx_raw_prod); + txbd1 = (struct tx_bd_long_hi *)&txr->tx_desc_ring[prod]; txbd1->lflags = 0; txbd1->cfa_meta = vlan_tag_flags; /* Legacy tx_bd_long_hi->mss = @@ -318,11 +321,13 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, while (m_seg) { /* Check non zero data_len */ RTE_VERIFY(m_seg->data_len); - txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod); - tx_buf = &txr->tx_buf_ring[txr->tx_prod]; + txr->tx_raw_prod = RING_NEXT(txr->tx_raw_prod); + + prod = RING_IDX(ring, txr->tx_raw_prod); + tx_buf = &txr->tx_buf_ring[prod]; tx_buf->mbuf = m_seg; - txbd = &txr->tx_desc_ring[txr->tx_prod]; + txbd = &txr->tx_desc_ring[prod]; txbd->address = rte_cpu_to_le_64(rte_mbuf_data_iova(m_seg)); txbd->flags_type = TX_BD_SHORT_TYPE_TX_BD_SHORT; txbd->len = m_seg->data_len; @@ -332,7 +337,7 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, txbd->flags_type |= TX_BD_LONG_FLAGS_PACKET_END; - txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod); + txr->tx_raw_prod = RING_NEXT(txr->tx_raw_prod); return 0; } @@ -344,8 +349,9 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt, static void bnxt_tx_cmp_fast(struct bnxt_tx_queue *txq, int nr_pkts) { struct bnxt_tx_ring_info *txr = txq->tx_ring; + struct bnxt_ring *ring = txr->tx_ring_struct; struct rte_mbuf **free = txq->free; - uint16_t cons = txr->tx_cons; + uint16_t raw_cons = txr->tx_raw_cons; unsigned int blk = 0; int i, j; @@ -353,7 +359,7 @@ static void bnxt_tx_cmp_fast(struct bnxt_tx_queue *txq, int nr_pkts) struct bnxt_sw_tx_bd *tx_buf; unsigned short nr_bds; - tx_buf = &txr->tx_buf_ring[cons]; + tx_buf = &txr->tx_buf_ring[RING_IDX(ring, raw_cons)]; nr_bds = tx_buf->nr_bds; for (j = 0; j < nr_bds; j++) { if (tx_buf->mbuf) { @@ -361,35 +367,38 @@ static void bnxt_tx_cmp_fast(struct bnxt_tx_queue *txq, int nr_pkts) free[blk++] = tx_buf->mbuf; tx_buf->mbuf = NULL; } - cons = RING_NEXT(txr->tx_ring_struct, cons); - tx_buf = &txr->tx_buf_ring[cons]; + raw_cons = RING_NEXT(raw_cons); + tx_buf = &txr->tx_buf_ring[RING_IDX(ring, raw_cons)]; } } if (blk) rte_mempool_put_bulk(free[0]->pool, (void *)free, blk); - txr->tx_cons = cons; + txr->tx_raw_cons = raw_cons; } static void bnxt_tx_cmp(struct bnxt_tx_queue *txq, int nr_pkts) { struct bnxt_tx_ring_info *txr = txq->tx_ring; + struct bnxt_ring *ring = txr->tx_ring_struct; struct rte_mempool *pool = NULL; struct rte_mbuf **free = txq->free; - uint16_t cons = txr->tx_cons; + uint16_t raw_cons = txr->tx_raw_cons; unsigned int blk = 0; int i, j; for (i = 0; i < nr_pkts; i++) { struct rte_mbuf *mbuf; - struct bnxt_sw_tx_bd *tx_buf = &txr->tx_buf_ring[cons]; - unsigned short nr_bds = tx_buf->nr_bds; + struct bnxt_sw_tx_bd *tx_buf; + unsigned short nr_bds; + tx_buf = &txr->tx_buf_ring[RING_IDX(ring, raw_cons)]; + nr_bds = tx_buf->nr_bds; for (j = 0; j < nr_bds; j++) { mbuf = tx_buf->mbuf; tx_buf->mbuf = NULL; - cons = RING_NEXT(txr->tx_ring_struct, cons); - tx_buf = &txr->tx_buf_ring[cons]; + raw_cons = RING_NEXT(raw_cons); + tx_buf = &txr->tx_buf_ring[RING_IDX(ring, raw_cons)]; if (!mbuf) /* long_bd's tx_buf ? */ continue; @@ -422,7 +431,7 @@ static void bnxt_tx_cmp(struct bnxt_tx_queue *txq, int nr_pkts) if (blk) rte_mempool_put_bulk(pool, (void *)free, blk); - txr->tx_cons = cons; + txr->tx_raw_cons = raw_cons; } static int bnxt_handle_tx_cp(struct bnxt_tx_queue *txq) @@ -504,7 +513,7 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, if (likely(nb_tx_pkts)) { /* Request a completion on the last packet */ last_txbd->flags_type &= ~TX_BD_LONG_FLAGS_NO_CMPL; - bnxt_db_write(&txq->tx_ring->tx_db, txq->tx_ring->tx_prod); + bnxt_db_write(&txq->tx_ring->tx_db, txq->tx_ring->tx_raw_prod); } return nb_tx_pkts; diff --git a/drivers/net/bnxt/bnxt_txr.h b/drivers/net/bnxt/bnxt_txr.h index 3dfc8ef9b..447c68b7d 100644 --- a/drivers/net/bnxt/bnxt_txr.h +++ b/drivers/net/bnxt/bnxt_txr.h @@ -12,8 +12,8 @@ #define BNXT_MIN_PKT_SIZE 52 struct bnxt_tx_ring_info { - uint16_t tx_prod; - uint16_t tx_cons; + uint16_t tx_raw_prod; + uint16_t tx_raw_cons; struct bnxt_db_info tx_db; struct tx_bd_long *tx_desc_ring; @@ -31,7 +31,7 @@ struct bnxt_sw_tx_bd { static inline uint32_t bnxt_tx_bds_in_hw(struct bnxt_tx_queue *txq) { - return ((txq->tx_ring->tx_prod - txq->tx_ring->tx_cons) & + return ((txq->tx_ring->tx_raw_prod - txq->tx_ring->tx_raw_cons) & txq->tx_ring->tx_ring_struct->ring_mask); }