Thread (23 messages) 23 messages, 5 authors, 2017-10-25

Re: [PATCH net-next v3 06/10] bnxt: Add devlink support for config get/set

From: Steve Lin <hidden>
Date: 2017-10-25 02:02:13

On Tue, Oct 24, 2017 at 4:52 PM, Michael Chan [off-list ref] wrote:
On Tue, Oct 24, 2017 at 1:12 PM, Steve Lin [off-list ref] wrote:
quoted
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 <redacted>
Acked-by: Andy Gospodarek <redacted>
---
 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help