From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D00F6A0093 for ; Tue, 19 May 2020 15:16:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C80FD1D94A; Tue, 19 May 2020 15:16:00 +0200 (CEST) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by dpdk.org (Postfix) with ESMTP id 451571D957 for ; Tue, 19 May 2020 15:15:59 +0200 (CEST) Received: by mail-wr1-f67.google.com with SMTP id w7so15811121wre.13 for ; Tue, 19 May 2020 06:15:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=bmeN2VpSCgZO9M55TBwI6ufsKPYHBKG6/4CAw34gpXQ=; b=d1kBhVIUSFlyWZKUE4aR1JGSsJ1F9D3xgfm1OFL2DVEV4OTpLQ+4bAckCRbco453eu esCYcThW9h+Jgr0KIbEfJqHtbJTdKBb8OvwHrRG1U5+T6xl1ICDuWPsELah8GZypPbST QPZKt4QMIoJT2V9EXxHaYc+cK6kKlaclS4YWdWcLZqvFJzk8GQNYBMllvMWnJ3w25YSm HcODb+vRD7PUnMYd4fHLZFsgjXOujIjOon1RhfLhXd8iUQzwkZwANOZiUnB4yKtLatPA uFtoJkYDUlVrgHkXVH+VI4JDezYmqA6aGRm/BZVI/9R2hNwlG8ealbMIl9puiS6CXm+s z0gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=bmeN2VpSCgZO9M55TBwI6ufsKPYHBKG6/4CAw34gpXQ=; b=tpWCrQLbi/ktfK7MSHc6/b3+oOmyveN/XYDFRu4DIa3OHr2UoVLAuC7puNS1iiOeb6 OrI3+vAWw1ii6BEzGjvX36h4RG0HF0xMJ/c/40zXuKAHyrpoPK7461kPY/TXxFRQ/2iy GPpCBKC2sYoDpw/fqbH+efog4JLtx/dF7oc427EVXMeCJtYGzaDMGdXCRU8wnA09Y4sE QV/s6KyJiR3O8S+nYwTlNfh68NzWIh61X4YyhoOoCYEi2jjjnkVDg8K4fzdMosBzwyyh dElAJ5931xymGRWbZi1FOdttdyhUEJPcaitSfNc0MF15ZHOghn27X8/BGMt7bxSElpB3 lvwA== X-Gm-Message-State: AOAM530/gahXVb7NViiGZ6DyDtXd2tXAM7MNH/oRc0HfTSOpcyeOhFfM p5UKrq/pO4uJ6Pi+3oU4oD4= X-Google-Smtp-Source: ABdhPJybaTITKzZhL2kX8HWdgnS0NlddBlZZFOP8o3KlouEr4E41qEvEC1qyyLV+FcBfIDh+0WLzzA== X-Received: by 2002:adf:f38b:: with SMTP id m11mr25350082wro.65.1589894158981; Tue, 19 May 2020 06:15:58 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id 8sm4162316wmb.15.2020.05.19.06.15.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:15:58 -0700 (PDT) From: luca.boccassi@gmail.com To: Kalesh AP Cc: Somnath Kotur , Ajit Khaparde , dpdk stable Date: Tue, 19 May 2020 14:05:28 +0100 Message-Id: <20200519130549.112823-193-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/bnxt: fix number of TQM ring' has been queued to stable release 19.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/21/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 426e8b5253f7798462dc6622e09d7420fe9e9bf1 Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Wed, 6 May 2020 11:57:09 +0530 Subject: [PATCH] net/bnxt: fix number of TQM ring [ upstream commit fd14f72296a3c2b113b5dc232f5d7cf3a8a72b0d ] Newer firmware advertises the number of TQM rings to allocate context memory for. Use the firmware specified value and fall back to the old value derived from "bp->max_q" if it is not available. Fixes: f8168ca0e690 ("net/bnxt: support thor controller") Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 2 +- drivers/net/bnxt/bnxt_ethdev.c | 5 ++--- drivers/net/bnxt/bnxt_hwrm.c | 31 +++++++++++++++++++------------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 0ef0282d2a..334eb036dc 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -359,7 +359,6 @@ struct bnxt_coal { #define BNXT_MAX_TC 8 #define BNXT_MAX_QUEUE 8 #define BNXT_MAX_TC_Q (BNXT_MAX_TC + 1) -#define BNXT_MAX_Q (bp->max_q + 1) #define BNXT_PAGE_SHFT 12 #define BNXT_PAGE_SIZE (1 << BNXT_PAGE_SHFT) #define MAX_CTX_PAGES (BNXT_PAGE_SIZE / 8) @@ -418,6 +417,7 @@ struct bnxt_ctx_mem_info { uint16_t tim_entry_size; uint32_t tim_max_entries; uint8_t tqm_entries_multiple; + uint8_t tqm_fp_rings_count; uint32_t flags; #define BNXT_CTX_FLAG_INITED 0x01 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index d05c291592..7a9c557b52 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4401,7 +4401,7 @@ static void bnxt_free_ctx_mem(struct bnxt *bp) rte_memzone_free(bp->ctx->vnic_mem.ring_mem.pg_tbl_mz); rte_memzone_free(bp->ctx->stat_mem.ring_mem.pg_tbl_mz); - for (i = 0; i < BNXT_MAX_Q; i++) { + for (i = 0; i < bp->ctx->tqm_fp_rings_count + 1; i++) { if (bp->ctx->tqm_mem[i]) rte_memzone_free(bp->ctx->tqm_mem[i]->ring_mem.mz); } @@ -4482,9 +4482,8 @@ int bnxt_alloc_ctx_mem(struct bnxt *bp) entries = bnxt_roundup(entries, ctx->tqm_entries_multiple); entries = clamp_t(uint32_t, entries, ctx->tqm_min_entries_per_ring, ctx->tqm_max_entries_per_ring); - for (i = 0, ena = 0; i < BNXT_MAX_Q; i++) { + for (i = 0, ena = 0; i < ctx->tqm_fp_rings_count + 1; i++) { ctx_pg = ctx->tqm_mem[i]; - /* use min tqm entries for now. */ ctx_pg->entries = entries; mem_size = ctx->tqm_entry_size * ctx_pg->entries; rc = bnxt_alloc_ctx_mem_blk(bp, ctx_pg, mem_size, "tqm_mem", i); diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 7de5b88f0c..af3560befa 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -4546,7 +4546,7 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) struct bnxt_ctx_pg_info *ctx_pg; struct bnxt_ctx_mem_info *ctx; int total_alloc_len; - int rc, i; + int rc, i, tqm_rings; if (!BNXT_CHIP_THOR(bp) || bp->hwrm_spec_code < HWRM_VERSION_1_9_2 || @@ -4566,17 +4566,6 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) goto ctx_err; } - ctx_pg = rte_malloc("bnxt_ctx_pg_mem", - sizeof(*ctx_pg) * BNXT_MAX_Q, - RTE_CACHE_LINE_SIZE); - if (!ctx_pg) { - rc = -ENOMEM; - goto ctx_err; - } - for (i = 0; i < BNXT_MAX_Q; i++, ctx_pg++) - ctx->tqm_mem[i] = ctx_pg; - - bp->ctx = ctx; ctx->qp_max_entries = rte_le_to_cpu_32(resp->qp_max_entries); ctx->qp_min_qp1_entries = rte_le_to_cpu_16(resp->qp_min_qp1_entries); @@ -4612,6 +4601,24 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) ctx->mrav_entry_size = rte_le_to_cpu_16(resp->mrav_entry_size); ctx->tim_entry_size = rte_le_to_cpu_16(resp->tim_entry_size); ctx->tim_max_entries = rte_le_to_cpu_32(resp->tim_max_entries); + ctx->tqm_fp_rings_count = resp->tqm_fp_rings_count; + + if (!ctx->tqm_fp_rings_count) + ctx->tqm_fp_rings_count = bp->max_q; + + tqm_rings = ctx->tqm_fp_rings_count + 1; + + ctx_pg = rte_malloc("bnxt_ctx_pg_mem", + sizeof(*ctx_pg) * tqm_rings, + RTE_CACHE_LINE_SIZE); + if (!ctx_pg) { + rc = -ENOMEM; + goto ctx_err; + } + for (i = 0; i < tqm_rings; i++, ctx_pg++) + ctx->tqm_mem[i] = ctx_pg; + + bp->ctx = ctx; ctx_err: HWRM_UNLOCK(); return rc; -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:52.442316570 +0100 +++ 0193-net-bnxt-fix-number-of-TQM-ring.patch 2020-05-19 14:04:44.552654463 +0100 @@ -1,14 +1,15 @@ -From fd14f72296a3c2b113b5dc232f5d7cf3a8a72b0d Mon Sep 17 00:00:00 2001 +From 426e8b5253f7798462dc6622e09d7420fe9e9bf1 Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Wed, 6 May 2020 11:57:09 +0530 Subject: [PATCH] net/bnxt: fix number of TQM ring +[ upstream commit fd14f72296a3c2b113b5dc232f5d7cf3a8a72b0d ] + Newer firmware advertises the number of TQM rings to allocate context memory for. Use the firmware specified value and fall back to the old value derived from "bp->max_q" if it is not available. Fixes: f8168ca0e690 ("net/bnxt: support thor controller") -Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur @@ -20,10 +21,10 @@ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h -index 12fed1e9d7..bf5b39cd30 100644 +index 0ef0282d2a..334eb036dc 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h -@@ -362,7 +362,6 @@ struct bnxt_coal { +@@ -359,7 +359,6 @@ struct bnxt_coal { #define BNXT_MAX_TC 8 #define BNXT_MAX_QUEUE 8 #define BNXT_MAX_TC_Q (BNXT_MAX_TC + 1) @@ -31,7 +32,7 @@ #define BNXT_PAGE_SHFT 12 #define BNXT_PAGE_SIZE (1 << BNXT_PAGE_SHFT) #define MAX_CTX_PAGES (BNXT_PAGE_SIZE / 8) -@@ -421,6 +420,7 @@ struct bnxt_ctx_mem_info { +@@ -418,6 +417,7 @@ struct bnxt_ctx_mem_info { uint16_t tim_entry_size; uint32_t tim_max_entries; uint8_t tqm_entries_multiple; @@ -40,10 +41,10 @@ uint32_t flags; #define BNXT_CTX_FLAG_INITED 0x01 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c -index c2bee54d16..d877ff655d 100644 +index d05c291592..7a9c557b52 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c -@@ -4644,7 +4644,7 @@ static void bnxt_free_ctx_mem(struct bnxt *bp) +@@ -4401,7 +4401,7 @@ static void bnxt_free_ctx_mem(struct bnxt *bp) rte_memzone_free(bp->ctx->vnic_mem.ring_mem.pg_tbl_mz); rte_memzone_free(bp->ctx->stat_mem.ring_mem.pg_tbl_mz); @@ -52,7 +53,7 @@ if (bp->ctx->tqm_mem[i]) rte_memzone_free(bp->ctx->tqm_mem[i]->ring_mem.mz); } -@@ -4725,9 +4725,8 @@ int bnxt_alloc_ctx_mem(struct bnxt *bp) +@@ -4482,9 +4482,8 @@ int bnxt_alloc_ctx_mem(struct bnxt *bp) entries = bnxt_roundup(entries, ctx->tqm_entries_multiple); entries = clamp_t(uint32_t, entries, ctx->tqm_min_entries_per_ring, ctx->tqm_max_entries_per_ring); @@ -64,10 +65,10 @@ mem_size = ctx->tqm_entry_size * ctx_pg->entries; rc = bnxt_alloc_ctx_mem_blk(bp, ctx_pg, mem_size, "tqm_mem", i); diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c -index b0a783525e..ef65107384 100644 +index 7de5b88f0c..af3560befa 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c -@@ -4694,7 +4694,7 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) +@@ -4546,7 +4546,7 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) struct bnxt_ctx_pg_info *ctx_pg; struct bnxt_ctx_mem_info *ctx; int total_alloc_len; @@ -76,7 +77,7 @@ if (!BNXT_CHIP_THOR(bp) || bp->hwrm_spec_code < HWRM_VERSION_1_9_2 || -@@ -4714,17 +4714,6 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) +@@ -4566,17 +4566,6 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) goto ctx_err; } @@ -94,7 +95,7 @@ ctx->qp_max_entries = rte_le_to_cpu_32(resp->qp_max_entries); ctx->qp_min_qp1_entries = rte_le_to_cpu_16(resp->qp_min_qp1_entries); -@@ -4760,6 +4749,24 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) +@@ -4612,6 +4601,24 @@ int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) ctx->mrav_entry_size = rte_le_to_cpu_16(resp->mrav_entry_size); ctx->tim_entry_size = rte_le_to_cpu_16(resp->tim_entry_size); ctx->tim_max_entries = rte_le_to_cpu_32(resp->tim_max_entries);