Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bnxt_en: Add a driver specific gre_ver_check devlink parameter.

This patch adds following driver-specific permanent mode boolean
parameter.

gre_ver_check - Generic Routing Encapsulation(GRE) version check
will be enabled in the device. If disabled, device skips version
checking for GRE packets.

Cc: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Vasundhara Volam and committed by
David S. Miller
2dc0865e f399e849

+24 -1
+23 -1
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c
··· 21 21 #endif /* CONFIG_BNXT_SRIOV */ 22 22 }; 23 23 24 + enum bnxt_dl_param_id { 25 + BNXT_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX, 26 + BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, 27 + }; 28 + 24 29 static const struct bnxt_dl_nvm_param nvm_params[] = { 25 30 {DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV, NVM_OFF_ENABLE_SRIOV, 26 31 BNXT_NVM_SHARED_CFG, 1}, ··· 35 30 NVM_OFF_MSIX_VEC_PER_PF_MAX, BNXT_NVM_SHARED_CFG, 10}, 36 31 {DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN, 37 32 NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7}, 33 + {BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK, 34 + BNXT_NVM_SHARED_CFG, 1}, 38 35 }; 39 36 40 37 static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, ··· 119 112 { 120 113 struct hwrm_nvm_get_variable_input req = {0}; 121 114 struct bnxt *bp = bnxt_get_bp_from_dl(dl); 115 + int rc; 122 116 123 117 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_GET_VARIABLE, -1, -1); 124 - return bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val); 118 + rc = bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val); 119 + if (!rc) 120 + if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK) 121 + ctx->val.vbool = !ctx->val.vbool; 122 + 123 + return rc; 125 124 } 126 125 127 126 static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id, ··· 137 124 struct bnxt *bp = bnxt_get_bp_from_dl(dl); 138 125 139 126 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_SET_VARIABLE, -1, -1); 127 + 128 + if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK) 129 + ctx->val.vbool = !ctx->val.vbool; 130 + 140 131 return bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val); 141 132 } 142 133 ··· 181 164 BIT(DEVLINK_PARAM_CMODE_PERMANENT), 182 165 bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, 183 166 bnxt_dl_msix_validate), 167 + DEVLINK_PARAM_DRIVER(BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, 168 + "gre_ver_check", DEVLINK_PARAM_TYPE_BOOL, 169 + BIT(DEVLINK_PARAM_CMODE_PERMANENT), 170 + bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, 171 + NULL), 184 172 }; 185 173 186 174 int bnxt_dl_register(struct bnxt *bp)
+1
drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h
··· 36 36 #define NVM_OFF_MSIX_VEC_PER_PF_MAX 108 37 37 #define NVM_OFF_MSIX_VEC_PER_PF_MIN 114 38 38 #define NVM_OFF_IGNORE_ARI 164 39 + #define NVM_OFF_DIS_GRE_VER_CHECK 171 39 40 #define NVM_OFF_ENABLE_SRIOV 401 40 41 41 42 #define BNXT_MSIX_VEC_MAX 1280