Hi Vasundhara, Thank you for the patch! Yet something to improve:
[auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Vasundhara-Volam/Revert-wake_on_lan-devlink-parameter/20190208-181949 config: i386-randconfig-x000-201905 (attached as .config) compiler: gcc-8 (Debian 8.2.0-14) 8.2.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 Note: the linux-review/Vasundhara-Volam/Revert-wake_on_lan-devlink-parameter/20190208-181949 HEAD caa636fa491621c75cb625cb981adfe514368a45 builds fine. It only hurts bisectibility. All error/warnings (new ones prefixed by >>): >> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:41:3: error: >> 'DEVLINK_PARAM_GENERIC_ID_WOL' undeclared here (not in a function); did you >> mean 'DEVLINK_PARAM_GENERIC_ID_MAX'? {DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1}, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEVLINK_PARAM_GENERIC_ID_MAX drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_hwrm_nvm_req': >> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:76:20: warning: >> comparison between pointer and integer nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL) ^~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_dl_wol_validate': >> drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: error: >> 'DEVLINK_PARAM_WAKE_MAGIC' undeclared (first use in this function); did you >> mean 'DEVLINK_PARAM_CMODE_MAX'? if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) { ^~~~~~~~~~~~~~~~~~~~~~~~ DEVLINK_PARAM_CMODE_MAX drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: note: each undeclared identifier is reported only once for each function it appears in drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:174:25: warning: comparison between pointer and integer if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) { ^~ In file included from drivers/net//ethernet/broadcom/bnxt/bnxt.h:23, from drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:13: drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c: At top level: >> include/net/devlink.h:404:8: warning: initialization of 'unsigned int' from >> 'const struct bnxt_dl_nvm_param *' makes integer from pointer without a cast >> [-Wint-conversion] .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id') .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:404:8: error: initializer element is not constant .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id') .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:405:10: error: 'DEVLINK_PARAM_GENERIC_WOL_NAME' >> undeclared here (not in a function); did you mean >> 'DEVLINK_PARAM_GENERIC_ID_MAX'? .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:405:10: error: initialization of 'const char *' from >> incompatible pointer type 'const struct bnxt_dl_nvm_param *' >> [-Werror=incompatible-pointer-types] .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name') .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: error: initializer element is not constant .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name') .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:406:10: error: 'DEVLINK_PARAM_GENERIC_WOL_TYPE' >> undeclared here (not in a function); did you mean >> 'DEVLINK_PARAM_GENERIC_ID_MAX'? .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:406:10: error: incompatible types when initializing >> type 'enum devlink_param_type' using type 'const struct bnxt_dl_nvm_param *' .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors -- drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:41:3: error: 'DEVLINK_PARAM_GENERIC_ID_WOL' undeclared here (not in a function); did you mean 'DEVLINK_PARAM_GENERIC_ID_MAX'? {DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1}, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ DEVLINK_PARAM_GENERIC_ID_MAX drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_hwrm_nvm_req': drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:76:20: warning: comparison between pointer and integer nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL) ^~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: In function 'bnxt_dl_wol_validate': drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: error: 'DEVLINK_PARAM_WAKE_MAGIC' undeclared (first use in this function); did you mean 'DEVLINK_PARAM_CMODE_MAX'? if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) { ^~~~~~~~~~~~~~~~~~~~~~~~ DEVLINK_PARAM_CMODE_MAX drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:28: note: each undeclared identifier is reported only once for each function it appears in drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:174:25: warning: comparison between pointer and integer if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) { ^~ In file included from drivers/net/ethernet/broadcom/bnxt/bnxt.h:23, from drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:13: drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c: At top level: >> include/net/devlink.h:404:8: warning: initialization of 'unsigned int' from >> 'const struct bnxt_dl_nvm_param *' makes integer from pointer without a cast >> [-Wint-conversion] .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id') .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:404:8: error: initializer element is not constant .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:404:8: note: (near initialization for 'bnxt_dl_port_params[0].id') .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:405:10: error: 'DEVLINK_PARAM_GENERIC_WOL_NAME' >> undeclared here (not in a function); did you mean >> 'DEVLINK_PARAM_GENERIC_ID_MAX'? .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:405:10: error: initialization of 'const char *' from >> incompatible pointer type 'const struct bnxt_dl_nvm_param *' >> [-Werror=incompatible-pointer-types] .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name') .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: error: initializer element is not constant .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ include/net/devlink.h:405:10: note: (near initialization for 'bnxt_dl_port_params[0].name') .name = DEVLINK_PARAM_GENERIC_##_id##_NAME, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:406:10: error: 'DEVLINK_PARAM_GENERIC_WOL_TYPE' >> undeclared here (not in a function); did you mean >> 'DEVLINK_PARAM_GENERIC_ID_MAX'? .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ >> include/net/devlink.h:406:10: error: incompatible types when initializing >> type 'enum devlink_param_type' using type 'const struct bnxt_dl_nvm_param *' .type = DEVLINK_PARAM_GENERIC_##_id##_TYPE, \ ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c:206:2: note: in expansion of macro 'DEVLINK_PARAM_GENERIC' DEVLINK_PARAM_GENERIC(WOL, BIT(DEVLINK_PARAM_CMODE_PERMANENT), ^~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +41 drivers/net//ethernet/broadcom/bnxt/bnxt_devlink.c 2dc0865e Vasundhara Volam 2018-10-04 28 6354b95e Vasundhara Volam 2018-07-04 29 static const struct bnxt_dl_nvm_param nvm_params[] = { 6354b95e Vasundhara Volam 2018-07-04 30 {DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV, NVM_OFF_ENABLE_SRIOV, 6354b95e Vasundhara Volam 2018-07-04 31 BNXT_NVM_SHARED_CFG, 1}, 7d859234 Vasundhara Volam 2018-10-04 32 {DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI, NVM_OFF_IGNORE_ARI, 7d859234 Vasundhara Volam 2018-10-04 33 BNXT_NVM_SHARED_CFG, 1}, f399e849 Vasundhara Volam 2018-10-04 34 {DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX, f399e849 Vasundhara Volam 2018-10-04 35 NVM_OFF_MSIX_VEC_PER_PF_MAX, BNXT_NVM_SHARED_CFG, 10}, f399e849 Vasundhara Volam 2018-10-04 36 {DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN, f399e849 Vasundhara Volam 2018-10-04 37 NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7}, 2dc0865e Vasundhara Volam 2018-10-04 38 {BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK, 2dc0865e Vasundhara Volam 2018-10-04 39 BNXT_NVM_SHARED_CFG, 1}, 782a624d Vasundhara Volam 2019-01-28 40 782a624d Vasundhara Volam 2019-01-28 @41 {DEVLINK_PARAM_GENERIC_ID_WOL, NVM_OFF_WOL, BNXT_NVM_PORT_CFG, 1}, 6354b95e Vasundhara Volam 2018-07-04 42 }; 6354b95e Vasundhara Volam 2018-07-04 43 6354b95e Vasundhara Volam 2018-07-04 44 static int bnxt_hwrm_nvm_req(struct bnxt *bp, u32 param_id, void *msg, 6354b95e Vasundhara Volam 2018-07-04 45 int msg_len, union devlink_param_value *val) 6354b95e Vasundhara Volam 2018-07-04 46 { 6fc92c33 Michael Chan 2018-08-05 47 struct hwrm_nvm_get_variable_input *req = msg; 6354b95e Vasundhara Volam 2018-07-04 48 void *data_addr = NULL, *buf = NULL; 6354b95e Vasundhara Volam 2018-07-04 49 struct bnxt_dl_nvm_param nvm_param; 6354b95e Vasundhara Volam 2018-07-04 50 int bytesize, idx = 0, rc, i; 6354b95e Vasundhara Volam 2018-07-04 51 dma_addr_t data_dma_addr; 6354b95e Vasundhara Volam 2018-07-04 52 6354b95e Vasundhara Volam 2018-07-04 53 /* Get/Set NVM CFG parameter is supported only on PFs */ 6354b95e Vasundhara Volam 2018-07-04 54 if (BNXT_VF(bp)) 6354b95e Vasundhara Volam 2018-07-04 55 return -EPERM; 6354b95e Vasundhara Volam 2018-07-04 56 6354b95e Vasundhara Volam 2018-07-04 57 for (i = 0; i < ARRAY_SIZE(nvm_params); i++) { 6354b95e Vasundhara Volam 2018-07-04 58 if (nvm_params[i].id == param_id) { 6354b95e Vasundhara Volam 2018-07-04 59 nvm_param = nvm_params[i]; 6354b95e Vasundhara Volam 2018-07-04 60 break; 6354b95e Vasundhara Volam 2018-07-04 61 } 6354b95e Vasundhara Volam 2018-07-04 62 } 6354b95e Vasundhara Volam 2018-07-04 63 65fac4fe zhong jiang 2018-09-18 64 if (i == ARRAY_SIZE(nvm_params)) 65fac4fe zhong jiang 2018-09-18 65 return -EOPNOTSUPP; 65fac4fe zhong jiang 2018-09-18 66 6354b95e Vasundhara Volam 2018-07-04 67 if (nvm_param.dir_type == BNXT_NVM_PORT_CFG) 6354b95e Vasundhara Volam 2018-07-04 68 idx = bp->pf.port_id; 6354b95e Vasundhara Volam 2018-07-04 69 else if (nvm_param.dir_type == BNXT_NVM_FUNC_CFG) 6354b95e Vasundhara Volam 2018-07-04 70 idx = bp->pf.fw_fid - BNXT_FIRST_PF_FID; 6354b95e Vasundhara Volam 2018-07-04 71 6354b95e Vasundhara Volam 2018-07-04 72 bytesize = roundup(nvm_param.num_bits, BITS_PER_BYTE) / BITS_PER_BYTE; f399e849 Vasundhara Volam 2018-10-04 73 switch (bytesize) { f399e849 Vasundhara Volam 2018-10-04 74 case 1: 782a624d Vasundhara Volam 2019-01-28 75 if (nvm_param.num_bits == 1 && 782a624d Vasundhara Volam 2019-01-28 @76 nvm_param.id != DEVLINK_PARAM_GENERIC_ID_WOL) 6354b95e Vasundhara Volam 2018-07-04 77 buf = &val->vbool; f399e849 Vasundhara Volam 2018-10-04 78 else f399e849 Vasundhara Volam 2018-10-04 79 buf = &val->vu8; f399e849 Vasundhara Volam 2018-10-04 80 break; f399e849 Vasundhara Volam 2018-10-04 81 case 2: f399e849 Vasundhara Volam 2018-10-04 82 buf = &val->vu16; f399e849 Vasundhara Volam 2018-10-04 83 break; f399e849 Vasundhara Volam 2018-10-04 84 case 4: f399e849 Vasundhara Volam 2018-10-04 85 buf = &val->vu32; f399e849 Vasundhara Volam 2018-10-04 86 break; f399e849 Vasundhara Volam 2018-10-04 87 default: f399e849 Vasundhara Volam 2018-10-04 88 return -EFAULT; f399e849 Vasundhara Volam 2018-10-04 89 } 6354b95e Vasundhara Volam 2018-07-04 90 750afb08 Luis Chamberlain 2019-01-04 91 data_addr = dma_alloc_coherent(&bp->pdev->dev, bytesize, 6354b95e Vasundhara Volam 2018-07-04 92 &data_dma_addr, GFP_KERNEL); 6354b95e Vasundhara Volam 2018-07-04 93 if (!data_addr) 6354b95e Vasundhara Volam 2018-07-04 94 return -ENOMEM; 6354b95e Vasundhara Volam 2018-07-04 95 6fc92c33 Michael Chan 2018-08-05 96 req->dest_data_addr = cpu_to_le64(data_dma_addr); 6354b95e Vasundhara Volam 2018-07-04 97 req->data_len = cpu_to_le16(nvm_param.num_bits); 6354b95e Vasundhara Volam 2018-07-04 98 req->option_num = cpu_to_le16(nvm_param.offset); 6354b95e Vasundhara Volam 2018-07-04 99 req->index_0 = cpu_to_le16(idx); 6354b95e Vasundhara Volam 2018-07-04 100 if (idx) 6354b95e Vasundhara Volam 2018-07-04 101 req->dimensions = cpu_to_le16(1); 6354b95e Vasundhara Volam 2018-07-04 102 6fc92c33 Michael Chan 2018-08-05 103 if (req->req_type == cpu_to_le16(HWRM_NVM_SET_VARIABLE)) 6354b95e Vasundhara Volam 2018-07-04 104 memcpy(data_addr, buf, bytesize); 6354b95e Vasundhara Volam 2018-07-04 105 6354b95e Vasundhara Volam 2018-07-04 106 rc = hwrm_send_message(bp, msg, msg_len, HWRM_CMD_TIMEOUT); 6fc92c33 Michael Chan 2018-08-05 107 if (!rc && req->req_type == cpu_to_le16(HWRM_NVM_GET_VARIABLE)) 6354b95e Vasundhara Volam 2018-07-04 108 memcpy(buf, data_addr, bytesize); 6354b95e Vasundhara Volam 2018-07-04 109 6354b95e Vasundhara Volam 2018-07-04 110 dma_free_coherent(&bp->pdev->dev, bytesize, data_addr, data_dma_addr); 3a1d52a5 Vasundhara Volam 2018-10-04 111 if (rc == HWRM_ERR_CODE_RESOURCE_ACCESS_DENIED) { 3a1d52a5 Vasundhara Volam 2018-10-04 112 netdev_err(bp->dev, "PF does not have admin privileges to modify NVM config\n"); 3a1d52a5 Vasundhara Volam 2018-10-04 113 return -EACCES; 3a1d52a5 Vasundhara Volam 2018-10-04 114 } else if (rc) { 6354b95e Vasundhara Volam 2018-07-04 115 return -EIO; 3a1d52a5 Vasundhara Volam 2018-10-04 116 } 6354b95e Vasundhara Volam 2018-07-04 117 return 0; 6354b95e Vasundhara Volam 2018-07-04 118 } 6354b95e Vasundhara Volam 2018-07-04 119 6354b95e Vasundhara Volam 2018-07-04 120 static int bnxt_dl_nvm_param_get(struct devlink *dl, u32 id, 6354b95e Vasundhara Volam 2018-07-04 121 struct devlink_param_gset_ctx *ctx) 6354b95e Vasundhara Volam 2018-07-04 122 { 6354b95e Vasundhara Volam 2018-07-04 123 struct hwrm_nvm_get_variable_input req = {0}; 6354b95e Vasundhara Volam 2018-07-04 124 struct bnxt *bp = bnxt_get_bp_from_dl(dl); 2dc0865e Vasundhara Volam 2018-10-04 125 int rc; 6354b95e Vasundhara Volam 2018-07-04 126 6354b95e Vasundhara Volam 2018-07-04 127 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_GET_VARIABLE, -1, -1); 2dc0865e Vasundhara Volam 2018-10-04 128 rc = bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val); 2dc0865e Vasundhara Volam 2018-10-04 129 if (!rc) 2dc0865e Vasundhara Volam 2018-10-04 130 if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK) 2dc0865e Vasundhara Volam 2018-10-04 131 ctx->val.vbool = !ctx->val.vbool; 2dc0865e Vasundhara Volam 2018-10-04 132 2dc0865e Vasundhara Volam 2018-10-04 133 return rc; 6354b95e Vasundhara Volam 2018-07-04 134 } 6354b95e Vasundhara Volam 2018-07-04 135 6354b95e Vasundhara Volam 2018-07-04 136 static int bnxt_dl_nvm_param_set(struct devlink *dl, u32 id, 6354b95e Vasundhara Volam 2018-07-04 137 struct devlink_param_gset_ctx *ctx) 6354b95e Vasundhara Volam 2018-07-04 138 { 6354b95e Vasundhara Volam 2018-07-04 139 struct hwrm_nvm_set_variable_input req = {0}; 6354b95e Vasundhara Volam 2018-07-04 140 struct bnxt *bp = bnxt_get_bp_from_dl(dl); 6354b95e Vasundhara Volam 2018-07-04 141 6354b95e Vasundhara Volam 2018-07-04 142 bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_SET_VARIABLE, -1, -1); 2dc0865e Vasundhara Volam 2018-10-04 143 2dc0865e Vasundhara Volam 2018-10-04 144 if (id == BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK) 2dc0865e Vasundhara Volam 2018-10-04 145 ctx->val.vbool = !ctx->val.vbool; 2dc0865e Vasundhara Volam 2018-10-04 146 6354b95e Vasundhara Volam 2018-07-04 147 return bnxt_hwrm_nvm_req(bp, id, &req, sizeof(req), &ctx->val); 6354b95e Vasundhara Volam 2018-07-04 148 } 6354b95e Vasundhara Volam 2018-07-04 149 f399e849 Vasundhara Volam 2018-10-04 150 static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, f399e849 Vasundhara Volam 2018-10-04 151 union devlink_param_value val, f399e849 Vasundhara Volam 2018-10-04 152 struct netlink_ext_ack *extack) f399e849 Vasundhara Volam 2018-10-04 153 { 5fc7c12f Gustavo A. R. Silva 2018-10-05 154 int max_val = -1; f399e849 Vasundhara Volam 2018-10-04 155 f399e849 Vasundhara Volam 2018-10-04 156 if (id == DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX) f399e849 Vasundhara Volam 2018-10-04 157 max_val = BNXT_MSIX_VEC_MAX; f399e849 Vasundhara Volam 2018-10-04 158 f399e849 Vasundhara Volam 2018-10-04 159 if (id == DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN) f399e849 Vasundhara Volam 2018-10-04 160 max_val = BNXT_MSIX_VEC_MIN_MAX; f399e849 Vasundhara Volam 2018-10-04 161 5fc7c12f Gustavo A. R. Silva 2018-10-05 162 if (val.vu32 > max_val) { f399e849 Vasundhara Volam 2018-10-04 163 NL_SET_ERR_MSG_MOD(extack, "MSIX value is exceeding the range"); f399e849 Vasundhara Volam 2018-10-04 164 return -EINVAL; f399e849 Vasundhara Volam 2018-10-04 165 } f399e849 Vasundhara Volam 2018-10-04 166 f399e849 Vasundhara Volam 2018-10-04 167 return 0; f399e849 Vasundhara Volam 2018-10-04 168 } f399e849 Vasundhara Volam 2018-10-04 169 782a624d Vasundhara Volam 2019-01-28 170 static int bnxt_dl_wol_validate(struct devlink *dl, u32 id, 782a624d Vasundhara Volam 2019-01-28 171 union devlink_param_value val, 782a624d Vasundhara Volam 2019-01-28 172 struct netlink_ext_ack *extack) 782a624d Vasundhara Volam 2019-01-28 173 { 782a624d Vasundhara Volam 2019-01-28 @174 if (val.vu8 && val.vu8 != DEVLINK_PARAM_WAKE_MAGIC) { 782a624d Vasundhara Volam 2019-01-28 175 NL_SET_ERR_MSG_MOD(extack, "WOL type is not supported"); 782a624d Vasundhara Volam 2019-01-28 176 return -EINVAL; 782a624d Vasundhara Volam 2019-01-28 177 } 782a624d Vasundhara Volam 2019-01-28 178 return 0; 782a624d Vasundhara Volam 2019-01-28 179 } 782a624d Vasundhara Volam 2019-01-28 180 :::::: The code at line 41 was first introduced by commit :::::: 782a624d00fa22e7499f5abc29747501ec671313 bnxt_en: Add bnxt_en initial port params table and register it :::::: TO: Vasundhara Volam <vasundhara-v.vo...@broadcom.com> :::::: CC: David S. Miller <da...@davemloft.net> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip