From patchwork Mon Nov 20 23:43:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13462280 X-Patchwork-Delegate: kuba@kernel.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="hrgTtBjm" Received: from mail-oo1-xc30.google.com (mail-oo1-xc30.google.com [IPv6:2607:f8b0:4864:20::c30]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F8ACAA for ; Mon, 20 Nov 2023 15:44:42 -0800 (PST) Received: by mail-oo1-xc30.google.com with SMTP id 006d021491bc7-58786e23d38so3028760eaf.3 for ; Mon, 20 Nov 2023 15:44:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1700523881; x=1701128681; darn=vger.kernel.org; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=eMqWM59mmofnXAAZyjMA+fb2cK7FdwubXeDGwv5daMg=; b=hrgTtBjmMZBPOKsIe0gCltDtqkn0d43J3kZC34/y8dXDJsyZquleUPDVRzK24/khry zrCsNMKjSTI/sT8XALNUzUAkIxCVRBo4+H69YrhGS1swRke+Wuw8NAmDBdDAW4PBxaRR CKMJ3uV8wxtiXN5HFeyJDkSju1mNbtSKjZwzA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700523881; x=1701128681; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eMqWM59mmofnXAAZyjMA+fb2cK7FdwubXeDGwv5daMg=; b=kWjSTq7cdXGQ5e/r8X22BOQY04b8NYmoDs+zX104BXYKhz6DK4D1SSqVQ0WLeauxal sEWCW6y6XyE9kfv+uyKT9lmP5Cd9DopurfUDjqhttMqcMcYnWkdSvNDxa1TwiMYDp9NY Om7n3+O8qXGjlHAx8gsBFBKyymv6oYse7tf4JcQY3NiiTA0lsW6QklwzHcg7u99zmRp3 slX/EUFMHli0v2jPXSv2sGQ93E2Su0KTeXg+B2SNWWeNgy0iB1fKFhPgtYvjCuxI8Nl+ HVRo0cdHPzSAydtxIC2CRydC7j7ztifvN+hcZuR6uN3wTsWkiMti+vR1OeuOGTZ7Kb9i PvoA== X-Gm-Message-State: AOJu0YwFw3iH/8niELoyyoibzAXi7BK5kEZA1Twkc/b0WinAwHVKF1FM 6DtX/r//Tubt+kywoXnOll0myw== X-Google-Smtp-Source: AGHT+IH6NfmgFXQf4qJ3KR6q+jcd55JEqo667TTnD/w0jo6I47cQcnKfVWP5EuvQF2bAfDUEGzECRg== X-Received: by 2002:a05:6358:7e14:b0:16b:c63d:5dfe with SMTP id o20-20020a0563587e1400b0016bc63d5dfemr9266167rwm.16.1700523881362; Mon, 20 Nov 2023 15:44:41 -0800 (PST) Received: from lvnvda5233.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id i9-20020ac871c9000000b0041803dfb240sm3053384qtp.45.2023.11.20.15.44.40 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Nov 2023 15:44:41 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, gospo@broadcom.com, Somnath Kotur Subject: [PATCH net-next 04/13] bnxt_en: Add page info to struct bnxt_ctx_mem_type Date: Mon, 20 Nov 2023 15:43:56 -0800 Message-Id: <20231120234405.194542-5-michael.chan@broadcom.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20231120234405.194542-1-michael.chan@broadcom.com> References: <20231120234405.194542-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org This will further improve the organization of the bnxt_ctx_mem_info structure by moving the standalone page info structures into the bnxt_ctx_mem_type array. Add the allocation and free logic first and the next patch will migrate to use the new infrastructure. Reviewed-by: Somnath Kotur Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 31 +++++++++++++++++++++++ drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + 2 files changed, 32 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index df25b559ee45..3b18bcee151a 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7187,6 +7187,27 @@ static void bnxt_init_ctx_initializer(struct bnxt_ctx_mem_type *ctxm, ctxm->init_value = 0; } +static int bnxt_alloc_all_ctx_pg_info(struct bnxt *bp, int ctx_max) +{ + struct bnxt_ctx_mem_info *ctx = bp->ctx; + u16 type; + + for (type = 0; type < ctx_max; type++) { + struct bnxt_ctx_mem_type *ctxm = &ctx->ctx_arr[type]; + int n = 1; + + if (!ctxm->max_entries) + continue; + + if (ctxm->instance_bmap) + n = hweight32(ctxm->instance_bmap); + ctxm->pg_info = kcalloc(n, sizeof(*ctxm->pg_info), GFP_KERNEL); + if (!ctxm->pg_info) + return -ENOMEM; + } + return 0; +} + static int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) { struct hwrm_func_backing_store_qcaps_output *resp; @@ -7298,6 +7319,7 @@ static int bnxt_hwrm_func_backing_store_qcaps(struct bnxt *bp) } for (i = 0; i < tqm_rings; i++, ctx_pg++) ctx->tqm_mem[i] = ctx_pg; + rc = bnxt_alloc_all_ctx_pg_info(bp, BNXT_CTX_MAX); } else { rc = 0; } @@ -7564,6 +7586,7 @@ static void bnxt_free_ctx_pg_tbls(struct bnxt *bp, void bnxt_free_ctx_mem(struct bnxt *bp) { struct bnxt_ctx_mem_info *ctx = bp->ctx; + u16 type; int i; if (!ctx) @@ -7583,6 +7606,14 @@ void bnxt_free_ctx_mem(struct bnxt *bp) bnxt_free_ctx_pg_tbls(bp, &ctx->cq_mem); bnxt_free_ctx_pg_tbls(bp, &ctx->srq_mem); bnxt_free_ctx_pg_tbls(bp, &ctx->qp_mem); + + for (type = 0; type < BNXT_CTX_MAX; type++) { + struct bnxt_ctx_mem_type *ctxm = &ctx->ctx_arr[type]; + + kfree(ctxm->pg_info); + ctxm->pg_info = NULL; + } + ctx->flags &= ~BNXT_CTX_FLAG_INITED; kfree(ctx); bp->ctx = NULL; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 757d2edb8c05..7e67df57b8af 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1573,6 +1573,7 @@ struct bnxt_ctx_mem_type { }; u32 split[BNXT_MAX_SPLIT_ENTRY]; }; + struct bnxt_ctx_pg_info *pg_info; }; #define BNXT_CTX_MRAV_AV_SPLIT_ENTRY 0