On Tue, Oct 24, 2017 at 4:52 PM, Michael Chan <michael.c...@broadcom.com> wrote: > On Tue, Oct 24, 2017 at 1:12 PM, Steve Lin <steven.l...@broadcom.com> wrote: >> Implements get and set of configuration parameters using new devlink >> config get/set API. Parameters themselves defined in later patches. >> >> Signed-off-by: Steve Lin <steven.l...@broadcom.com> >> Acked-by: Andy Gospodarek <go...@broadcom.com> >> --- >> drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 262 >> +++++++++++++++++++++- >> drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h | 17 ++ >> drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h | 100 +++++++++ >> 3 files changed, 373 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c >> b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c >> index f3f6aa8..81ab77e 100644 >> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c >> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c >> @@ -14,11 +14,261 @@ >> #include "bnxt_vfr.h" >> #include "bnxt_devlink.h" >> >> -static const struct devlink_ops bnxt_dl_ops = { >> +struct bnxt_drv_cfgparam bnxt_drv_cfgparam_list[] = { >> +}; >> + >> +#define BNXT_NUM_DRV_CFGPARAM ARRAY_SIZE(bnxt_drv_cfgparam_list) >> + >> +static int bnxt_nvm_read(struct bnxt *bp, int nvm_param, int idx, >> + void *buf, int size) >> +{ >> + struct hwrm_nvm_get_variable_input req = {0}; >> + dma_addr_t dest_data_dma_addr; >> + void *dest_data_addr = NULL; >> + int bytesize; >> + int rc; >> + >> + bytesize = (size + 7) / BITS_PER_BYTE; >> + dest_data_addr = dma_alloc_coherent(&bp->pdev->dev, bytesize, >> + &dest_data_dma_addr, GFP_KERNEL); >> + if (!dest_data_addr) { >> + netdev_err(bp->dev, "dma_alloc_coherent failure\n"); >> + return -ENOMEM; >> + } >> + >> + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_NVM_GET_VARIABLE, -1, -1); >> + req.dest_data_addr = cpu_to_le64(dest_data_dma_addr); >> + req.data_len = cpu_to_le16(size); >> + req.option_num = cpu_to_le16(nvm_param); >> + req.index_0 = cpu_to_le16(idx); >> + if (idx != 0) >> + req.dimensions = cpu_to_le16(1); >> + >> + rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); > > This won't have the proper mutex protection. You should call > hwrm_send_message() instead.
Ok, thanks, I'll fix that.