From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 590E745D18; Sat, 16 Nov 2024 02:13:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E553142EC4; Sat, 16 Nov 2024 02:13:00 +0100 (CET) Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by mails.dpdk.org (Postfix) with ESMTP id 9088240A6C for ; Sat, 16 Nov 2024 02:12:58 +0100 (CET) Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-2ea379ef02fso117210a91.3 for ; Fri, 15 Nov 2024 17:12:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1731719577; x=1732324377; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FspJsoOE3JTM61D0JHSzFeo7osLzbLtdyOF0dJ9SyYA=; b=VBZs2yIyWt6tY0b19WcyXKkn+AKaQhtq924Cvez/ZWFOTxC/mrvj+dWaimydPKkSky z6ENkJge36oDSmcMbru7dHi4JU10O1L5KpdnVnlkYZ1ISHCnMfFyF78E/fS4qF9QNrG5 Ee2ZT7nqKz4Z4vTlpF+Tmi/84KLrnJvPKhy1k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731719577; x=1732324377; h=content-transfer-encoding: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=FspJsoOE3JTM61D0JHSzFeo7osLzbLtdyOF0dJ9SyYA=; b=oNr1hV9kHCzEAU95zimZp+0xzGrcDvRPit07Ocy19izHmFos80N5Q9lfYB1mN+ySMR cpcks2Yv0DU9Zs/YZwz9XmRxFTsQpP3+FloW7d+hw0/f6jBDeMIMKY+9sPhbN8hIQseb hNO7vfJD/q0KVFLTme5043exZ/whPCsygEd9OIEXqKMn33nxydafweRjMJREUhLbgIkI oR/1lR+v6P8IVNyEpSfbCY1xZ4ajy0E9NMvd6ojvoR2JISOm7p74zWna0O3WaAWW4GGE JebdmdTvFqi7b1QymwIZAp3e7u8F9yz578Op1QRwFaSc00FEl1gbX+ztuPmAuhuqPEuM 7qnQ== X-Gm-Message-State: AOJu0YznBBXWzXBypOzsNse+bD3c/R7b9KnxJUip5RMkLG+ZwvAvL/li Dh6DoltPc8Wvu5Y80pBAVP2vXeAYGyDgnFsCO8DJHpdUU1yVzrIchYHq+Bi2uqxNAEe2CnQw8LN yJ1LAOmYUzU3o/Z7q/4o0+WRRAjGiaCHjirMOUeaplf/1EzIjhfCUeBft8ryiAFDapxa68EBefJ cruh75PLqNX3qRNjot3TGQqqF/alSY7n4= X-Google-Smtp-Source: AGHT+IFISPrFIEu6jVqzamslbBCg2V+F8nnG/pabBrXmakrL/SwRgcIsx5owMHRhO5HrWA8l2BarPQ== X-Received: by 2002:a17:90b:1a90:b0:2e2:c6a6:84da with SMTP id 98e67ed59e1d1-2ea1559d5bfmr5017541a91.34.1731719577145; Fri, 15 Nov 2024 17:12:57 -0800 (PST) Received: from localhost.localdomain ([136.52.21.78]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2ea06f9c677sm3818233a91.36.2024.11.15.17.12.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 15 Nov 2024 17:12:55 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Andy Gospodarek Subject: [PATCH 2/2] net/bnxt: add support for Rx profile selection Date: Fri, 15 Nov 2024 17:12:49 -0800 Message-Id: <20241116011249.48013-2-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20241116011249.48013-1-ajit.khaparde@broadcom.com> References: <20241116011249.48013-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Some firmware versions can support the selection of Rx profile during Rx and AGG ring allocation. Check if the firmware sets the HWRM_FUNC_QCAPS_OUTPUT_FLAGS_EXT3_RX_RATE_PROFILE_SEL_SUPPORTED flag and set the new Rx profile. Signed-off-by: Ajit Khaparde Reviewed-by: Andy Gospodarek --- drivers/net/bnxt/bnxt.h | 1 + drivers/net/bnxt/bnxt_hwrm.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 771349de6c..0402de3eb9 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -866,6 +866,7 @@ struct bnxt { #define BNXT_FW_CAP_TX_COAL_CMPL BIT(10) #define BNXT_FW_CAP_RX_ALL_PKT_TS BIT(11) #define BNXT_FW_CAP_BACKING_STORE_V2 BIT(12) +#define BNXT_FW_CAP_RX_RATE_PROFILE BIT(17) #define BNXT_FW_BACKING_STORE_V2_EN(bp) \ ((bp)->fw_cap & BNXT_FW_CAP_BACKING_STORE_V2) #define BNXT_FW_BACKING_STORE_V1_EN(bp) \ diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 351effb28f..d015ba2b9c 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -1139,8 +1139,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) int rc = 0; struct hwrm_func_qcaps_input req = {.req_type = 0 }; struct hwrm_func_qcaps_output *resp = bp->hwrm_cmd_resp_addr; + uint32_t flags, flags_ext2, flags_ext3; uint16_t new_max_vfs; - uint32_t flags, flags_ext2; HWRM_PREP(&req, HWRM_FUNC_QCAPS, BNXT_USE_CHIMP_MB); @@ -1153,6 +1153,7 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->max_ring_grps = rte_le_to_cpu_32(resp->max_hw_ring_grps); flags = rte_le_to_cpu_32(resp->flags); flags_ext2 = rte_le_to_cpu_32(resp->flags_ext2); + flags_ext3 = rte_le_to_cpu_32(resp->flags_ext3); if (BNXT_PF(bp)) { bp->pf->port_id = resp->port_id; @@ -1259,6 +1260,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->fw_cap |= BNXT_FW_CAP_RX_ALL_PKT_TS; if (flags_ext2 & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_EXT2_UDP_GSO_SUPPORTED) bp->fw_cap |= BNXT_FW_CAP_UDP_GSO; + if (flags_ext3 & HWRM_FUNC_QCAPS_OUTPUT_FLAGS_EXT3_RX_RATE_PROFILE_SEL_SUPPORTED) + bp->fw_cap |= BNXT_FW_CAP_RX_RATE_PROFILE; unlock: HWRM_UNLOCK(); @@ -2227,6 +2230,11 @@ int bnxt_hwrm_ring_alloc(struct bnxt *bp, if (stats_ctx_id != INVALID_STATS_CTX_ID) enables |= HWRM_RING_ALLOC_INPUT_ENABLES_STAT_CTX_ID_VALID; + if (bp->fw_cap & BNXT_FW_CAP_RX_RATE_PROFILE) { + req.rx_rate_profile_sel = + HWRM_RING_ALLOC_INPUT_RX_RATE_PROFILE_SEL_POLL_MODE; + enables |= HWRM_RING_ALLOC_INPUT_ENABLES_RX_RATE_PROFILE_VALID; + } break; case HWRM_RING_ALLOC_INPUT_RING_TYPE_L2_CMPL: req.ring_type = ring_type; @@ -2257,6 +2265,11 @@ int bnxt_hwrm_ring_alloc(struct bnxt *bp, enables |= HWRM_RING_ALLOC_INPUT_ENABLES_RX_RING_ID_VALID | HWRM_RING_ALLOC_INPUT_ENABLES_RX_BUF_SIZE_VALID | HWRM_RING_ALLOC_INPUT_ENABLES_STAT_CTX_ID_VALID; + if (bp->fw_cap & BNXT_FW_CAP_RX_RATE_PROFILE) { + req.rx_rate_profile_sel = + HWRM_RING_ALLOC_INPUT_RX_RATE_PROFILE_SEL_POLL_MODE; + enables |= HWRM_RING_ALLOC_INPUT_ENABLES_RX_RATE_PROFILE_VALID; + } break; default: PMD_DRV_LOG_LINE(ERR, "hwrm alloc invalid ring type %d", -- 2.39.5 (Apple Git-154)