Skip to content

Commit 904721a

Browse files
author
Shruti Parab
committed
bnxt_en: Add devlink support for ENABLE_ROCE nvm parameter
JIRA: https://issues.redhat.com/browse/RHEL-76565 commit 2c4d376 Author: Pavan Chebbi <pavan.chebbi@broadcom.com> Date: Mon Mar 10 11:31:25 2025 -0700 bnxt_en: Add devlink support for ENABLE_ROCE nvm parameter Add set/show support for the ENABLE_ROCE NVM parameter to enable/disable RoCE for a PF. Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com> Co-developed-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: Pavan Chebbi <pavan.chebbi@broadcom.com> Signed-off-by: Michael Chan <michael.chan@broadcom.com> Link: https://patch.msgid.link/20250310183129.3154117-4-michael.chan@broadcom.com Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
1 parent cc3b0ae commit 904721a

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

Documentation/networking/devlink/bnxt.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ Parameters
2424
- Permanent
2525
* - ``enable_remote_dev_reset``
2626
- Runtime
27+
* - ``enable_roce``
28+
- Permanent
2729

2830
The ``bnxt`` driver also implements the following driver-specific
2931
parameters.

drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,8 @@ static const struct bnxt_dl_nvm_param nvm_params[] = {
666666
NVM_OFF_MSIX_VEC_PER_PF_MAX, BNXT_NVM_SHARED_CFG, 10, 4},
667667
{DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN,
668668
NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7, 4},
669+
{DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE, NVM_OFF_SUPPORT_RDMA,
670+
BNXT_NVM_FUNC_CFG, 1, 1},
669671
{BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK,
670672
BNXT_NVM_SHARED_CFG, 1, 1},
671673
};
@@ -1119,6 +1121,32 @@ static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id,
11191121
return bnxt_hwrm_nvm_req(bp, id, req, &ctx->val);
11201122
}
11211123

1124+
static int bnxt_dl_roce_validate(struct devlink *dl, u32 id,
1125+
union devlink_param_value val,
1126+
struct netlink_ext_ack *extack)
1127+
{
1128+
const struct bnxt_dl_nvm_param nvm_roce_cap = {0, NVM_OFF_RDMA_CAPABLE,
1129+
BNXT_NVM_SHARED_CFG, 1, 1};
1130+
struct bnxt *bp = bnxt_get_bp_from_dl(dl);
1131+
struct hwrm_nvm_get_variable_input *req;
1132+
union devlink_param_value roce_cap;
1133+
int rc;
1134+
1135+
rc = hwrm_req_init(bp, req, HWRM_NVM_GET_VARIABLE);
1136+
if (rc)
1137+
return rc;
1138+
1139+
if (__bnxt_hwrm_nvm_req(bp, &nvm_roce_cap, req, &roce_cap)) {
1140+
NL_SET_ERR_MSG_MOD(extack, "Unable to verify if device is RDMA Capable");
1141+
return -EINVAL;
1142+
}
1143+
if (!roce_cap.vbool) {
1144+
NL_SET_ERR_MSG_MOD(extack, "Device does not support RDMA");
1145+
return -EINVAL;
1146+
}
1147+
return 0;
1148+
}
1149+
11221150
static int bnxt_dl_msix_validate(struct devlink *dl, u32 id,
11231151
union devlink_param_value val,
11241152
struct netlink_ext_ack *extack)
@@ -1183,6 +1211,10 @@ static const struct devlink_param bnxt_dl_params[] = {
11831211
BIT(DEVLINK_PARAM_CMODE_PERMANENT),
11841212
bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set,
11851213
bnxt_dl_msix_validate),
1214+
DEVLINK_PARAM_GENERIC(ENABLE_ROCE,
1215+
BIT(DEVLINK_PARAM_CMODE_PERMANENT),
1216+
bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set,
1217+
bnxt_dl_roce_validate),
11861218
DEVLINK_PARAM_DRIVER(BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK,
11871219
"gre_ver_check", DEVLINK_PARAM_TYPE_BOOL,
11881220
BIT(DEVLINK_PARAM_CMODE_PERMANENT),

drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ static inline void bnxt_dl_set_remote_reset(struct devlink *dl, bool value)
4141
#define NVM_OFF_MSIX_VEC_PER_PF_MAX 108
4242
#define NVM_OFF_MSIX_VEC_PER_PF_MIN 114
4343
#define NVM_OFF_IGNORE_ARI 164
44+
#define NVM_OFF_RDMA_CAPABLE 161
4445
#define NVM_OFF_DIS_GRE_VER_CHECK 171
4546
#define NVM_OFF_ENABLE_SRIOV 401
47+
#define NVM_OFF_SUPPORT_RDMA 506
4648
#define NVM_OFF_NVM_CFG_VER 602
4749

4850
#define BNXT_NVM_CFG_VER_BITS 8

0 commit comments

Comments
 (0)