From patchwork Tue Dec 8 20:11:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84821 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 70C60A09E9; Tue, 8 Dec 2020 21:12:06 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 80788C922; Tue, 8 Dec 2020 21:11:45 +0100 (CET) Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by dpdk.org (Postfix) with ESMTP id 98B8FA3 for ; Tue, 8 Dec 2020 21:11:42 +0100 (CET) Received: by mail-pl1-f180.google.com with SMTP id x15so7557691pll.2 for ; Tue, 08 Dec 2020 12:11:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=nO7YXD+wpLvax3o8JJncR5AxdXEhH7JUi6HlOIpmbxU=; b=AW9OhXgwdRFeH0L5ruJATutQXCSDc1ULRRpteYOwXCRXpoh6AfGKW0c5TS1bgj1CKD 1i9tNXSNNSzFX1eEoC4B1Gl20bgErC1cJoTu2ir7qfbEMFxJlCvUmQMMrnpbHTviaU0C IqfRDlK4aPHRBwaAtoOF4bDi1gPbgzM/E1KJw= 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; bh=nO7YXD+wpLvax3o8JJncR5AxdXEhH7JUi6HlOIpmbxU=; b=iqiqKLXc9a0tFBoBvVs373PgmddzIQbr7sl/CFnaorWXsN3I4Wr+SO4fXub9pQ8eSr 9iqYrcwXbL3KKVEVg4z3isCOeWrH2gSHsyh9gxsCSYKDexe/0TOZmbOLoZE4/JV+f4lw S0J7hzxWibzlqoPeRigNfx18Wo2xScBR0jHQ8txnhb9v3TJ6QHeyTka8vDUZH2kmtxgc V3fWrVVoxWoMMTE+WlxpDQasX/x/XfKS62nqzjohV98tEIzfgabLEuzvnJsN2Z7JxUMD zeY9fZ90faTwC4bHWtKFC47To33kRNY0P7/IlaCt+RYkxB6oon2ipE000c2B9m1Ra6np zEWw== X-Gm-Message-State: AOAM530ARkNRzREw7009PpYFTasAKphu8bkQ2ASZu6OjSWw3L7+dO5qX bRWNmf1C7MJHchliu1qqv3MCifgrP6OcWdEEdYGwHXMRSVJiiL8Ck3VBkHf43pbzbWG1NggURr8 FJiOBgGZSx2b3e2jkLnl86jZkTcVF0lCKX5N/xPIHh0Om/krQdvit2lEwshr8W9KKqQ== X-Google-Smtp-Source: ABdhPJyHjxI+H/z1ji2dNFpemgVEvy9wuiwRi7/nZeUi9peGiHPUm2vEuuyBk/S8hfHceT3UWLuX4Q== X-Received: by 2002:a17:902:eb0c:b029:db:c0d6:6289 with SMTP id l12-20020a170902eb0cb02900dbc0d66289mr3763004plb.12.1607458300093; Tue, 08 Dec 2020 12:11:40 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.38 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:39 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Samik Gupta , stable@dpdk.org Date: Tue, 8 Dec 2020 12:11:18 -0800 Message-Id: <20201208201134.47844-2-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84822 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 22B4CA09E9; Tue, 8 Dec 2020 21:12:33 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id ACECFC982; Tue, 8 Dec 2020 21:11:47 +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 C3165C8FA for ; Tue, 8 Dec 2020 21:11:43 +0100 (CET) Received: by mail-pl1-f196.google.com with SMTP id y10so6089089plr.10 for ; Tue, 08 Dec 2020 12:11:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=1DPiCQMmtWqEoY73vSlXeoeOjxf5AB88I8TCGzGUEq0=; b=bEh4yKly+Y8bdc3YLfP/EfL2drjMAVLFh1oDQn7WDSVWw9WXY3ej+CICK7L/TCQTKh s3Vu8qrF/JHlFwoHsaXazFunImAL/+HCmzIpAJHHYjTCCOVVsvP5qmb9gmaCLoili3d1 MXeWYOgx1gr3r9eEVsHIheOUoX+We+3+wdrhE= 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; bh=1DPiCQMmtWqEoY73vSlXeoeOjxf5AB88I8TCGzGUEq0=; b=Rg8rvQaQ2iYW99fS3t1AgvwW4508Ce8aSIF228VIc7ozkao/9X06he+R4pZYsxSJRP AVfZCAteIUAQeJKHBBC5/nM2+CiqviAjF/BbMg1HLhsxOj3tU8RNdQwxjNHBuTIUi+bA Hvh1k0kt9YXbKK/qn0NfcIrXhCPeB93DwIHb0rqua+r0Z8PoaWeJoBucaJXQQOOrzDo9 k/xxe8DuVRiceG3oJFlaQhZi6N2chQ0wHXCeVXRpHWkZGZJIaZn7edqErhiNjsuzvVdJ M6KmPLQPSxyUxddweC6eOH7moe8XHqPi4071fb9eJDLdPlKVzSAFcGHGxoFA3uQ4tRy8 anXw== X-Gm-Message-State: AOAM533mR9fROchCkyBQDDKlb68KTtvRWN5JOkPZ3v7mQxpBq0qGu/Qp FQaDW4jTP23rSbhM/6dSPWaWzWRf8aaukSIiEIMDlSOhjWX4gsjPvFyu/Qohly/sRop/HVs2lB8 LLFgjdUIWNwizz8J9bYFZkLN5MGk/Mci0lf8XDkV8volaCU5s2QYN8rrI2Fy53wLFIA== X-Google-Smtp-Source: ABdhPJwc91gCR0M1Va0Hqq3faWNu0Z6mmAvXDjR3Ga+6lbtZoSHn6RvRzlxSD5W5C6QSpgo2kGNjOA== X-Received: by 2002:a17:902:8a93:b029:d9:d4a5:dc3c with SMTP id p19-20020a1709028a93b02900d9d4a5dc3cmr22260833plo.19.1607458301478; Tue, 08 Dec 2020 12:11:41 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:40 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Samik Gupta , stable@dpdk.org, Lance Richardson , Somnath Kotur Date: Tue, 8 Dec 2020 12:11:19 -0800 Message-Id: <20201208201134.47844-3-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84823 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 47486A09E9; Tue, 8 Dec 2020 21:12:51 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 88DBAC9A0; Tue, 8 Dec 2020 21:11:49 +0100 (CET) Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by dpdk.org (Postfix) with ESMTP id 48D85C92A for ; Tue, 8 Dec 2020 21:11:45 +0100 (CET) Received: by mail-pl1-f194.google.com with SMTP id p6so7552120plo.6 for ; Tue, 08 Dec 2020 12:11:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=iPKY+I8vFCYh1myr1EZSVoFbuBWp++vJfNBSDNXdKu4=; b=IvSzeFEaa2FAhT+PtZ89Im6WO6OJDxJyCFC2WEMMqQ+Ai++8j5VD/7N7DfoF+EV9me 1maY+7DIn5iQbu3zhPqj+3Pat8lvVAmUNejoM+jG95LfB1tVqSuvH6SqDvuYBtsxQpZk 1AN//qvnPYHTymAOrJR2JcsEcaCfdfr6ec99Q= 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; bh=iPKY+I8vFCYh1myr1EZSVoFbuBWp++vJfNBSDNXdKu4=; b=oudf1w+4rt6lV+R+5NGcQyC9FPQcpmj3uJZCE+pWX+tKv/qsSlBZJ339d5GOiCfB9x CH+TTiyzFiqz7QX8rhMiztEgbB20sr3a/1pbQBmOVCAsEODKA6zNthn9klNgiBXwpdwP PsPERErhg9S1QNraDGiCpsWKCORJTlKA05hjvQ0yoMVqf5p3aGia6wDj4hNiD26fDSp6 Wy2R6ll7d0wKDgsoOrk+ju5VFysGCKE9D0f2HE1PoYkq2FZgEJKVF55Y/phZZf/z8xQa +ZORTVNXteyKelkMgV8Jm1X2kJKirEMGsa24hb3rcm82Sbd6+DehkLoJBwh9tpGI0n2f ZLuQ== X-Gm-Message-State: AOAM532dxgUKW1OHbe3gVl2y+bXbbtc//B9BlbUmThyTEeUUcHWRVu63 Hd+2+DaygxFcJfFfGgpkNgapajm+xSQpmyHJFrAlcBhA5P4M5Y36CTbtqRkvxOyw2Tp7Oz+5r// ThYZbvRHquxxRx9qa9pd1Z/czpQGEQy5Zo6DrIsS6CnnG1zWVtyPHBkRa3XbGZVib3A== X-Google-Smtp-Source: ABdhPJwzmcOTj+8okjLSUuHorntCPLZOT0ruG82s1kFJ/mUpDrSZSftoHl03fkYGXEfEzypq70bRmQ== X-Received: by 2002:a17:902:ba8b:b029:d7:e6da:cd21 with SMTP id k11-20020a170902ba8bb02900d7e6dacd21mr22641624pls.38.1607458303107; Tue, 08 Dec 2020 12:11:43 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:42 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:20 -0800 Message-Id: <20201208201134.47844-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84824 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 4DC40A09E9; Tue, 8 Dec 2020 21:13:11 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5E6F1C9B4; Tue, 8 Dec 2020 21:11:51 +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 B5660C988 for ; Tue, 8 Dec 2020 21:11:46 +0100 (CET) Received: by mail-pf1-f194.google.com with SMTP id t8so14944967pfg.8 for ; Tue, 08 Dec 2020 12:11:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=K3xgY6GgTDPFAvBJS6YFZwu5OadEEXy9ZSl+l6jbsOs=; b=NYBoKXH+iCXVOexj/t8P6ju7GN6cQTYGqXJnBv9ohQ+K5AgC1X6tlJbJ8W4MFfTsue 7x+pO5xfh2qXJxqrLOqxiD4dHQXRuOZ2yPuw7gYu3RW5PCSVhkbCcu3cnvdMrQf8PzuY +dAObSd58yulSbXoUHAY8OMtKkpfWSjCpnQqc= 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; bh=K3xgY6GgTDPFAvBJS6YFZwu5OadEEXy9ZSl+l6jbsOs=; b=fHeO8sQAa+1XoYBdISnvrRr9vSV9aW0ELnhtaV7DPVTo/NT5EGcYrCkW7WlEjTCRMq cA8hf0w0lbtIiBUU+Cot6kS4ZTp7TL4bIDtYJgIkq4oP1+La5rVAmad0UC0vrEBdtXBH 9/URqLkgYxvAqE9uY70zVgKx8F7nbY5Fmho8H92NoQtHzFoS/vy9fu6O6Kalobua5YHY QQCADLZFhpI5UDLjYZSOD2z/eEAsutUSgeqZvluAci74dw1TiT+98wG7XuOHGeLmcEgZ kjNOgIGf3QPzsp0QrA2qGAzWL3HJnOITeSVTHBbOQ02h+m0/LuPKKyisFa61fj0L0pTS 7NMQ== X-Gm-Message-State: AOAM532294dopBYwjjDozqawpWia7TWViB0qMZ7orD/7FmpJAixOn2+5 cXZW3pD7+3JzRaWAwhm7oxl5OqKTlGXcKZIvDQCr8pGSsvOfylFO6y2Kgcdy/2LQtHne9h2GATw Bmx9xe9TDUGplOk9REoIX0c1lz1DZPENOZrI6sqBWkZkFRHmXq7rcDz7tf0lZKIX+eA== X-Google-Smtp-Source: ABdhPJysnh5hAm9OQ0ZLRVsuMN/R6S+808S98x1qjJCS8Yx2ivhxJSx2pFNx2Aa89JXGNfNnE6jlZw== X-Received: by 2002:aa7:963c:0:b029:19d:dcd3:b2ae with SMTP id r28-20020aa7963c0000b029019ddcd3b2aemr14021806pfg.76.1607458304496; Tue, 08 Dec 2020 12:11:44 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:43 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Tue, 8 Dec 2020 12:11:21 -0800 Message-Id: <20201208201134.47844-5-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84825 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 E89C7A09E9; Tue, 8 Dec 2020 21:13:29 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 82B2DC9BE; Tue, 8 Dec 2020 21:11:52 +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 1DE97C996 for ; Tue, 8 Dec 2020 21:11:47 +0100 (CET) Received: by mail-pg1-f195.google.com with SMTP id t3so13173770pgi.11 for ; Tue, 08 Dec 2020 12:11:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=PVKWrp5/0DRDnbKjW56ZpvFye44In3RBlXsxb3XaoI0=; b=MvZYk2rLluzTV4edMs8PvwfCR+mndB2S7XOdCUM7njrwPp8tID1uurYEdjXYYvqWBh /3LBvYgIkQsjeqrli7I5GUuotixSVDA3lOhJOqF9JGhOXBzOPtzZO5eQaFUgAPLxxGoz hQshpIldIF9mnYyP/GVVSNtX486YrkdqFVsts= 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; bh=PVKWrp5/0DRDnbKjW56ZpvFye44In3RBlXsxb3XaoI0=; b=OsAcriVhWZtZoup/tKRhwiFYJhXJBR1rJA+JFtY1bkDOFzDdDIYxdOP4+KmqQDdSrZ kOm4BFAI5M+7LojylafEZ9RgNidJEYIYoSZ6MLjr9QVAgA44zKuRMZWAJHI8gayd3HsB F7KMy/K1gnLNKRodr184bbsjzuJke71w/fgPUCk5zBu/H+FEzxGkMtFOGuaCQbJ9Q4xN IkKvZMnzEk04/hQNE18Mh4v2+8iKm4wmPJPPyLZoZqGrF8TdDnm5Mun6IXayELVYkM2v VvNXk/ooITBNYFpOsfjcvdU5ia56Uq587WU+90P7CorZUKv5wHZGbAq2sQRoiHkZEH6C 2t9w== X-Gm-Message-State: AOAM530locs7iAQGWNbBtArQPsWu4M6Z1E9vuFbDD5+tmnovg+RrfmB/ Jddl3TcE//GS9rtPvG7z+HIoc0dKiPhzaLKej7d85qClCtMZYInS9NDvhfumJXlXVbR2k049NLm H6YT0NYCcZJnyktiicm2IkC5sR5wBEmqrf8lgVu58xqEfhDrOp3Fw0Vb0pMfRSnAadw== X-Google-Smtp-Source: ABdhPJwhon7FbuPtoQVI87d+esd8gmcqYvObnfzuPQTjE7EqRmNPOJ/VGcOOyN0qZplAVC2bmHayLA== X-Received: by 2002:a63:5d51:: with SMTP id o17mr24158232pgm.302.1607458305543; Tue, 08 Dec 2020 12:11:45 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:45 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:22 -0800 Message-Id: <20201208201134.47844-6-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84826 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 EB96CA09E9; Tue, 8 Dec 2020 21:13:55 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A2FB6C9D4; Tue, 8 Dec 2020 21:11:54 +0100 (CET) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by dpdk.org (Postfix) with ESMTP id 4E60CC99C for ; Tue, 8 Dec 2020 21:11:48 +0100 (CET) Received: by mail-pf1-f195.google.com with SMTP id b26so14951021pfi.3 for ; Tue, 08 Dec 2020 12:11:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=yquH+v8hNY0Kbdao8sFkZx3LQpYXrw9D88JN5z5+r2s=; b=KzNeouYNWNWTZHbxfui2Yh3RYJCLFpGkkk/MmQkLwmzh1llF5hGOyax8DfIT1rT6Z7 nslDdA1YPHSL1i8wuKHmmbqdEUb87TMNnwcnZZLBYN6/wyq25lMwQeA8VQAth+yDXr7t TIFDQA/EZQ3afFIkpHgO/E7AhOutKC7+iKj7w= 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; bh=yquH+v8hNY0Kbdao8sFkZx3LQpYXrw9D88JN5z5+r2s=; b=niurHMuGp+XoxqTLmBalUEszmC1MJCuPA7yOlnS5Y8azkud/+OHbaNHu75YQtwraV+ 4xFVfPP+ZOPOv2jzKFnsB/phJJWXt/8OirZC79Zuk9DTNTBew90z1p1D9RPBw5ceorAa hmaqhpXNxWI2mmERruVCLNoPk7+8l+77nmNHKQgR2qmUHp3vv3BTXVCeo8ps0GlqTFQw RZ9A42Uj1xaxkrqVe6nLsAKoajPL4YVuv5enL7lm0BfQ5ErhZvKWlKzcxEoiJiVfpWih F8hcUoRTIMs8JFkb8fkogXRd/u1nplvbKZfxHdQ3/KWhsTKUIZphgob2iVZkMlcZiTry w2cQ== X-Gm-Message-State: AOAM532D3ntw0kZlWY9M92JEGZ4LbfHeDtvuq8s2HR1nDRnseA5iBL/L zMwHDGzRfcB0GcHEjY31VknKUn5FfsJPTLCjH2Z3ZWblDTGxn046k0tVroLRcjQXDebsGHs2hc9 rPsIGREgqEejY3dqAMNfCkLib2/k4x83CXf/JXMiicUBduAM3/yKCVWpeatSVJ+ZnMg== X-Google-Smtp-Source: ABdhPJyH+ZpWGK0hPPIkVkSOMMcsuEi5JPy2+UBAEOOl99CMwesKogbcPrhd9qvFPV5/U44y5wDLfg== X-Received: by 2002:a65:5b8e:: with SMTP id i14mr24113042pgr.198.1607458307160; Tue, 08 Dec 2020 12:11:47 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.45 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:46 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Tue, 8 Dec 2020 12:11:23 -0800 Message-Id: <20201208201134.47844-7-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84827 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 55635A09E9; Tue, 8 Dec 2020 21:14:15 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 58179C9E4; Tue, 8 Dec 2020 21:11:56 +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 4F428C9B0 for ; Tue, 8 Dec 2020 21:11:51 +0100 (CET) Received: by mail-pf1-f194.google.com with SMTP id 11so8725693pfu.4 for ; Tue, 08 Dec 2020 12:11:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=IbkHCBGMXvKGtVtAwlzKm+Pt/WbTq+Zpbp1F/r+Bfmw=; b=Ia+btYIE6eF58YqeNzqCqghcdaRd5UcTD4cMuascBOv82fCcTu1i9jjYm+jcfAcLwe SwDK3QrbbvqVClXUyQl6dONUTWpJJUiB0nG2/j1KocxHFUXkl7K5YMyors6I4D893Atn BTYTe1XwZSHG/Y4bAFa8h5kkB2H917zbP0HCw= 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; bh=IbkHCBGMXvKGtVtAwlzKm+Pt/WbTq+Zpbp1F/r+Bfmw=; b=a7uOsAKzidotJrhil3W7jpXwaMZFpk2z7PDuMiNfrVgEjzSS9Ae8pJQ09MmMl3y+9Z ZnVBD+Jz5ZlzDYdJybZzkXzQGaihSHhFweU8RzSsq8R5QcIQ8WiXpbS0b1hhYR2LwqA/ l/wFBraAM2Op/Hfx0ZfN8Tr2ZNFfRMKzm646P+Z/7ttL7NY4Wm8+HK8bO/jcdi38sZ+Q QmbDkLcttBHjQ709lSZcJ8Gu2ZYdoeEHTJWrihfOXU6ReI8SyAdjzmz7X5KoHR8Q6hK/ GlQ3ine06RQdjQeM4frtXW1BXkdaTBOcVOHyW5Ua14KYS0nYJpT3oJqppDNScNZUtV70 KMRw== X-Gm-Message-State: AOAM531fSEaDDjo6I/hTF3YTMsXOzo6PhwXoi4jQgTF0HqdI2jvFHJPO ptxo57NuEuLB1m411ccgckivoio6/CikLO0+6sqX2ozhN8SARkgfQMCBTssE8moUU6PEOHrKaIG 9vV2TeNOnY2Ks5oDcdMveNxe700ai4NwLXwFWzd2pOonSuP0FtRJh4taIvLrqVVeVhg== X-Google-Smtp-Source: ABdhPJzirY5WbXQLiFT7AD896DotBF0yvteViHJIRqkbco0agvtdWs9k/JIYD8Jp2IxX1VRjVAMnoQ== X-Received: by 2002:a63:515f:: with SMTP id r31mr23845795pgl.200.1607458309174; Tue, 08 Dec 2020 12:11:49 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.47 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:48 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: stable@dpdk.org Date: Tue, 8 Dec 2020 12:11:24 -0800 Message-Id: <20201208201134.47844-8-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84828 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 DDCB1A09E9; Tue, 8 Dec 2020 21:14:32 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0CBFDC9E8; Tue, 8 Dec 2020 21:11:58 +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 6AC07C9BA for ; Tue, 8 Dec 2020 21:11:52 +0100 (CET) Received: by mail-pf1-f193.google.com with SMTP id c12so7870439pfo.10 for ; Tue, 08 Dec 2020 12:11:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=IgfSCmbXJYbPmYWMzGoju3Q8/a1B0J+Et/fF50yzSSE=; b=WEVX/9XWgU6bhAgoJAWEm0gdd6gau/8rh1AMGT+ai7tzDOy5sAwBQF8NE1Fa/13kgQ Bo77UoU2+yTwW/pdk8P4+t0WVWbWEEx0CjTyvO8plEIjwYzlnpvSS9VnK4saUvgFNC6r eYTWTNqIN4NLQCesNh4vmc226N5nDOt279+0U= 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; bh=IgfSCmbXJYbPmYWMzGoju3Q8/a1B0J+Et/fF50yzSSE=; b=pq95mLtcQJZTj4y7ORh6TgWTVgK/ZWJk7/QdwSrX3mySw2nHWtQNbRA4vDTja/k1Rt E3zg7Qclr/WUCokURKZ1wM/ir+xxWVyFIZTjGAcu76ZMKpMe+OGqpzDO7ekOSBMwHvb6 DxFgDutJxCSPcGykMaiujhnnGcMdlH9H5Klc5aWxuqBPP4ov1gUV6cIl5moYxfNmgkLn g4QE++k4ZdTp93vlc7TZB1B16Und06yCUiG/SEZCh96Z6BRa0Uv+L7wvpuh209HjjQSL dqznsHFVLYzFKuF6j9wUYh0Z7D0hoFTat2EE6sGod6hGjlPOnSsqypt107+Hufp9klnP bX3A== X-Gm-Message-State: AOAM532z7LkqDGvAyriRQG7dLO8r9YQf1gwKUzkel1Uk7b0wPDpXyKYn AUsB5clwXZ8Vcu0ChZ7AYLhQDVg4eptQMLZ2/TlRBoiPYch/01Ho2HOc3LcnK9U/re+pt/CWBoK Fp3WEYMDXa/oIDuT4DRplkJfQpfKC+M6xQKF3h2THlQ24C9BkIojCHkyTrUZFAj+LGw== X-Google-Smtp-Source: ABdhPJykwmCFRXfKtvR+1CgY6EgQnwolmwJSVttDzcvhB9lRjxoYlbceJn6raln6SbSbpTSAxt3cDA== X-Received: by 2002:a62:7693:0:b029:19d:92fb:4ec1 with SMTP id r141-20020a6276930000b029019d92fb4ec1mr21972021pfc.4.1607458310193; Tue, 08 Dec 2020 12:11:50 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:49 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: stable@dpdk.org Date: Tue, 8 Dec 2020 12:11:25 -0800 Message-Id: <20201208201134.47844-9-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84830 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 8005CA09E9; Tue, 8 Dec 2020 21:15:11 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9C96ECA0A; Tue, 8 Dec 2020 21:12: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 AF68BC9D8 for ; Tue, 8 Dec 2020 21:11:53 +0100 (CET) Received: by mail-pg1-f196.google.com with SMTP id w4so13166221pgg.13 for ; Tue, 08 Dec 2020 12:11:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=atbfTWz7e+6AUSZf3CPtSkJCO9fo8J7YKQ6GFZivNUI=; b=DrDIiybTZdkUY2EG47ywL3jGHPdWbSYsevhsTeRbAa1211ufqWg3e79ZubiZTdPr8T Jf9ONqtnuQwa5OGDMcniEhsQnWS0410z2vpzbnvPkNdGipvtdX9jghULCBzuMCxZPmD/ AWDypFPYjpSbySFRYiLzOblnzue1GkCARFizo= 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; bh=atbfTWz7e+6AUSZf3CPtSkJCO9fo8J7YKQ6GFZivNUI=; b=iIvH3IADBejRoqtYi4Sp/5obHLYhjMaHV4WD/2YfaFzaPWEwuNSVSU/+HvcgtwTqGs jbQYqpA84HRS88PLTH6Ozx0j4/WNzpUhwQGGGcXCVOoGQY5UR7kruizSgyNmJhNAsb2L AZ45TqCjh60hfdT/GymAlWSts7Fb4uBf4kNuqsSvVrmOTWCGQtzRSePWWduINUKSJEOJ t51cwr0CPWPWqZ3kJhfI+ZjFh0tTsTqjJLgjVlBabtHEilJUd4vHcdum3wt1Sjmr3Rrn i1sgrLkheHb6+dXEl30lelJheokehlIBr1vEw5u8XBltJSqwb0B2xOBqpAiJ5vXth3kP 0FFw== X-Gm-Message-State: AOAM531utrqrShzBYUNkz2YqXR7M1lRIGXalK8AxQJDHX4icxLmRdtvY gkwOF6rIZycGZmSKIZo34f1hVupPocXve0AoWK+vOFmIzM39g7c//Wa/Uj1lVr6Dw6sAS0dBOJ6 XMqqPHpCNUWtai5Gt+cen3eBD1g5RL8H2kIH2V8CxiL0vXX19tqzhiYVpite0HcLcvA== X-Google-Smtp-Source: ABdhPJzA5xufxSe13+lMRXGhWMTFTipDMBpO7Ssv5nSNZuTDCZYTlOPEud4hagLlr+h7vgUq8w6bLg== X-Received: by 2002:a62:8fc7:0:b029:19d:dcf9:573e with SMTP id n190-20020a628fc70000b029019ddcf9573emr14092559pfd.61.1607458311379; Tue, 08 Dec 2020 12:11:51 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.50 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:50 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Sriharsha Basavapatna , stable@dpdk.org, Somnath Kotur Date: Tue, 8 Dec 2020 12:11:26 -0800 Message-Id: <20201208201134.47844-10-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84829 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 B7891A09E9; Tue, 8 Dec 2020 21:14:53 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CA337CA00; Tue, 8 Dec 2020 21:11:59 +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 C2A1DC9DA for ; Tue, 8 Dec 2020 21:11:54 +0100 (CET) Received: by mail-pf1-f193.google.com with SMTP id b26so14951263pfi.3 for ; Tue, 08 Dec 2020 12:11:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=gwgpFkslPr9nTKZxD2BknjhgYRoh63UsyEV9Ib0g0yg=; b=ChHuMoZprAzkG8YSdemzO7hgzWSC3oFsAY3/Vd5N2dxlm2wGmIVZn677B9qIi31cxo hwc3L6w6zSKRsHchds8BEz/K+aeP1JkgyRJFj1tixcj2AQFdMX4VXlXB0yqXnmtbpC+9 IPNeYhdQL/ho6UNXr6oyjgELtryumUKl4OzcA= 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; bh=gwgpFkslPr9nTKZxD2BknjhgYRoh63UsyEV9Ib0g0yg=; b=Dg1d8cCblBTx41Gne9uELJfFRvr/zbvDukwvlTOq1KgSX/lSrluUxSZx/JWdU3Tt3p paQifZZl/OLgEPssho4Bm2quW8FJVOEs3UeEqHmc8Uvs9YsAVMp2RCsQPhLVr36Z5NtN 4YqHPpYIMIpKj11DlD4xHpJ0bQqzq3avosBz2ca1j2BnjMrtDSXAAWJVmajWIU5CzehL ZjvEkKvUuXcsSFKIZnfzh9wH+hBfhU6Q8mM+W0FLPJFqLvjd0qEyxbBaoGpu/NnOhhTJ Bh4uI9Ew9Ay9ar0MM36QKuIEZn6cc4ecluS8y1rEUL8q04G1f1Dw2PnIlbRpgyG5Deog nhtQ== X-Gm-Message-State: AOAM533vT+jYlYFCtqAgt3jF2wJkCwD7RQrprJa/TKvC0KarZk0tXPfF HroHZrPRQ0VJdnhVPr/F7Qo8Y2rlPyEFeE5LswNgA6MRTM/b01Ea6zDSSc0QV/0c4kFQjYUnH59 +LGJExC+Zpakzgwo2VdNwZxmBUAkK7/GNSOgGDjBCz3MPry8e3PM6rjh0PPjSyG/7LA== X-Google-Smtp-Source: ABdhPJzxUfK1mQgHJ2KJ2K7VP8xEiiu2Curjg36FcttOV48kduEg7EpEZn2kArU6KqcTL26EfHFXDQ== X-Received: by 2002:a62:88c3:0:b029:18c:3203:efb7 with SMTP id l186-20020a6288c30000b029018c3203efb7mr1093104pfd.33.1607458312572; Tue, 08 Dec 2020 12:11:52 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.51 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:51 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Rahul Gupta Date: Tue, 8 Dec 2020 12:11:27 -0800 Message-Id: <20201208201134.47844-11-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84831 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 E44E1A09E9; Tue, 8 Dec 2020 21:15:29 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C50BDCA18; Tue, 8 Dec 2020 21:12:02 +0100 (CET) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by dpdk.org (Postfix) with ESMTP id D9C42C974 for ; Tue, 8 Dec 2020 21:11:55 +0100 (CET) Received: by mail-pg1-f194.google.com with SMTP id w4so13166300pgg.13 for ; Tue, 08 Dec 2020 12:11:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=WB1WzBOdVxPLNzl8iX6yRpgw7A0I4SOLhLSJ1cuyqtY=; b=gJ1Z0tNO2bTwz2dwbSFg/RTGS5D8Ewdz2fxFI3SF9f1k6wyAyj2Ln9zkIJlBNzZKjP hT7HK3ALokWKDbO77RzKZ2CYUQrNjSEmas6eymnRjrHkujeFdND1ueqN+ZXjy7PMcwAn yaDBhTX4b3eLi1UD4VZwQcpyua7OQAk4sIEEY= 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; bh=WB1WzBOdVxPLNzl8iX6yRpgw7A0I4SOLhLSJ1cuyqtY=; b=VP1ZhaxPKOVG20z34wXM+xIX9IvX8jjvmutFgBjwe9Nb1+ZAt8zIyVAr2WlOIUsQJp OLdOX36qffKtdHvaIP9h4nBhqifhWMSwygOjZGg3Ppb9QbETLfcNpGxL7Y3iF5XWaXtE 3U+lBgX8asmcSIkIJ3LH9eLKWopZLdwDNrjVnpusiBKvTox0cPrXazUQDJXxDbIBE7Ow PQITl4E9vjTuTLkXGq52z1lP7Vo36sGQ9LGgIe6X0zRnnhGp+OMV+hRbuUY0dy4cj1ja JXFvw6TPmiThd17bK+pSi5QPgLMe4t1IWW3eHV20VqcFFW8TeY0lrXHCd7vRkY/SfpiF O4Hg== X-Gm-Message-State: AOAM530z0uvDkKRYrgtS3iX9VdQGsWu0S3hYj307VIXdn9jOaM3h4fnu w4477LZdztzNKNUjdxoB6xq5qwpux4l1yXnP4d2+J3klEHjxqjB/1LeuXYQvwmu32qoFHeMaM64 tRPsB4LJL3TuR+lYczNh+FEjDDfLAr1Qd8MNXcLgm22VDo5sfEHDJXrVgy+qTqg9ong== X-Google-Smtp-Source: ABdhPJxsuwMDL8iMo/rvcG2TINCgytwtLmqJyDITe/Qrryn+vXORB97adgRECsd+05zf0iDpZds8cg== X-Received: by 2002:a05:6a00:2384:b029:19a:eed3:7f42 with SMTP id f4-20020a056a002384b029019aeed37f42mr21914598pfc.4.1607458313649; Tue, 08 Dec 2020 12:11:53 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:53 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur Date: Tue, 8 Dec 2020 12:11:28 -0800 Message-Id: <20201208201134.47844-12-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84832 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 24A73A09E9; Tue, 8 Dec 2020 21:15:48 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 439FDCA1C; Tue, 8 Dec 2020 21:12:04 +0100 (CET) Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by dpdk.org (Postfix) with ESMTP id 18848C9E8 for ; Tue, 8 Dec 2020 21:11:56 +0100 (CET) Received: by mail-pf1-f171.google.com with SMTP id b26so14951381pfi.3 for ; Tue, 08 Dec 2020 12:11:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=D1EqIDRIYyVYGn+6UuN1OICPOMpBfqWLXwh4Qd73YmM=; b=EK0Vrv9Fr8vHGgyafDs7FtjarHZNJJrdq5wN0gfPoQOPAiA9aAKs/bvjTHqUfjLqq0 gdIT7eIiD/eWhtShEl7+XFodmcQDuSZnhHD9ocEyQ9eewKosSypchVMy7YvCljfXCHg2 +HXEccWBnZgkJ6VIRyIszQY3QPIrguUDbOEjw= 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; bh=D1EqIDRIYyVYGn+6UuN1OICPOMpBfqWLXwh4Qd73YmM=; b=V3ezUOEo7xnRSuo9uCzOuUq/bYXpsGOiqDluP2WpHkhR9V3Uq4FyMom0ek9BBa1nde xvC63putMYGwI0YxrpTzSHOg0P949NjDVucVFk0EOOY7E1TPhFMPYI7I44UcXBhVcrZ5 hNOMRjKhpNNw+SHYf9nR9/neO44ZB7WOl3YzMddmBiG4u48klgWofaLxmqNv6gtINr+E PwYLlfOnx2VFjWQ7j/0X6XaAjKnrOkP+mGY+Ggzq3Zd0Es3k8Sr9Bsgr24rpw+/ufEW0 x+IxEK4qjzCpKVkkJqfB9+3d2kMvRY0v+T3ASMU5Iq/+s7MkOn+ZEv/hzVTIQvEp+INI l9Dg== X-Gm-Message-State: AOAM533U3/LGdQ5hPq95hfMeFsZvwZYcDQzyoyL3yTSVGvPcYm6HV+Fk 8oxTpLrkEkeqXKfEeW6S0LhoQlwp6E7FUommjeCxvhagBUyWzb8AKdrKHPhNO9ha5wJP+pO6jzT iXvPrM78HNSsWQDlFSQbdzhINhaOzWTGjdWDw/xTuNrYlFsff27hmDuZW0Yo+V23c3A== X-Google-Smtp-Source: ABdhPJygissxZ8VXVRjAjZWk8dhfFn74+OMFxKINaJTRUT0Brwhn+KamgS0Oz2ttk6Kv52uDGKrWFw== X-Received: by 2002:a63:f90a:: with SMTP id h10mr528224pgi.375.1607458314946; Tue, 08 Dec 2020 12:11:54 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:54 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:29 -0800 Message-Id: <20201208201134.47844-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 84833 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 B8F0BA09E9; Tue, 8 Dec 2020 21:16:08 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4B9A1CA32; Tue, 8 Dec 2020 21:12:06 +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 D770BC950 for ; Tue, 8 Dec 2020 21:11:57 +0100 (CET) Received: by mail-pg1-f193.google.com with SMTP id m9so13206564pgb.4 for ; Tue, 08 Dec 2020 12:11:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=sZAcDBgkksUSYauHI9bABm7FFGXtOiUqMDjQSbk7hE4=; b=U5fHjhw/s7mes6oXQz/TB5WnM3/JsoWrMpIYA25N/1Qmb1spWnLdihL5XZbicQxCwC +wp5BpU/CAtu20xOVUQazIEk8O9cyE/ieMJUSbK0tSU62bAYsPwXTZj61ALLcEAJfzNG hVG+lC43A8OSvOn1YmwjorlJ7g8+ovJ89qem0= 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; bh=sZAcDBgkksUSYauHI9bABm7FFGXtOiUqMDjQSbk7hE4=; b=KQ8O18BqkJxQUTe/ziY84DpdAXdPNeymG7lQdGR8bxzUd5rLMP2DileYs+BkuUk1RN 1C309EeR5QZO6XRpn6lkKBK41J2rlctXf/6Q+RCL8UymXORtRUUCYoUKvOk5jlA3q/y1 hDPXtUCMNOaXfnU14s6sS14CGJe6dD+YNxjNwSv/Crlt+ha3+1Z1ovDq3rolkCM5V9ml Wx4Ndpd9HAlADTn8OFLU/NjS9zj2hJ+cVwwXJPY/skprsHdG5Uh7BXz6m1ZCcEq0DXcF oQrKWIxxpFtHckYf07oyEf9PYmXUcc/K8d/LpY0a35E1Kqa5yKD/rqYzfcsTscChOiah KHUw== X-Gm-Message-State: AOAM530iIyJyNTYWEin+XD7mA9+rQpxC2XdkOR+FmREhJk20YbJUjn0I 2uRr0MI8eOt1cTsskzp6rxdAgborEd9mj3LGhfSyiJcebpahuyzuQ1EWlLt3I6vhN3SWZ5EpVYA lE2VKK5oe3f35z6PA5oXdE11fyn3P4wYEKAOWb/zQlM/UmIfPjIrANEOjxzt9QMaDeA== X-Google-Smtp-Source: ABdhPJx0I4DJVXWH7HopHLj8U69ukzWaU9el/W0ZT49dbOT3ZKq/QbqXSeWtgys2PID/6sdFkgMtcw== X-Received: by 2002:a62:1409:0:b029:19e:14d1:efb0 with SMTP id 9-20020a6214090000b029019e14d1efb0mr9681379pfu.14.1607458316661; Tue, 08 Dec 2020 12:11:56 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:55 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , stable@dpdk.org, Somnath Kotur Date: Tue, 8 Dec 2020 12:11:30 -0800 Message-Id: <20201208201134.47844-14-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11: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: 84834 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 D12A7A09E9; Tue, 8 Dec 2020 21:16:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CDB8DC9D2; Tue, 8 Dec 2020 21:12:07 +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 91CB3CA06 for ; Tue, 8 Dec 2020 21:12:00 +0100 (CET) Received: by mail-pl1-f195.google.com with SMTP id u4so1871591plr.12 for ; Tue, 08 Dec 2020 12:12:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=SLh6EC7m7xgJ8GgF/4EYQn9rt9YCo3QR3oMiURAC5r4=; b=W+sF1ytUpU42vvtYysM9aJzcE5oCeLWRxtMd9q2weRlyiHntYvaS/7sCAZd2v7WPXQ GfE4yyv8azjP5K5JUvTQAOWmKPV1yQcO4KRp3NXtNNS0E2Z4vxFX5nl6lOmQF3T47ond l0b7xSGulxfHb/V5/+SZL/R9Y4tnFCiNVu51s= 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; bh=SLh6EC7m7xgJ8GgF/4EYQn9rt9YCo3QR3oMiURAC5r4=; b=Olqwi2c7k7t1wXj5OeN5iJC3yzOjfu05DmXA72IOu0zDqTeicicdPynGgZ8knZ7kxP F7YVrOt0Xj/JQAeFK9Pny2yzs+Y5wj7k6P4okWTw4fLFft+EANpeoq1K6xO8Q+i4pMQk r4gRnyrJ4rTdYxYnFPjVgC+DJIyvBLQoZW7NV4OZIh8MnOfDPEbvJY0ipH++gB+Gwfhu FVbFkJfLu/Q0mf3cf1mGCHhCPWYWyjsbGvRXLL6yksUAdVAN6O/XSxTSeG7bUzhebWEG f5Dy728YMHK+L35qEv6Q1bN6pd1S3Ri427gKTIzelEvFXfhZgg19b6HFqdsr5ACI8GEl QTgg== X-Gm-Message-State: AOAM530x4yBAiZ/7GzPVuUaI1iagqx7mw7bTM/LacEmR8+goWH+ogHZ7 W+sxFa3IdKDEMWS/5LivV8LHqde2KuS2zSXZzp4xWBGX8Gi3M3fXwoat8OXAvTfD+66uqnuC18v rbSpgnVRHROePNIVk7h76/BllAYRkufkO8Wun1/nBnXmz/zZoIRtRJIVtA2XjjRsy4A== X-Google-Smtp-Source: ABdhPJxa2geOLFB488axy96Tnm4hWsYKXbaVF2fM36zruW5ovpR7J9r438PWwOlWRVwWm2FO61TC3Q== X-Received: by 2002:a17:902:b08a:b029:d9:eca:7d38 with SMTP id p10-20020a170902b08ab02900d90eca7d38mr22670627plr.72.1607458318329; Tue, 08 Dec 2020 12:11:58 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:57 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Somnath Kotur , stable@dpdk.org, Venkat Duvvuru , Kalesh AP Date: Tue, 8 Dec 2020 12:11:31 -0800 Message-Id: <20201208201134.47844-15-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 Tue Dec 8 20:11: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: 84835 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 6D7CBA09E9; Tue, 8 Dec 2020 21:16:44 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 45498CA44; Tue, 8 Dec 2020 21:12:09 +0100 (CET) Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) by dpdk.org (Postfix) with ESMTP id 10C35CA10 for ; Tue, 8 Dec 2020 21:12:01 +0100 (CET) Received: by mail-pl1-f194.google.com with SMTP id t6so1998549plq.1 for ; Tue, 08 Dec 2020 12:12:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=q98UclreYG7/cFVKdOiXiuLbuVJ0SjBnT4fJKUWPY5A=; b=Gu/RoMk3MB36r+/cd4NPGKCjR9FIute/y3MDhu6hopZ6fTTtqxMgc1sFdGLYk3stiI s0ltjp2SDAL1I2Oc4z27TbiLh7IpSnMqXW+dC++eNzV2rWNPunqxlH3zBYzwNB1rXSGC WEeCVc5WAgAZKsTDa8wn5cwpHfP63lX8LyIrE= 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; bh=q98UclreYG7/cFVKdOiXiuLbuVJ0SjBnT4fJKUWPY5A=; b=XNwfVX4fIHvEeffOu2b54RT12Cg01h3K5x0P8jhWJzTfcMYGljexT5YVvynehDSPOq /gjqoqXNnQpCFKas8q0ejSLPljJXjv+NSL/FZ15rdR14RkS19ne5zDLv1FV/FgaeU+WG z4lIb09otafFbAgVxQweOq1UsvF5MgesOOoHWZSs6iW82OJJRO7IgFvCVULZE9dMwndt 5iLCGJ+Ek0KscW+ZJuBmoeNCxroI2n0I349BJdkIBxrJtNCRebUrK90AJwY+/c3r8q7N S6VOlSR/ZgY5GMHdE/d7y7N+hVTdwrAIlfB6bwJNnhU0WEe1jdksioyoKo3iC1mGKR44 Wp6Q== X-Gm-Message-State: AOAM532fVWTt2SJEKtZLDCUVYa277jRaR/uuatFn3B4Hl0x/s2qK/Q9k PAHmPzU/9bYHtdeFP54Tvph61mXFbPFRXPuZUnJXjXsX7H2asZbeIkcamKoBLQ+bABPMiq9SOQi T39GOJUlO7HiMSIFEK4Mpg5VPMRue5h3tgLF6b1xyYab2z1o8M69Q3VhrVPc2Ru3uPg== X-Google-Smtp-Source: ABdhPJykwmfQ3Acwu0X5BatzC1Wqwm/GVEdfyS2u/GFN1zPqwvW47Yhid50IvATpbp2waQ3b5xVgsA== X-Received: by 2002:a17:902:ff0e:b029:da:d4ee:eca3 with SMTP id f14-20020a170902ff0eb02900dad4eeeca3mr20364134plj.41.1607458319810; Tue, 08 Dec 2020 12:11:59 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:11:58 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:32 -0800 Message-Id: <20201208201134.47844-16-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11: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: 84836 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 24839A09E9; Tue, 8 Dec 2020 21:17:00 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 65AAFCA4B; Tue, 8 Dec 2020 21:12:10 +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 65CE7CA10 for ; Tue, 8 Dec 2020 21:12:03 +0100 (CET) Received: by mail-pg1-f196.google.com with SMTP id q3so13214179pgr.3 for ; Tue, 08 Dec 2020 12:12:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=7ZS/VEY6m9I4VLBnqOvdq95VkCTEYuHD2opzH2q91oY=; b=D/SYTRSRMhuEhnInqk50A+ZYsTVIBlrAsISj59E1I/DnBMsi1frIwEKWNNDvSxPCmd PV7xo+sQ9OLZ3/dsFFl9zT/9MOLATAHiCscrlZ5az5TeZ7j4PwtlTpUPabzCGs0po0pG ECoFvW0/4eJQZZCFwVcRSo2MlJqciKdnliKbg= 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; bh=7ZS/VEY6m9I4VLBnqOvdq95VkCTEYuHD2opzH2q91oY=; b=GvnAtGea56bgy5dK6PHZdFyL+cmspudqyyDnuVzot0HHtpGF9HkVO9i8apWmArx4CH apXiPubVN0fw19ZZiozRZrnwMZB/2PcsdfSXAfFz8zeGBYCR6ffrRL/wSGTCOu0bgTBY LzgCsM1ROAV67MtchAcl6kJM/Ro3dv0+SCDdvR799NUHE2ugq1eX91I6Xppqx/3a2ghY VTnxJMp7LSkUAeUy7GV6/slaWU39ayyx4q0dsg09muzioNJ0W6IzBDQIP2DR6FJacNIV ESWWAvbo8qoMn9+DizwFcgUV23yYY7AlV2eXVviubV/td0ROjQOHm6lfnLorlQd/zUDb ADVg== X-Gm-Message-State: AOAM530rKpAOAWItZxgGTujeKU+HxC1J/wL6q3/rqHp6OQf3jvG/rNhb 6wH2gSgGWEPhs9c3fH7soccoyVnenesM7am6yW91+TLe1TEvPcof5TKVeeNtwgD05D6NnE88O7C ENMN3T1x2Y6MBbPCeUDqiy97K/Ss7UJx0256aexBqWEiAX78FhsLufn7ufRx8D8eUdg== X-Google-Smtp-Source: ABdhPJxGxXatpxJLE9XAzmH7PCg00qxXwY/3J6GtHgf+9zxD+xgtF1Sf2qnqNwOY+hmloYk7dT/TqA== X-Received: by 2002:a17:90a:e28a:: with SMTP id d10mr5659316pjz.77.1607458321202; Tue, 08 Dec 2020 12:12:01 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.11.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:12:00 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:33 -0800 Message-Id: <20201208201134.47844-17-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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 --- 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 Tue Dec 8 20:11: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: 84837 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 67CFDA09E9; Tue, 8 Dec 2020 21:17:22 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 181C9CA59; Tue, 8 Dec 2020 21:12:12 +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 22BC0CA22 for ; Tue, 8 Dec 2020 21:12:05 +0100 (CET) Received: by mail-pl1-f195.google.com with SMTP id x15so7558205pll.2 for ; Tue, 08 Dec 2020 12:12:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version; bh=Kv6AI24ZDdrBeHPFHkAmvJOKSoHWdWXA6GCyBnHG/rk=; b=YIplLzIkHwo8Xv8VRR6/T+KC4yWcP72yDamacA1PJm4Dwbco/NxZBGXcBPLOOOv7Zh 3OTEOgZx+C2vZXHnZV5Dc2JLgQGXR2++tMFgnztQFPpMkq3Y8cu7D5S2cuobR+YW8ccF hISjLh9Ky+JEG5bMc/yO84LPBe03IfhGM8sCk= 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; bh=Kv6AI24ZDdrBeHPFHkAmvJOKSoHWdWXA6GCyBnHG/rk=; b=CGtIw+YQuFtMzUxFcKwP2rArh+mNdRcXT16vr9rj7g0YtpT4JVMjws0oKgkregUF9W S4T9fHYUd8tRqjnwlCiflaiHk+wA/i/RCPlggia0qxU9Yhf6OAuOzY/XgiceN/lVRYio t6DKVqGdcPdFZyxY9/iJpii7RQPVW2p88Lj3mnlMFa6pGNdPBA5ta+TnnaVkiq6s1vPz CvtUzVlG3WLJjHDh0/92TchHDRfzDO35z5KAcr/oPyr9JoBF6skP3u9ubQS8BmwdXimZ NJ8FZ54Tqabrk5Ce8wUd0koszQ5OnhWjjjXvspvYV1gf3872NpL4iGX5TfmOGRpZz7sh /HtQ== X-Gm-Message-State: AOAM530CzOAC620ryEzZDyOv9R1kSoSTIZc2mLcpYIBZX35uZBLIcYG+ YXnN8uMqxhG+xA1RRdAsv0CBAcUFmDmU6caJpKIpScEEA3EYUl0rDXhRk2/fLCIDcUOOQiH+C/V /dB05LWQVIKadVhPvEqA0g707k6iCympHG821JoqHTgDwBqc/33hH70CBXscvanOMCw== X-Google-Smtp-Source: ABdhPJz2kCIfb4Yj83Q+mTniNvE/nRafa4TM7A84hilwtQqUWzO0ceCXy5QBwPGrthCluCGIedvOmg== X-Received: by 2002:a17:902:fe17:b029:da:799a:8bfd with SMTP id g23-20020a170902fe17b02900da799a8bfdmr22347055plj.10.1607458322417; Tue, 08 Dec 2020 12:12:02 -0800 (PST) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id x10sm5729187pfc.157.2020.12.08.12.12.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Dec 2020 12:12:01 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Date: Tue, 8 Dec 2020 12:11:34 -0800 Message-Id: <20201208201134.47844-18-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20201208201134.47844-1-ajit.khaparde@broadcom.com> References: <20201208201134.47844-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH 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. Signed-off-by: Ajit Khaparde --- 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 | 16 ++-- 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, 180 insertions(+), 136 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..202291202 100644 --- a/drivers/net/bnxt/bnxt_rxtx_vec_common.h +++ b/drivers/net/bnxt/bnxt_rxtx_vec_common.h @@ -105,21 +105,21 @@ 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 raw_cons = txr->tx_raw_cons; unsigned int blk = 0; while (nr_pkts--) { struct bnxt_sw_tx_bd *tx_buf; - tx_buf = &txr->tx_buf_ring[cons]; - cons = (cons + 1) & ring_mask; + raw_cons = (raw_cons + 1) & ring_mask; + tx_buf = &txr->tx_buf_ring[raw_cons]; 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 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; - tx_buf = &txr->tx_buf_ring[cons]; - cons = (cons + 1) & ring_mask; + raw_cons = (raw_cons + 1) & ring_mask; + tx_buf = &txr->tx_buf_ring[raw_cons]; 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); }