From patchwork Mon Mar 10 18:31:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010505 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f174.google.com (mail-oi1-f174.google.com [209.85.167.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91AE2239584 for ; Mon, 10 Mar 2025 18:33:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631632; cv=none; b=cbkegISNdO0CpSKfe5N2Db9kEs4KhYUm7t8pLxwb+/Ha5ZnwoXXoF3G8kRlMduZM4PdLhzqR/9030A5fSO+jpbKuhiynoaM+xeIl2Hqe72MJWeLZpESsxhmeMUC4AJ7T8YeJjJqMRK5j41S2anrIU5OyCaYKGcCH4Sj9yPIq8ok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631632; c=relaxed/simple; bh=hDSwCR2EJ6zQS5CrB+qdsWway5Jl4Jb6uHgrm5IZsLs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kzVHwUpSCbisgQSIBHyJBsHwQqcNR3qMiJ073ZKX/oKcOmcouPYUn7FOJqRmLtsoBekjocmmo1Uv554NrNfZ4kkK49yX5TzheJPrgWhE0V6x1AiB8hNzJb6GYiuyJMwlzeSM5x6eA9d88bdsnqNn1ONT6orHQTnrfoNFy2R2kxY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=GT+I4lub; arc=none smtp.client-ip=209.85.167.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="GT+I4lub" Received: by mail-oi1-f174.google.com with SMTP id 5614622812f47-3f9832f798aso477958b6e.2 for ; Mon, 10 Mar 2025 11:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631629; x=1742236429; darn=vger.kernel.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=3LubyWzyrz7Pvfzr8t/ugRh41HCzGBkSyMKSZcdamIc=; b=GT+I4lub2SKqQ2kvyWOPS6ZQ0km7+rnJ+KY9EjQrfkdj6sftLGBfd41Cd4vAjZgFe9 GIdOxYl+b3uzi1HWGnLwdkjkBRQvl2JJExXj0iV0xORqRFMDsYPLEyzxcbspe7q+KbyQ yKvl21DrHHM1CPQKRnVG4Kbosm3i8/oksMfyc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631629; x=1742236429; 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=3LubyWzyrz7Pvfzr8t/ugRh41HCzGBkSyMKSZcdamIc=; b=waYmfZZ81VnrDSNP2zdW6ySVJyihNMiuWUqPsAa9Cm+nF4qxO5N1iXykelKJ/2A/AS HhXj+9hpS0P0bSG2Zr6nsohlHrrz5yHEJLpaQVDy3R7wPTHYkDlEePSwnt8kVPAz/dLC mUD7OMqgB0cb/IsLqqo5t+t7a/vPDxbyhwJRmI4gayePIc0F5OIV0wuhnP35hfMxkYg5 uPeSNmNz1OyQGY+OnfnmCiWUbKlUaVnROrndaUCiLJDaBIlrWiQaE+pDdiEt3hp4yotT N+h/WBJq4QMi11wijyQhGs/BQJYb4GW0/mtlBa4ViiW33WLOG2JCLV9/X3judQw2eA03 jnug== X-Gm-Message-State: AOJu0YyzVRngNYefc/R2pNZI2YSPhx8yIA6X9lDWveX3XrPazX10wuj5 yyTmt+N1xwAAwZOIc8nStXmE9CBXMutb2C87CtbRcsxRElTQ37oeh8wNJlpmB8nUP696jIN+L1w = X-Gm-Gg: ASbGncsuphQOPDKBt1syLxCdb9S+W8OxJBL646dvHzib0JCWIhhnEhQOi1Hg22s9jHm XFcJoDy8VTmHbynb96IH9+QpIBHs6SR2NZ+447v21EnJgFfwQ8Vakx7G+rv/Kg1SGq0/zUm7zwq QPfbaJfLazCiRt5uPFVgv/THjmCWO31nZV11mT5dKVjsEe1Aj2KvsuTHUU2eDEt8r3rtxK9T9gx ATIsQTfX3gErU6FS71rEhtz/Emq16U9qOIMPraVRuErOiCNb/lXrvjg19GqIT0hLQhgmb6MIF1P REoBfmeDW/q2syEjkRPGtiz5cCKKGKWZ+4JiFhvXKJvkQekgzb0gcdsypmfgw5CMYnP0TSuGn44 uQUpFBWWVo7bcucwQJvDx X-Google-Smtp-Source: AGHT+IFs6Vts/R/Mpwi2gyu4EjGySHiobrV8+v4Jjl37ghYsvO0c43oXOS6KkhPNejTQYkZpF3sPyw== X-Received: by 2002:a05:6808:250e:b0:3f8:e55c:16d6 with SMTP id 5614622812f47-3fa2c1ad8c3mr347866b6e.28.1741631629554; Mon, 10 Mar 2025 11:33:49 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:33:48 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, Vasuthevan Maheswaran , Hongguang Gao , Selvin Xavier , Damodharam Ammepalli Subject: [PATCH net-next 1/7] bnxt_en: Add support for a new ethtool dump flag 3 Date: Mon, 10 Mar 2025 11:31:23 -0700 Message-ID: <20250310183129.3154117-2-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 From: Vasuthevan Maheswaran When doing a live coredump with ethtool -w, the context data cached in the NIC is not dumped by the FW by default. The reason is that retrieving this cached context data with traffic running may cause problems. Add a new dump flag 3 to allow the option to include this cached context data which may be useful in some debug scenarios. Reviewed-by: Hongguang Gao Reviewed-by: Selvin Xavier Reviewed-by: Damodharam Ammepalli Signed-off-by: Vasuthevan Maheswaran Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c | 9 ++++++--- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index e85b5ce94f58..e93ba0e4f087 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -2697,6 +2697,7 @@ struct bnxt { #define BNXT_DUMP_LIVE 0 #define BNXT_DUMP_CRASH 1 #define BNXT_DUMP_DRIVER 2 +#define BNXT_DUMP_LIVE_WITH_CTX_L1_CACHE 3 struct bpf_prog *xdp_prog; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c index 7236d8e548ab..5576e7cf8463 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c @@ -159,8 +159,8 @@ static int bnxt_hwrm_dbg_coredump_list(struct bnxt *bp, return rc; } -static int bnxt_hwrm_dbg_coredump_initiate(struct bnxt *bp, u16 component_id, - u16 segment_id) +static int bnxt_hwrm_dbg_coredump_initiate(struct bnxt *bp, u16 dump_type, + u16 component_id, u16 segment_id) { struct hwrm_dbg_coredump_initiate_input *req; int rc; @@ -172,6 +172,8 @@ static int bnxt_hwrm_dbg_coredump_initiate(struct bnxt *bp, u16 component_id, hwrm_req_timeout(bp, req, bp->hwrm_cmd_max_timeout); req->component_id = cpu_to_le16(component_id); req->segment_id = cpu_to_le16(segment_id); + if (dump_type == BNXT_DUMP_LIVE_WITH_CTX_L1_CACHE) + req->seg_flags = DBG_COREDUMP_INITIATE_REQ_SEG_FLAGS_COLLECT_CTX_L1_CACHE; return hwrm_req_send(bp, req); } @@ -450,7 +452,8 @@ static int __bnxt_get_coredump(struct bnxt *bp, u16 dump_type, void *buf, start = jiffies; - rc = bnxt_hwrm_dbg_coredump_initiate(bp, comp_id, seg_id); + rc = bnxt_hwrm_dbg_coredump_initiate(bp, dump_type, comp_id, + seg_id); if (rc) { netdev_err(bp->dev, "Failed to initiate coredump for seg = %d\n", diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 9c5820839514..e031340bdce2 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -5077,8 +5077,9 @@ static int bnxt_set_dump(struct net_device *dev, struct ethtool_dump *dump) { struct bnxt *bp = netdev_priv(dev); - if (dump->flag > BNXT_DUMP_DRIVER) { - netdev_info(dev, "Supports only Live(0), Crash(1), Driver(2) dumps.\n"); + if (dump->flag > BNXT_DUMP_LIVE_WITH_CTX_L1_CACHE) { + netdev_info(dev, + "Supports only Live(0), Crash(1), Driver(2), Live with cached context(3) dumps.\n"); return -EINVAL; } From patchwork Mon Mar 10 18:31:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010506 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f172.google.com (mail-oi1-f172.google.com [209.85.167.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E5A323959D for ; Mon, 10 Mar 2025 18:33:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631633; cv=none; b=SO0jJVw92HY7plYuzPCZlfcls+R5oszDhThDVhvnkgMmhvjBUtjTr/EF1QsEcLJqd8qZLkYbTxghUeDC6McvNKMy7CyXR83FoC7xglNuGDE1LnELqkn3nOBSJ2oS9ZzJJdVRnv6pTHN6iaqIHuD3PfqadXMRifWx/yXSnAxeuH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631633; c=relaxed/simple; bh=bTQY8uS+1LYiQ0iWn4H7rJxDNlUKUFObncvvxLaNiEU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SS8pJFBoQB1EyEXmRj1xE9pIDq/5m1Uw5a6jV6yB00wx3z5XDrUAGKoLKWTQOTK0XwN1j6xy1brL2t1pcNv1dQDk0JDPRZw23EvnrvDfp6k/+evQgJxe2rFX5on6GecO/AJbOjJmMzLaAw+dDmxEbHGM7QPmZiC5HcP/Xo12jQo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=czjrhssW; arc=none smtp.client-ip=209.85.167.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="czjrhssW" Received: by mail-oi1-f172.google.com with SMTP id 5614622812f47-3f6eaa017d0so1339547b6e.0 for ; Mon, 10 Mar 2025 11:33:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631630; x=1742236430; darn=vger.kernel.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=dQcYm+RNG7NKCnYHBSP17FJo0lK3F8vXn56lJD0Wb0c=; b=czjrhssWBvdu9hpg/zORC+qUOOViI3eVictkf0u88k49mlXtlmqSgbZdBqxyjUWeir btVN7YMguzs4NFxaqBUwyVYWXN/RUI9xgdLHcNK1SDEyB+YCQiMFGI3JvDxDaiZdrTnq PBAgdrw7eqHPiJMuZ2jkN/y3R7ueGE+/8dcZQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631630; x=1742236430; 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=dQcYm+RNG7NKCnYHBSP17FJo0lK3F8vXn56lJD0Wb0c=; b=GTxTRgKywhBANQRG9QfWG2x0cEoqZBvJdE4K/Hxg2VqBk7wPipHqGuByEGp78Q0SK/ o1aWKN6Cje3nA+Yz3zS9m4+cdf2W2zEvldvNhMGDsfc2lm0SMFSZCCrcf2KT1fNXX1Dw ohCpQiEi8lclPtT79816t0xaMw5tl5q6pAfNK0GElEL9ydqDerY5eg93eL8tD9U6o9rQ wGtv84fhCmTzfeqX+ZfC4KavNrteW1AWPUryEi6ipf9f+WZMXqrfDSziy8HRhAQMfuSL 4DvPaEzeRIhFngcayKddgnsa9ajGDPhfqQJGzCXQ2WYw3cKXqgepljmHgXdxOap6droN cM5g== X-Gm-Message-State: AOJu0YwQcuCb/y/D5p+wV/+ZCzdMHI69zs6t1DiGKXtmGXS4kboj0gD8 syiRFs21pXgLkeP82yr5TxB207JG5Y76JKq1nJKyetT8Wilc9ngKnXtQc4aUZw== X-Gm-Gg: ASbGncu7rB/sd0R4GCU8FUV0sWyKakT2LfBMG2Mf+xTK86XJTTGF8XhiQ1/msRYCWlR 1bPTK6xZLcgMDi/NBV8yiSpet2tGzsRVydYFOGF2+6vTyjwjieO5s1KO1Oy4en2dRi8G69Nfp0F nD20qvCljCS7Ei693X5hVtMgpLELKyHhSCBOaiZCzKgjOqNLrb3Qdw6oM19f8Z/m8RVx7y+wcDf 7wxY6eLL3K2hCwCUAYXvO9mo72oASYIbhaIr1recATl6a31wJzaVsaU0vYu//fCzAbPMMqqQN5Q 1nx7u/O7er2ktCgkn1VVMjJp+4DuARM9iWVlJCmhvwEvLVLq38d3i5E0qNno4sWhvborKAE344W xSPIz9V5239bgtN0n7aPs X-Google-Smtp-Source: AGHT+IHSOYWY78MSYdtpCChweWwqo+GbEE0ONJtmap4ONc1LiduQMFPXfxdzovh7dl3yrHFFZP4RyA== X-Received: by 2002:a05:6808:612:b0:3f6:aad5:eaba with SMTP id 5614622812f47-3f6aad5f162mr4086877b6e.7.1741631630624; Mon, 10 Mar 2025 11:33:50 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:33:50 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com Subject: [PATCH net-next 2/7] bnxt_en: Refactor bnxt_hwrm_nvm_req() Date: Mon, 10 Mar 2025 11:31:24 -0700 Message-ID: <20250310183129.3154117-3-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 bnxt_hwrm_nvm_req() first searches the nvm_params[] array for the NVM parameter to set or get. The array entry contains all the NVM information about that parameter. The information is then used to send the FW message to set or get the parameter. Refactor it to only do the array search in bnxt_hwrm_nvm_req() and pass the array entry to the new function __bnxt_hwrm_nvm_req() to send the FW message. The next patch will be able to use the new function. Reviewed-by: Pavan Chebbi Signed-off-by: Michael Chan --- .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 63 ++++++++++--------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index b06fcddfc81c..3c0af8ca50ae 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c @@ -1019,37 +1019,19 @@ static int bnxt_dl_info_get(struct devlink *dl, struct devlink_info_req *req, } -static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, - union devlink_param_value *val) +static int __bnxt_hwrm_nvm_req(struct bnxt *bp, + const struct bnxt_dl_nvm_param *nvm, void *msg, + union devlink_param_value *val) { struct hwrm_nvm_get_variable_input *req = msg; - struct bnxt_dl_nvm_param nvm_param; struct hwrm_err_output *resp; union bnxt_nvm_data *data; dma_addr_t data_dma_addr; - int idx = 0, rc, i; - - /* Get/Set NVM CFG parameter is supported only on PFs */ - if (BNXT_VF(bp)) { - hwrm_req_drop(bp, req); - return -EPERM; - } - - for (i = 0; i < ARRAY_SIZE(nvm_params); i++) { - if (nvm_params[i].id == param_id) { - nvm_param = nvm_params[i]; - break; - } - } - - if (i == ARRAY_SIZE(nvm_params)) { - hwrm_req_drop(bp, req); - return -EOPNOTSUPP; - } + int idx = 0, rc; - if (nvm_param.dir_type == BNXT_NVM_PORT_CFG) + if (nvm->dir_type == BNXT_NVM_PORT_CFG) idx = bp->pf.port_id; - else if (nvm_param.dir_type == BNXT_NVM_FUNC_CFG) + else if (nvm->dir_type == BNXT_NVM_FUNC_CFG) idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID; data = hwrm_req_dma_slice(bp, req, sizeof(*data), &data_dma_addr); @@ -1060,23 +1042,23 @@ static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, } req->dest_data_addr = cpu_to_le64(data_dma_addr); - req->data_len = cpu_to_le16(nvm_param.nvm_num_bits); - req->option_num = cpu_to_le16(nvm_param.offset); + req->data_len = cpu_to_le16(nvm->nvm_num_bits); + req->option_num = cpu_to_le16(nvm->offset); req->index_0 = cpu_to_le16(idx); if (idx) req->dimensions = cpu_to_le16(1); resp = hwrm_req_hold(bp, req); if (req->req_type == cpu_to_le16(HWRM_NVM_SET_VARIABLE)) { - bnxt_copy_to_nvm_data(data, val, nvm_param.nvm_num_bits, - nvm_param.dl_num_bytes); + bnxt_copy_to_nvm_data(data, val, nvm->nvm_num_bits, + nvm->dl_num_bytes); rc = hwrm_req_send(bp, msg); } else { rc = hwrm_req_send_silent(bp, msg); if (!rc) { bnxt_copy_from_nvm_data(val, data, - nvm_param.nvm_num_bits, - nvm_param.dl_num_bytes); + nvm->nvm_num_bits, + nvm->dl_num_bytes); } else { if (resp->cmd_err == NVM_GET_VARIABLE_CMD_ERR_CODE_VAR_NOT_EXIST) @@ -1089,6 +1071,27 @@ static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, return rc; } +static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, + union devlink_param_value *val) +{ + struct hwrm_nvm_get_variable_input *req = msg; + const struct bnxt_dl_nvm_param *nvm_param; + int i; + + /* Get/Set NVM CFG parameter is supported only on PFs */ + if (BNXT_VF(bp)) { + hwrm_req_drop(bp, req); + return -EPERM; + } + + for (i = 0; i < ARRAY_SIZE(nvm_params); i++) { + nvm_param = &nvm_params[i]; + if (nvm_param->id == param_id) + return __bnxt_hwrm_nvm_req(bp, nvm_param, msg, val); + } + return -EOPNOTSUPP; +} + static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id, struct devlink_param_gset_ctx *ctx) { From patchwork Mon Mar 10 18:31:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010507 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87261235BF4 for ; Mon, 10 Mar 2025 18:33:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631636; cv=none; b=s1N4+CXVT810oYpOTuTq2uua0VCk0/eYxNGZ+xZXTb9Gk0dhfXP6Kawfk8VHuuWPjDLjV6sRazCGAOlr2aDt91iPsZqiGTt/J86hepREKu358XEQAzGgC3KwxBhoJthXWFhMDjiomeY2pF0xIZyIKkHsiytR7beT1nDMErLxLaM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631636; c=relaxed/simple; bh=0kCosAWUNYDhOko0P47IhiB1D35KseYi4HvQHsi5DWo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MeBim/q5s+CiiG9WpgD3JhlcTjslvMyM8y7hnt2pGTSLzPmK+O2XvXYqA36vgKxmXqxXgml/L4eT5e10lyfJri/LZsZIsl9jLq35Sb1c7Lxvj3XwLmat5hYmArT9K6+PO5G1ANrU4PP/SoayIhM0nEghyqoAMEbm6i0ZheJpvJU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=GcsUS+wi; arc=none smtp.client-ip=209.85.167.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="GcsUS+wi" Received: by mail-oi1-f176.google.com with SMTP id 5614622812f47-3f6aab81647so1247309b6e.3 for ; Mon, 10 Mar 2025 11:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631633; x=1742236433; darn=vger.kernel.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=uZFPBdPBNv499Vkhna3146EthQda91AMmoS83ru5sdU=; b=GcsUS+wiurLORlkniHS8C/Qp+lHkxwmedGKS6FJ4ADYSfUY8SekEZE8nbXyRX2V6Ww 5dvccVJ/DB+YDgBMKbh4ptVwZ1Y5V+2I9eDlPIGn7HdgBTchl/++pjs6NqnG+Rkxnh01 MKbtyjrxkjppqBZLzXD8FzcpUFJk5eElDUS/E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631633; x=1742236433; 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=uZFPBdPBNv499Vkhna3146EthQda91AMmoS83ru5sdU=; b=e9YCIYBiwiFIM6Al+4FjFdrqL9MWXD4aw3IQhR0v79JBIxXj3uoyYNprG7c2boriNt 0uU+g70AQmu86hU6sLOMripkWEDubHwrVWxSfNsJjI2ySMCEh9fxX7YFu22F2zNMMUKg swRBBpNqkhp18bmdANpGaTSrPNpJgzD8ObIKh0agBfhuTam6VBNg14g+0PeBKQqcDm8c EVJpdyWsvwSHhD9FkseGbDjbW+fNtWTYqgGS3i40GUCmaphL5I1CWQbuCTAfl5jkN4FZ V/CrLFnHDWKIcoB9S+lbvUtE1IIpIvCXD9j6rD2Kw6mqo9PCoHbtKMgCQkuA5zxyGljw rhcQ== X-Gm-Message-State: AOJu0YzMApXG8rhi1Y3E67/kJX73GEGSy2aLzyIwY+Rk8Xl6wpE5sEcR 3A7YFnypv5AoNcaiU670PUWsVj5pJYWs7bddw3PEBbwO/MK/VMsDplWmV3QLG17xXl/YncCJK4A = X-Gm-Gg: ASbGncuKJ1TYHKHRsniZM7fw9e/8cQioP+AM9g7/t1FVCqpmpQZRG0nfq3f5CCHQKLC YdPtEwzWFOeARpKJSKI1QTGaekWQBnLFBw4x9u4/P7JtJmWJT2nMUm0vIfBAoYtUco53lN5l8p2 LCWwB6Hb/TLbo/1HzLsNC19/0TW8MA2WqTiEXvZgJW/e3ktfG20Gqtan7mloyi9TKb9OEncE5hB tJ8f9Q4prCZBempVZx7zVENVJf0SOTOsJPrTZ10bk0CoHE3Ro+F+xi2jrxpEva4mU2X9ntu2z4Q CvhUuKNqtE7iSHd0RCKCajdMeND169NpaefLHHZOoEqu9PmzkS7TNXi8VEq5legu2eieWXGQ2Ja 5CUlBOV/9GtuLBMyMhIvW X-Google-Smtp-Source: AGHT+IGBqS1id6EOVnTgtrzIrXI2YK79YrqDlJV/y+MJTs+ei9eZFl4Kk8HvV12icISp6icd7/6iEA== X-Received: by 2002:a05:6808:2013:b0:3f8:c486:9b27 with SMTP id 5614622812f47-3f8c4869e0emr2739408b6e.22.1741631633409; Mon, 10 Mar 2025 11:33:53 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:33:52 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, Jiri Pirko Subject: [PATCH net-next 3/7] bnxt_en: Add devlink support for ENABLE_ROCE nvm parameter Date: Mon, 10 Mar 2025 11:31:25 -0700 Message-ID: <20250310183129.3154117-4-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 From: Pavan Chebbi Add set/show support for the ENABLE_ROCE NVM parameter to enable/disable RoCE for a PF. Reviewed-by: Andy Gospodarek Co-developed-by: Michael Chan Signed-off-by: Pavan Chebbi Signed-off-by: Michael Chan --- Cc: Jiri Pirko --- Documentation/networking/devlink/bnxt.rst | 2 ++ .../net/ethernet/broadcom/bnxt/bnxt_devlink.c | 32 +++++++++++++++++++ .../net/ethernet/broadcom/bnxt/bnxt_devlink.h | 2 ++ 3 files changed, 36 insertions(+) diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst index a4fb27663cd6..9a8b3d76d11f 100644 --- a/Documentation/networking/devlink/bnxt.rst +++ b/Documentation/networking/devlink/bnxt.rst @@ -24,6 +24,8 @@ Parameters - Permanent * - ``enable_remote_dev_reset`` - Runtime + * - ``enable_roce`` + - Permanent The ``bnxt`` driver also implements the following driver-specific parameters. diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index 3c0af8ca50ae..56b9012903b4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c @@ -675,6 +675,8 @@ static const struct bnxt_dl_nvm_param nvm_params[] = { NVM_OFF_MSIX_VEC_PER_PF_MAX, BNXT_NVM_SHARED_CFG, 10, 4}, {DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN, NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7, 4}, + {DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE, NVM_OFF_SUPPORT_RDMA, + BNXT_NVM_FUNC_CFG, 1, 1}, {BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK, BNXT_NVM_SHARED_CFG, 1, 1}, }; @@ -1128,6 +1130,32 @@ static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id, return bnxt_hwrm_nvm_req(bp, id, req, &ctx->val); } +static int bnxt_dl_roce_validate(struct devlink *dl, u32 id, + union devlink_param_value val, + struct netlink_ext_ack *extack) +{ + const struct bnxt_dl_nvm_param nvm_roce_cap = {0, NVM_OFF_RDMA_CAPABLE, + BNXT_NVM_SHARED_CFG, 1, 1}; + struct bnxt *bp = bnxt_get_bp_from_dl(dl); + struct hwrm_nvm_get_variable_input *req; + union devlink_param_value roce_cap; + int rc; + + rc = hwrm_req_init(bp, req, HWRM_NVM_GET_VARIABLE); + if (rc) + return rc; + + if (__bnxt_hwrm_nvm_req(bp, &nvm_roce_cap, req, &roce_cap)) { + NL_SET_ERR_MSG_MOD(extack, "Unable to verify if device is RDMA Capable"); + return -EINVAL; + } + if (!roce_cap.vbool) { + NL_SET_ERR_MSG_MOD(extack, "Device does not support RDMA"); + return -EINVAL; + } + return 0; +} + static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, union devlink_param_value val, struct netlink_ext_ack *extack) @@ -1192,6 +1220,10 @@ static const struct devlink_param bnxt_dl_params[] = { BIT(DEVLINK_PARAM_CMODE_PERMANENT), bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, bnxt_dl_msix_validate), + DEVLINK_PARAM_GENERIC(ENABLE_ROCE, + BIT(DEVLINK_PARAM_CMODE_PERMANENT), + bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, + bnxt_dl_roce_validate), DEVLINK_PARAM_DRIVER(BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, "gre_ver_check", DEVLINK_PARAM_TYPE_BOOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h index b8105065367b..7f45dcd7b287 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h @@ -41,8 +41,10 @@ static inline void bnxt_dl_set_remote_reset(struct devlink *dl, bool value) #define NVM_OFF_MSIX_VEC_PER_PF_MAX 108 #define NVM_OFF_MSIX_VEC_PER_PF_MIN 114 #define NVM_OFF_IGNORE_ARI 164 +#define NVM_OFF_RDMA_CAPABLE 161 #define NVM_OFF_DIS_GRE_VER_CHECK 171 #define NVM_OFF_ENABLE_SRIOV 401 +#define NVM_OFF_SUPPORT_RDMA 506 #define NVM_OFF_NVM_CFG_VER 602 #define BNXT_NVM_CFG_VER_BITS 8 From patchwork Mon Mar 10 18:31:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010508 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com [209.85.210.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CFBF23AE67 for ; Mon, 10 Mar 2025 18:33:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631638; cv=none; b=VTznnHMV1TB+gN308CsF/yJSbQCLFBxL9XPoj9x048zUVJ9YtZu2CtfH0SJH/ytGwIMJzNOcYNrnLaemueFVzxjmvVrhPTPjKiZjglN0iJ1khPZjqd+myUCVqi5w7NxpXTTnopBKQ8+DYce+HGxvZX+wFa/NlM8tv1nCIHh/9HI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631638; c=relaxed/simple; bh=X4EmDIHKxCO1Tbgawu0l+i7aDrgAym5PvLKH3/pHB7c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ey0VZmpHcOFcvV710Ok6Lz1luEt9YdRhTVm5s09tOywJ+lcB/IMGXKMbFe+WM14EIEd5hm0S29fNEa0z5sUklU6dZQJJ+GCJQTED8wqnjiH4u9hCE3Tl24/tSbT8nU5gis5W+AZUbbs74UEpB+tSVF+mtaliOcmYdREoKhCIQ5g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=GipNl7lw; arc=none smtp.client-ip=209.85.210.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="GipNl7lw" Received: by mail-ot1-f50.google.com with SMTP id 46e09a7af769-7271239d89fso1057222a34.0 for ; Mon, 10 Mar 2025 11:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631636; x=1742236436; darn=vger.kernel.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=z/qyPLT7qupz3BVeiKpzkMthg4z1ljJw+9vJHQvjn5g=; b=GipNl7lwX4Anfn1X/0ALVsHRSl6FrC8IP1biZ5aLxGC+bnNkpuPksGOIv2J+cHTymO czT8UOKe+a/4VWmP+lAdKQJFZbMoTfJ5ocMP3HO2g2by3PX//+0Q70zYoZpMQ1QdrvXe WDD/Q7EbBWfKLZjYDmzOZcVFp9FOeX6RDIzB0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631636; x=1742236436; 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=z/qyPLT7qupz3BVeiKpzkMthg4z1ljJw+9vJHQvjn5g=; b=JSdr8SRSaELThw49Y1pBh9ZPprdAN2C+GnCnWekIpoPdcOufKyIhh6GZlGvjwda5pX 94j1UnZQp4UVvJv3Mzs9VXIavHuV04njMJxTUdTVSfKUrlcsFNLeKGPHzkaWoG+2VLX0 07BUVk3T1Fg2gvNZq4LIfuiOavfD/yGnTz9iFtt9nks8uq+pNVZkehlMF919E5/hwMS6 0IHRp09rrohEaPPkqX42TtzY5j44l8EnvZbRFJyKwTzbXn6Machv3STH6L4a+AIjxA4U Owomt6Hi7XRUZ6WNmgzeOAetbjh/bOxJro5QMMij5I6RjhqWu0HdBfuXBb8OEjXWlk3l vWaA== X-Gm-Message-State: AOJu0YzSf7XXbAQWdFajFS+/BVLZ1FWzRXgJRpkN/kebpm5WXQIwxRGD s+ZEyhamJVxOQzyPO7S0/M5uMgG4lUDF1QJTn49bkbMnJS1+DV/17Yo1BAyIuA== X-Gm-Gg: ASbGncsPiqOrl/IxrAKuI7nEPibSoJoX0mTvkyUqA+shFB1RBmDaEugIo3OwaPT8AEh shsRMkBPQFepKoiMbmP95j20OHTt1tRlo210A8AakJQuuB8kYrN/zicL+TEIZtVduk7ADmlCAVO S4nrbZ/TgbQ+MKmx5iSf3RoOYNY/66dGdAUhsadvEo9hCuYVXfhIy0/01E3wpo09tAbx4n1CEcV zx65fw2mcP6KUa4yPQ2/nEEdmuApqHGnh7DNh7vACZsEYcJ5ZTp43Ber+dqj7gkA+HkZV1ExpBb z4klqBWzWEVCbakC3ptY3a6R1PTXDRYc7ofPLtG6HWmBY36GQ0lHNOI6+JhFa4Cy8a8zzBRJxLr x7GiAAcTNIwBo4oUBgKq4 X-Google-Smtp-Source: AGHT+IHd+F5NaoiAsDbsdt3YEJ6lHC5GcxutrYUHyPfeQ2m1cCBcXGwBafvT7Du/GRnoji96isIFAg== X-Received: by 2002:a05:6808:244c:b0:3f6:7179:8777 with SMTP id 5614622812f47-3f697b69d28mr6395694b6e.18.1741631636195; Mon, 10 Mar 2025 11:33:56 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:33:55 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, shantiprasad shettar , Somnath Kotur Subject: [PATCH net-next 4/7] bnxt_en: Query FW parameters when the CAPS_CHANGE bit is set Date: Mon, 10 Mar 2025 11:31:26 -0700 Message-ID: <20250310183129.3154117-5-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 From: shantiprasad shettar Newer FW can set the CAPS_CHANGE flag during ifup if some capabilities or configurations have changed. For example, the CoS queue configurations may have changed. Support this new flag by treating it almost like FW reset. The driver will essentially rediscover all features and capabilities, reconfigure all backing store context memory, reset everything to default, and reserve all resources. Reviewed-by: Somnath Kotur Reviewed-by: Pavan Chebbi Signed-off-by: shantiprasad shettar Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index b09171110ec4..49c95bbe2086 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -12300,6 +12300,7 @@ static int bnxt_hwrm_if_change(struct bnxt *bp, bool up) struct hwrm_func_drv_if_change_input *req; bool fw_reset = !bp->irq_tbl; bool resc_reinit = false; + bool caps_change = false; int rc, retry = 0; u32 flags = 0; @@ -12355,8 +12356,11 @@ static int bnxt_hwrm_if_change(struct bnxt *bp, bool up) set_bit(BNXT_STATE_ABORT_ERR, &bp->state); return -ENODEV; } - if (resc_reinit || fw_reset) { - if (fw_reset) { + if (flags & FUNC_DRV_IF_CHANGE_RESP_FLAGS_CAPS_CHANGE) + caps_change = true; + + if (resc_reinit || fw_reset || caps_change) { + if (fw_reset || caps_change) { set_bit(BNXT_STATE_FW_RESET_DET, &bp->state); if (!test_bit(BNXT_STATE_IN_FW_RESET, &bp->state)) bnxt_ulp_irq_stop(bp); From patchwork Mon Mar 10 18:31:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010509 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E3AB235BFB for ; Mon, 10 Mar 2025 18:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631643; cv=none; b=hzxtdWkAFyMiyHGVwnW0OD3pZAUDqYRy1ULLbf9zsmKqQRQVXCokKtn1Z4iGi5bmxiqe3z/snw0qXYWkMl57dmnR6fffPFAEHlCKTMomf/Ch9T+AjhudLLWpOWekjxjvyDTVv/EtdDqfIb204LZq2+AYkjiA8ypESBTzHLamaz0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631643; c=relaxed/simple; bh=JrhOsfOhZ+1cQci9cfZKZOP88usyAwP/q6Zumwk+wjM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WvqQ+Wg70MCCntXJxHH+Bh9KjTN+05On4/zz0mcWzBkWpdjpOC1/B5+oo6KAaPIp7sH1vKTl/MjkKgdOjeSawHkLeAE7FqHMXb0gd6DKvkeoSXk7r5Sz806fGQtCTC0aushb8+YC12z+bQ5jvfN5mR0klMoFjHofzzEIaE3kMAY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=Oa8CrPqh; arc=none smtp.client-ip=209.85.210.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="Oa8CrPqh" Received: by mail-ot1-f52.google.com with SMTP id 46e09a7af769-72737740673so2372288a34.3 for ; Mon, 10 Mar 2025 11:34:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631640; x=1742236440; darn=vger.kernel.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=qhrDw2zPlbW/SIgP2gVmLS53I+lE4uYNlRDJevlb7LM=; b=Oa8CrPqhq5574urCuBzFwo1ie7cQECjdfBORt3MOc/DCOTIh4L4cGx/PQU6V0Xu3Zi N43Wf8tZM7IMlNEhWwwmivxVhvqpCSQR+r2ASRfbzNOYnfE8QFM4y/+5/FRTJm5+zVlR 2A5vDniceVQ9tdo1iILMKIpcrb6tw1eSWcfVg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631640; x=1742236440; 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=qhrDw2zPlbW/SIgP2gVmLS53I+lE4uYNlRDJevlb7LM=; b=Xikem3o2lnymLp78/VHWgtPAF3NrpxA2tc/YQ3sN7vdIZ915nbec0UhMSTen2aD7gX 9oiEXXdEJf9lOTuetP3/PGpTqG8uGmAo0DP9oUZ3g0pcwZCo+oq6qWAFX9hVWHRxrWIn D5Rprjf35OX/xp6Y6iNVdMKiUuK5hcFAFOfkps+3go7gNMGH79p83sgS6uB7N/7AusMl jTshPIeFC6JQjng+m3Kzadbx/adj5ZD0C/ylZWFnHXbvY3rdrIemOVGNd6Fxsm8p+JV8 jxiAvEMKuIkEXp+TyxwhnPFeAAjqT2ARnEnUzeOLyBF1SwCv63B61pJ1cnlH9MqwgKJY zOSw== X-Gm-Message-State: AOJu0YyLllieZ5nqjY2Lh28vOj6PKi4jneF2KHQ+TvGMl/DUtYQuCwtg DuWUAh2GrIITKnOP3KsgwM9IKtFB3iKceP4yfx8lGftZi7zGARjcPvObc4KnVQ== X-Gm-Gg: ASbGncs5nTu1wQRMjjyjjuC+RVjiZZnqB8Ia04ZNXwSBXLW5GV6rahHDhDJSdScR+9I 8ILwWIdgYCVBD05YVBSSjO8foIbAWYCirQzZtUzfdf3ANjL9tMuelhPq5CtoZGnESvKSjQafZeh 28JF5waUY7P5FMwKXYbtTgdWM0Fxz/IeqWNpllcvmYfatlF7PO8DqCR3FRwsI7RLuPWueABkccN tNg7TnWpvAyyvxGhzNZssD2F9T9CdO0OfRwvxTYqc7bhcJba5/D/soqE0M9+CG60N9rLtP0t4Xq 6wSwWFYkCEX3evorrRHsHwUkZLp/a7lbofXf9wqV2i1GwpQv9u1dztNLsXDrHMKoFZPoD5xsa4l 4bOQpacn72H+qFsP5pizf X-Google-Smtp-Source: AGHT+IEp+3Cagcha5sfTeu4+8RBW7r6lV7dkDjfdU4DY4DPcFE61RScBpTQuD9XnbMRACVWT6TuRqQ== X-Received: by 2002:a05:6808:2105:b0:3f8:b73b:6848 with SMTP id 5614622812f47-3f8b74abbeemr3154694b6e.26.1741631639092; Mon, 10 Mar 2025 11:33:59 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:33:57 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com Subject: [PATCH net-next 5/7] bnxt_en: Update firmware interface to 1.10.3.97 Date: Mon, 10 Mar 2025 11:31:27 -0700 Message-ID: <20250310183129.3154117-6-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 The main changes are adding i2c write for module eeprom and a new v2 PCIe statistics structure. Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h | 143 +++++++++++++++--- 1 file changed, 119 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h index 5f8de1634378..549231703bce 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h @@ -2,7 +2,7 @@ * * Copyright (c) 2014-2016 Broadcom Corporation * Copyright (c) 2014-2018 Broadcom Limited - * Copyright (c) 2018-2024 Broadcom Inc. + * Copyright (c) 2018-2025 Broadcom Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -438,6 +438,7 @@ struct cmd_nums { #define HWRM_MFG_PRVSN_EXPORT_CERT 0x219UL #define HWRM_STAT_DB_ERROR_QSTATS 0x21aUL #define HWRM_MFG_TESTS 0x21bUL + #define HWRM_MFG_WRITE_CERT_NVM 0x21cUL #define HWRM_PORT_POE_CFG 0x230UL #define HWRM_PORT_POE_QCFG 0x231UL #define HWRM_UDCC_QCAPS 0x258UL @@ -514,6 +515,8 @@ struct cmd_nums { #define HWRM_TFC_TBL_SCOPE_CONFIG_GET 0x39aUL #define HWRM_TFC_RESC_USAGE_QUERY 0x39bUL #define HWRM_TFC_GLOBAL_ID_FREE 0x39cUL + #define HWRM_TFC_TCAM_PRI_UPDATE 0x39dUL + #define HWRM_TFC_HOT_UPGRADE_PROCESS 0x3a0UL #define HWRM_SV 0x400UL #define HWRM_DBG_SERDES_TEST 0xff0eUL #define HWRM_DBG_LOG_BUFFER_FLUSH 0xff0fUL @@ -629,8 +632,8 @@ struct hwrm_err_output { #define HWRM_VERSION_MAJOR 1 #define HWRM_VERSION_MINOR 10 #define HWRM_VERSION_UPDATE 3 -#define HWRM_VERSION_RSVD 85 -#define HWRM_VERSION_STR "1.10.3.85" +#define HWRM_VERSION_RSVD 97 +#define HWRM_VERSION_STR "1.10.3.97" /* hwrm_ver_get_input (size:192b/24B) */ struct hwrm_ver_get_input { @@ -1905,11 +1908,15 @@ struct hwrm_func_qcaps_output { __le32 roce_vf_max_srq; __le32 roce_vf_max_gid; __le32 flags_ext3; - #define FUNC_QCAPS_RESP_FLAGS_EXT3_RM_RSV_WHILE_ALLOC_CAP 0x1UL - #define FUNC_QCAPS_RESP_FLAGS_EXT3_REQUIRE_L2_FILTER 0x2UL - #define FUNC_QCAPS_RESP_FLAGS_EXT3_MAX_ROCE_VFS_SUPPORTED 0x4UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_RM_RSV_WHILE_ALLOC_CAP 0x1UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_REQUIRE_L2_FILTER 0x2UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_MAX_ROCE_VFS_SUPPORTED 0x4UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_RX_RATE_PROFILE_SEL_SUPPORTED 0x8UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_BIDI_OPT_SUPPORTED 0x10UL + #define FUNC_QCAPS_RESP_FLAGS_EXT3_MIRROR_ON_ROCE_SUPPORTED 0x20UL __le16 max_roce_vfs; - u8 unused_3[5]; + __le16 max_crypto_rx_flow_filters; + u8 unused_3[3]; u8 valid; }; @@ -1924,7 +1931,7 @@ struct hwrm_func_qcfg_input { u8 unused_0[6]; }; -/* hwrm_func_qcfg_output (size:1280b/160B) */ +/* hwrm_func_qcfg_output (size:1344b/168B) */ struct hwrm_func_qcfg_output { __le16 error_code; __le16 req_type; @@ -2087,14 +2094,18 @@ struct hwrm_func_qcfg_output { __le16 host_mtu; __le16 flags2; #define FUNC_QCFG_RESP_FLAGS2_SRIOV_DSCP_INSERT_ENABLED 0x1UL - u8 unused_4[2]; + __le16 stag_vid; u8 port_kdnet_mode; #define FUNC_QCFG_RESP_PORT_KDNET_MODE_DISABLED 0x0UL #define FUNC_QCFG_RESP_PORT_KDNET_MODE_ENABLED 0x1UL #define FUNC_QCFG_RESP_PORT_KDNET_MODE_LAST FUNC_QCFG_RESP_PORT_KDNET_MODE_ENABLED u8 kdnet_pcie_function; __le16 port_kdnet_fid; - u8 unused_5[2]; + u8 unused_5; + u8 roce_bidi_opt_mode; + #define FUNC_QCFG_RESP_ROCE_BIDI_OPT_MODE_DISABLED 0x1UL + #define FUNC_QCFG_RESP_ROCE_BIDI_OPT_MODE_DEDICATED 0x2UL + #define FUNC_QCFG_RESP_ROCE_BIDI_OPT_MODE_SHARED 0x4UL __le32 num_ktls_tx_key_ctxs; __le32 num_ktls_rx_key_ctxs; u8 lag_id; @@ -2112,7 +2123,8 @@ struct hwrm_func_qcfg_output { __le16 xid_partition_cfg; #define FUNC_QCFG_RESP_XID_PARTITION_CFG_TX_CK 0x1UL #define FUNC_QCFG_RESP_XID_PARTITION_CFG_RX_CK 0x2UL - u8 unused_7; + __le16 mirror_vnic_id; + u8 unused_7[7]; u8 valid; }; @@ -3965,7 +3977,7 @@ struct ts_split_entries { __le32 region_num_entries; u8 tsid; u8 lkup_static_bkt_cnt_exp[2]; - u8 rsvd; + u8 locked; __le32 rsvd2[2]; }; @@ -5483,6 +5495,37 @@ struct hwrm_port_phy_qcaps_output { u8 valid; }; +/* hwrm_port_phy_i2c_write_input (size:832b/104B) */ +struct hwrm_port_phy_i2c_write_input { + __le16 req_type; + __le16 cmpl_ring; + __le16 seq_id; + __le16 target_id; + __le64 resp_addr; + __le32 flags; + __le32 enables; + #define PORT_PHY_I2C_WRITE_REQ_ENABLES_PAGE_OFFSET 0x1UL + #define PORT_PHY_I2C_WRITE_REQ_ENABLES_BANK_NUMBER 0x2UL + __le16 port_id; + u8 i2c_slave_addr; + u8 bank_number; + __le16 page_number; + __le16 page_offset; + u8 data_length; + u8 unused_1[7]; + __le32 data[16]; +}; + +/* hwrm_port_phy_i2c_write_output (size:128b/16B) */ +struct hwrm_port_phy_i2c_write_output { + __le16 error_code; + __le16 req_type; + __le16 seq_id; + __le16 resp_len; + u8 unused_0[7]; + u8 valid; +}; + /* hwrm_port_phy_i2c_read_input (size:320b/40B) */ struct hwrm_port_phy_i2c_read_input { __le16 req_type; @@ -6610,8 +6653,9 @@ struct hwrm_vnic_alloc_input { __le32 flags; #define VNIC_ALLOC_REQ_FLAGS_DEFAULT 0x1UL #define VNIC_ALLOC_REQ_FLAGS_VIRTIO_NET_FID_VALID 0x2UL + #define VNIC_ALLOC_REQ_FLAGS_VNIC_ID_VALID 0x4UL __le16 virtio_net_fid; - u8 unused_0[2]; + __le16 vnic_id; }; /* hwrm_vnic_alloc_output (size:128b/16B) */ @@ -6710,6 +6754,7 @@ struct hwrm_vnic_cfg_input { #define VNIC_CFG_REQ_ENABLES_QUEUE_ID 0x80UL #define VNIC_CFG_REQ_ENABLES_RX_CSUM_V2_MODE 0x100UL #define VNIC_CFG_REQ_ENABLES_L2_CQE_MODE 0x200UL + #define VNIC_CFG_REQ_ENABLES_RAW_QP_ID 0x400UL __le16 vnic_id; __le16 dflt_ring_grp; __le16 rss_rule; @@ -6729,7 +6774,7 @@ struct hwrm_vnic_cfg_input { #define VNIC_CFG_REQ_L2_CQE_MODE_COMPRESSED 0x1UL #define VNIC_CFG_REQ_L2_CQE_MODE_MIXED 0x2UL #define VNIC_CFG_REQ_L2_CQE_MODE_LAST VNIC_CFG_REQ_L2_CQE_MODE_MIXED - u8 unused0[4]; + __le32 raw_qp_id; }; /* hwrm_vnic_cfg_output (size:128b/16B) */ @@ -7082,6 +7127,15 @@ struct hwrm_vnic_plcmodes_cfg_output { u8 valid; }; +/* hwrm_vnic_plcmodes_cfg_cmd_err (size:64b/8B) */ +struct hwrm_vnic_plcmodes_cfg_cmd_err { + u8 code; + #define VNIC_PLCMODES_CFG_CMD_ERR_CODE_UNKNOWN 0x0UL + #define VNIC_PLCMODES_CFG_CMD_ERR_CODE_INVALID_HDS_THRESHOLD 0x1UL + #define VNIC_PLCMODES_CFG_CMD_ERR_CODE_LAST VNIC_PLCMODES_CFG_CMD_ERR_CODE_INVALID_HDS_THRESHOLD + u8 unused_0[7]; +}; + /* hwrm_vnic_rss_cos_lb_ctx_alloc_input (size:128b/16B) */ struct hwrm_vnic_rss_cos_lb_ctx_alloc_input { __le16 req_type; @@ -7131,15 +7185,16 @@ struct hwrm_ring_alloc_input { __le16 target_id; __le64 resp_addr; __le32 enables; - #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG 0x2UL - #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID 0x8UL - #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID 0x20UL - #define RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID 0x40UL - #define RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID 0x80UL - #define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID 0x100UL - #define RING_ALLOC_REQ_ENABLES_SCHQ_ID 0x200UL - #define RING_ALLOC_REQ_ENABLES_MPC_CHNLS_TYPE 0x400UL - #define RING_ALLOC_REQ_ENABLES_STEERING_TAG_VALID 0x800UL + #define RING_ALLOC_REQ_ENABLES_RING_ARB_CFG 0x2UL + #define RING_ALLOC_REQ_ENABLES_STAT_CTX_ID_VALID 0x8UL + #define RING_ALLOC_REQ_ENABLES_MAX_BW_VALID 0x20UL + #define RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID 0x40UL + #define RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID 0x80UL + #define RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID 0x100UL + #define RING_ALLOC_REQ_ENABLES_SCHQ_ID 0x200UL + #define RING_ALLOC_REQ_ENABLES_MPC_CHNLS_TYPE 0x400UL + #define RING_ALLOC_REQ_ENABLES_STEERING_TAG_VALID 0x800UL + #define RING_ALLOC_REQ_ENABLES_RX_RATE_PROFILE_VALID 0x1000UL u8 ring_type; #define RING_ALLOC_REQ_RING_TYPE_L2_CMPL 0x0UL #define RING_ALLOC_REQ_RING_TYPE_TX 0x1UL @@ -7226,7 +7281,11 @@ struct hwrm_ring_alloc_input { #define RING_ALLOC_REQ_MPC_CHNLS_TYPE_RE_CFA 0x3UL #define RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE 0x4UL #define RING_ALLOC_REQ_MPC_CHNLS_TYPE_LAST RING_ALLOC_REQ_MPC_CHNLS_TYPE_PRIMATE - u8 unused_4[2]; + u8 rx_rate_profile_sel; + #define RING_ALLOC_REQ_RX_RATE_PROFILE_SEL_DEFAULT 0x0UL + #define RING_ALLOC_REQ_RX_RATE_PROFILE_SEL_POLL_MODE 0x1UL + #define RING_ALLOC_REQ_RX_RATE_PROFILE_SEL_LAST RING_ALLOC_REQ_RX_RATE_PROFILE_SEL_POLL_MODE + u8 unused_4; __le64 cq_handle; }; @@ -9122,6 +9181,39 @@ struct pcie_ctx_hw_stats { __le64 pcie_recovery_histogram; }; +/* pcie_ctx_hw_stats_v2 (size:4096b/512B) */ +struct pcie_ctx_hw_stats_v2 { + __le64 pcie_pl_signal_integrity; + __le64 pcie_dl_signal_integrity; + __le64 pcie_tl_signal_integrity; + __le64 pcie_link_integrity; + __le64 pcie_tx_traffic_rate; + __le64 pcie_rx_traffic_rate; + __le64 pcie_tx_dllp_statistics; + __le64 pcie_rx_dllp_statistics; + __le64 pcie_equalization_time; + __le32 pcie_ltssm_histogram[4]; + __le64 pcie_recovery_histogram; + __le32 pcie_tl_credit_nph_histogram[8]; + __le32 pcie_tl_credit_ph_histogram[8]; + __le32 pcie_tl_credit_pd_histogram[8]; + __le32 pcie_cmpl_latest_times[4]; + __le32 pcie_cmpl_longest_time; + __le32 pcie_cmpl_shortest_time; + __le32 unused_0[2]; + __le32 pcie_cmpl_latest_headers[4][4]; + __le32 pcie_cmpl_longest_headers[4][4]; + __le32 pcie_cmpl_shortest_headers[4][4]; + __le32 pcie_wr_latency_histogram[12]; + __le32 pcie_wr_latency_all_normal_count; + __le32 unused_1; + __le64 pcie_posted_packet_count; + __le64 pcie_non_posted_packet_count; + __le64 pcie_other_packet_count; + __le64 pcie_blocked_packet_count; + __le64 pcie_cmpl_packet_count; +}; + /* hwrm_stat_generic_qstats_input (size:256b/32B) */ struct hwrm_stat_generic_qstats_input { __le16 req_type; @@ -9317,6 +9409,9 @@ struct hwrm_struct_hdr { #define STRUCT_HDR_STRUCT_ID_LAST STRUCT_HDR_STRUCT_ID_UDCC_RTT_BUCKET_BOUND __le16 len; u8 version; + #define STRUCT_HDR_VERSION_0 0x0UL + #define STRUCT_HDR_VERSION_1 0x1UL + #define STRUCT_HDR_VERSION_LAST STRUCT_HDR_VERSION_1 u8 count; __le16 subtype; __le16 next_offset; From patchwork Mon Mar 10 18:31:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010510 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oo1-f49.google.com (mail-oo1-f49.google.com [209.85.161.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0913323BD05 for ; Mon, 10 Mar 2025 18:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631643; cv=none; b=YZzq5QUG17pQMauTkweaXt4YmjcmSU1fOpiIe2YqUjEa7gCpSe61xSgB4+A3k4filkFyOwZkduMlm/zgmx6/RUvS7O4X36+CCQ4VroVbJyQlmhNE5YU0zBnzNugsBm2m5kX/q/2nGQ6p8WupSHqTn9WcI36ttIwlS8zMPEmMv9A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631643; c=relaxed/simple; bh=A3h8VYx0d/F+VLCppQZP/8i8AVfkHr3Fb9BJPJ4tgQs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RfbdrQz5GPPVsaOXaT85UTg/RUD25Ug5pvpZ41WarSvU3KlL9rfpvNaS3YA9d8wIcaMLRGjlAiUfzygkeF95rnPrb4kPIdk12C0HfYzWRmd9EPGNFXIaOHLXf7qkat/nWwUMuB/L00JVfOSUkRMMSzN4uOFxhsaaFsmXbqtD1I0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=WQtXK5Hd; arc=none smtp.client-ip=209.85.161.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="WQtXK5Hd" Received: by mail-oo1-f49.google.com with SMTP id 006d021491bc7-5f6b65c89c4so1709713eaf.2 for ; Mon, 10 Mar 2025 11:34:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631641; x=1742236441; darn=vger.kernel.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=ftmC6JdK+jUUqh+xRDOpYb+MLAyNI1G8N8x1Wd+2C3A=; b=WQtXK5HdagjzATSTvwRV5mMZmN8pMu2CxoJX5BxKx6AiP1KbXX+VUAUfpCqDBADoph p3WmZFJISua1ybZiUNAdZTx/GcP3rSmy1qBH9geerG63mhfqlyWR5ZaLGmONgJhGP8aX oFPkdvYm3aHcCUJhlStNBaJtmx6+el6z6gKdc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631641; x=1742236441; 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=ftmC6JdK+jUUqh+xRDOpYb+MLAyNI1G8N8x1Wd+2C3A=; b=IZJNNwFHulrbHJ/ckHh1MLwVokf6EcmdMFanb2byWzFgVTyTRDMJfxFCLTPW6wXleI qz/Ack5lBf6LB1zfh3CInO/KlCaCl53uVIbBIH/P+8OKClpIztUZiQ/I6PGYGiLohrgK z8lTjiJSZUnDAphjkSTlK94SoPTiSIW9gFKm7R+ZMmpHje8iyc9yBv5gy+70GjnP/WKv wHJ0kUv68fWHBcNtRyjdRMYKmeEWjgMYtHqyKmpi0cjjj7oTkwMhcC8hDBjkO5UHilWW owZcMj2FZWo3XFQFuL+KYMXxODo7bvm94BHDEKDJgoQ5EmKTJRXFSXbBT/QSdg3incDm /FOQ== X-Gm-Message-State: AOJu0YzXumcsKrtIc5true2c0S5mZ+lj30IYFNX9I5ctfOBg/rm9hBYc i4pYFPEHQTPIDkPz8hGuEGA9GvmOsqbEPXTOqo3t+VG6QfhV7oPiCb3waHm6UQ== X-Gm-Gg: ASbGncvVL+Evv8xv1KtphyFlOkgEetTX2hdiTah8TKwOt9QlPp61mBvuD8M2RdVVisV RNISVcEKizhYCzTOqp/1QffBpV2eWDgsglYuywGMVW1m8/llBnEvwp6ru/mTE3+HQN6nyx7WSpf nJ9/R2z/4loX8IqmWiG11fP6fqDFjxBdcjuxYNty+lxrfPNR3WnTohyx01cdjTeNb3Bf3It/sQD FuqWj+QFQVBhcgSY+6UpIviD/RMe5HsoltVE1G/FDcoi1TY6eNB2qoZHNFfJWyc11UOxdQ/uBIh ybhHnm/Blkh8sB5258/i+DdRb9E4Q07NkYxPF1vI9skmeZFf7p9k+mEi4PZxbEfEqT8iWQ19i9z B0m5VXfzxbyVsNV1fdION X-Google-Smtp-Source: AGHT+IHMGRQ/NhjuwuP0pMQPYPKmJEjaaKg/yfeONSU5IFQeIz4G49UETE3DtmkpEfK3ifZSdw6utw== X-Received: by 2002:a05:6808:2006:b0:3f4:12a8:b4f6 with SMTP id 5614622812f47-3f697b5761amr8693167b6e.10.1741631641004; Mon, 10 Mar 2025 11:34:01 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.33.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:34:00 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com Subject: [PATCH net-next 6/7] bnxt_en: Refactor bnxt_get_module_eeprom_by_page() Date: Mon, 10 Mar 2025 11:31:28 -0700 Message-ID: <20250310183129.3154117-7-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 In preparation for adding .set_module_eeprom_by_page(), extract the common error checking done in bnxt_get_module_eeprom_by_page() into a new common function that can be re-used for .set_module_eeprom_by_page(). Signed-off-by: Michael Chan --- .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index e031340bdce2..c0de8f0e722d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -4541,11 +4541,11 @@ static int bnxt_get_module_status(struct bnxt *bp, struct netlink_ext_ack *extac return -EINVAL; } -static int bnxt_get_module_eeprom_by_page(struct net_device *dev, - const struct ethtool_module_eeprom *page_data, - struct netlink_ext_ack *extack) +static int +bnxt_mod_eeprom_by_page_precheck(struct bnxt *bp, + const struct ethtool_module_eeprom *page_data, + struct netlink_ext_ack *extack) { - struct bnxt *bp = netdev_priv(dev); int rc; if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp)) { @@ -4567,6 +4567,19 @@ static int bnxt_get_module_eeprom_by_page(struct net_device *dev, NL_SET_ERR_MSG_MOD(extack, "Firmware not capable for bank selection"); return -EINVAL; } + return 0; +} + +static int bnxt_get_module_eeprom_by_page(struct net_device *dev, + const struct ethtool_module_eeprom *page_data, + struct netlink_ext_ack *extack) +{ + struct bnxt *bp = netdev_priv(dev); + int rc; + + rc = bnxt_mod_eeprom_by_page_precheck(bp, page_data, extack); + if (rc) + return rc; rc = bnxt_read_sfp_module_eeprom_info(bp, page_data->i2c_address << 1, page_data->page, page_data->bank, From patchwork Mon Mar 10 18:31:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 14010511 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B1D823BD13 for ; Mon, 10 Mar 2025 18:34:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631645; cv=none; b=k8iPVxmhhL+lZPf+wPh5tsTDYQznqvWcsvcDiTLx4Og3ndhH/Hrwft15cGUkaM+d98DB5RNx4pzT3j+wmzMb8zRHTs+Jld/6BQmTO4/Tk4eOw8SysbqL8pOneMcyCyrVEw/DPOahwH713dWuAtaVbZixz4VUNxOH45+fQNrsceg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741631645; c=relaxed/simple; bh=ApLxMBlDKa2oB40fZ930jjwtrde0r6F/yeLzPf41NSw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lc/CDJwwimUuRV7bGthRSkmoZIUv9gu13pUGQZAr42hE1ySuFCUKYd9JD1jY8jFd+dO7d+PKbrn3hhHRPlOrKtbYuslTn6Ugi/TqwDUixDQD+6PHT8vcyfmpBwmDi6XKRgabOite4rRWLQ5Ae+XuoO6kC/0UDQ6b7oQngyxqBe4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=Fsm2g6dB; arc=none smtp.client-ip=209.85.167.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="Fsm2g6dB" Received: by mail-oi1-f177.google.com with SMTP id 5614622812f47-3f8ae3ed8adso660721b6e.3 for ; Mon, 10 Mar 2025 11:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1741631643; x=1742236443; darn=vger.kernel.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=bBfLs/7nowYRESP3/EIAM0PKgelT57wMHlVJgIo+q8s=; b=Fsm2g6dBRcPCO/FrDvQU2X2etbeoZNOKSApbVehyxQKqdL1GY3GW1eciMqhxkvSG1a RRYzWF6aOqwhIKGs2kXSwSOyeXU6Y0ynGuIOcvMb3Jg1mi1ShcNGH1QebZdtPNuIkPLn 4Ehi2AGXYKMkTegnJhDm4yT8KlpxcGDrMS8Pg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741631643; x=1742236443; 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=bBfLs/7nowYRESP3/EIAM0PKgelT57wMHlVJgIo+q8s=; b=fIyyw3MrrnacwkSKQQpCAVdHjU5a/7cCT6OV5mxJHBnlB9r5QAi+GPS4cOb+tObc+b gr0Uv7O4bO+P1Wb+Qr4KBmPYnDrywqzsX4IA449tt890EaqDnNCg6ZCf9s760XlvuWmD jCe2sYwrTdZfEGYfrqaHk7sxV+8L7VrFGgcH0ZZkde1p3VXTS4OBuP+7rdYM3earN1Jj w/n1PJkrKm40Mi84FQtVDao9KkhoFVPf2ebZHlFfxImk6raX062Xf6TWkPKzSpdO3bhi 7OerkIedCXoh///5eJo1f7laG2t270f6ZROs45KxjhjJwbndANjNvsy1d0rMMJJP8y5D xv1w== X-Gm-Message-State: AOJu0YxcYLN5tQEp9ximMmosAjgeRKNSwDgsWgWxptQNEWcaJrU7zefj kEbLTZ2n2r004oT/ZTQWoqQM6awBqA2lkSVJ8gYjBVHuT/C521oakzzMSGQtdHW+NfBHDQECZFE = X-Gm-Gg: ASbGncu0Sjwj6Y9nLQK1DeKiLClW/Wzy8fNevDrHy6TaldO/gDavDYPch0Q1JQ9kr1P hl0L0zhaJKpZs3ZD0ljVb79SUKVW9PVNF+9LJXcgCDtP+gqJEVTGyq0oOQVf3M+ZfsgEjNptc8N RkpadXCKNlPyO6B0AFfo4FaX9e9N3BfiUObjkq54HwqcJd0ORvhzpA6WLAXQ0zDYT9aV+2Vy2ga By87FFM4DIXqxTXqqdIpnIbFylEj+iZhaB8V2pmPd6ePrAHZqcmk4ZUJFu21i3NA2ezXdzpkWd4 hEGQ06kEazTBNsjuVp8qve+2h/zMYtBXEcRKvjHY9E+SYyDXGVUgEenLFaBl0BiUrn4TAfBCOUh 836JwDQ6jqpPytS8dnS56wgMEccTAlgw= X-Google-Smtp-Source: AGHT+IHokc5Vwvze4JoGtJEVrALcke5t1HGi6dt1hHmCVRtDMlb+2614lkIpsYDpAh/IQrd7J76QUw== X-Received: by 2002:a05:6808:199d:b0:3f7:8f77:2a9e with SMTP id 5614622812f47-3fa2b11c797mr354268b6e.20.1741631643189; Mon, 10 Mar 2025 11:34:03 -0700 (PDT) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 5614622812f47-3fa33834905sm41814b6e.27.2025.03.10.11.34.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Mar 2025 11:34:01 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, Damodharam Ammepalli Subject: [PATCH net-next 7/7] bnxt_en: add .set_module_eeprom_by_page() support Date: Mon, 10 Mar 2025 11:31:29 -0700 Message-ID: <20250310183129.3154117-8-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250310183129.3154117-1-michael.chan@broadcom.com> References: <20250310183129.3154117-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 From: Damodharam Ammepalli Add support for .set_module_eeprom_by_page() callback which implements generic solution for modules eeprom access. This implementation also supports CMIS 5.0.3 compliant eeprom FW download. Sample Usage: ethtool --flash-module-firmware enp177s0np0 file dummy.bin Signed-off-by: Damodharam Ammepalli Signed-off-by: Michael Chan --- .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index c0de8f0e722d..48dd5922e4dd 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -4550,7 +4550,7 @@ bnxt_mod_eeprom_by_page_precheck(struct bnxt *bp, if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp)) { NL_SET_ERR_MSG_MOD(extack, - "Module read not permitted on untrusted VF"); + "Module read/write not permitted on untrusted VF"); return -EPERM; } @@ -4593,6 +4593,62 @@ static int bnxt_get_module_eeprom_by_page(struct net_device *dev, return page_data->length; } +static int bnxt_write_sfp_module_eeprom_info(struct bnxt *bp, + const struct ethtool_module_eeprom *page) +{ + struct hwrm_port_phy_i2c_write_input *req; + int bytes_written = 0; + int rc; + + rc = hwrm_req_init(bp, req, HWRM_PORT_PHY_I2C_WRITE); + if (rc) + return rc; + + hwrm_req_hold(bp, req); + req->i2c_slave_addr = page->i2c_address << 1; + req->page_number = cpu_to_le16(page->page); + req->bank_number = page->bank; + req->port_id = cpu_to_le16(bp->pf.port_id); + req->enables = cpu_to_le32(PORT_PHY_I2C_WRITE_REQ_ENABLES_PAGE_OFFSET | + PORT_PHY_I2C_WRITE_REQ_ENABLES_BANK_NUMBER); + + while (bytes_written < page->length) { + u16 xfer_size; + + xfer_size = min_t(u16, page->length - bytes_written, + BNXT_MAX_PHY_I2C_RESP_SIZE); + req->page_offset = cpu_to_le16(page->offset + bytes_written); + req->data_length = xfer_size; + memcpy(req->data, page->data + bytes_written, xfer_size); + rc = hwrm_req_send(bp, req); + if (rc) + break; + bytes_written += xfer_size; + } + + hwrm_req_drop(bp, req); + return rc; +} + +static int bnxt_set_module_eeprom_by_page(struct net_device *dev, + const struct ethtool_module_eeprom *page_data, + struct netlink_ext_ack *extack) +{ + struct bnxt *bp = netdev_priv(dev); + int rc; + + rc = bnxt_mod_eeprom_by_page_precheck(bp, page_data, extack); + if (rc) + return rc; + + rc = bnxt_write_sfp_module_eeprom_info(bp, page_data); + if (rc) { + NL_SET_ERR_MSG_MOD(extack, "Module`s eeprom write failed"); + return rc; + } + return page_data->length; +} + static int bnxt_nway_reset(struct net_device *dev) { int rc = 0; @@ -5455,6 +5511,7 @@ const struct ethtool_ops bnxt_ethtool_ops = { .get_module_info = bnxt_get_module_info, .get_module_eeprom = bnxt_get_module_eeprom, .get_module_eeprom_by_page = bnxt_get_module_eeprom_by_page, + .set_module_eeprom_by_page = bnxt_set_module_eeprom_by_page, .nway_reset = bnxt_nway_reset, .set_phys_id = bnxt_set_phys_id, .self_test = bnxt_self_test,