The patch introduces new files for qed devlink implementation.

Signed-off-by: Sudarsana Reddy Kalluru <skall...@marvell.com>
Signed-off-by: Ariel Elior <ael...@marvell.com>
---
 drivers/net/ethernet/qlogic/qed/Makefile      |   3 +-
 drivers/net/ethernet/qlogic/qed/qed_devlink.c |  97 ++++++++++++++++++++++++
 drivers/net/ethernet/qlogic/qed/qed_devlink.h |  18 +++++
 drivers/net/ethernet/qlogic/qed/qed_main.c    | 102 +-------------------------
 4 files changed, 118 insertions(+), 102 deletions(-)
 create mode 100644 drivers/net/ethernet/qlogic/qed/qed_devlink.c
 create mode 100644 drivers/net/ethernet/qlogic/qed/qed_devlink.h

diff --git a/drivers/net/ethernet/qlogic/qed/Makefile 
b/drivers/net/ethernet/qlogic/qed/Makefile
index a0acb94..2e9f3cc 100644
--- a/drivers/net/ethernet/qlogic/qed/Makefile
+++ b/drivers/net/ethernet/qlogic/qed/Makefile
@@ -3,7 +3,8 @@ obj-$(CONFIG_QED) := qed.o
 
 qed-y := qed_cxt.o qed_dev.o qed_hw.o qed_init_fw_funcs.o qed_init_ops.o \
         qed_int.o qed_main.o qed_mcp.o qed_sp_commands.o qed_spq.o qed_l2.o \
-        qed_selftest.o qed_dcbx.o qed_debug.o qed_ptp.o qed_mng_tlv.o
+        qed_selftest.o qed_dcbx.o qed_debug.o qed_ptp.o qed_mng_tlv.o \
+        qed_devlink.o
 qed-$(CONFIG_QED_SRIOV) += qed_sriov.o qed_vf.o
 qed-$(CONFIG_QED_LL2) += qed_ll2.o
 qed-$(CONFIG_QED_RDMA) += qed_roce.o qed_rdma.o qed_iwarp.o
diff --git a/drivers/net/ethernet/qlogic/qed/qed_devlink.c 
b/drivers/net/ethernet/qlogic/qed/qed_devlink.c
new file mode 100644
index 0000000..acb6c87
--- /dev/null
+++ b/drivers/net/ethernet/qlogic/qed/qed_devlink.c
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <net/devlink.h>
+#include "qed.h"
+#include "qed_devlink.h"
+#include "qed_mcp.h"
+
+static int qed_dl_param_get(struct devlink *dl, u32 id,
+                           struct devlink_param_gset_ctx *ctx)
+{
+       struct qed_devlink *qed_dl;
+       struct qed_dev *cdev;
+
+       qed_dl = devlink_priv(dl);
+       cdev = qed_dl->cdev;
+       ctx->val.vbool = cdev->iwarp_cmt;
+
+       return 0;
+}
+
+static int qed_dl_param_set(struct devlink *dl, u32 id,
+                           struct devlink_param_gset_ctx *ctx)
+{
+       struct qed_devlink *qed_dl;
+       struct qed_dev *cdev;
+
+       qed_dl = devlink_priv(dl);
+       cdev = qed_dl->cdev;
+       cdev->iwarp_cmt = ctx->val.vbool;
+
+       return 0;
+}
+
+static const struct devlink_param qed_devlink_params[] = {
+       DEVLINK_PARAM_DRIVER(QED_DEVLINK_PARAM_ID_IWARP_CMT,
+                            "iwarp_cmt", DEVLINK_PARAM_TYPE_BOOL,
+                            BIT(DEVLINK_PARAM_CMODE_RUNTIME),
+                            qed_dl_param_get, qed_dl_param_set, NULL),
+};
+
+static const struct devlink_ops qed_dl_ops;
+
+int qed_devlink_register(struct qed_dev *cdev)
+{
+       union devlink_param_value value;
+       struct qed_devlink *qed_dl;
+       struct devlink *dl;
+       int rc;
+
+       dl = devlink_alloc(&qed_dl_ops, sizeof(*qed_dl));
+       if (!dl)
+               return -ENOMEM;
+
+       qed_dl = devlink_priv(dl);
+
+       cdev->dl = dl;
+       qed_dl->cdev = cdev;
+
+       rc = devlink_register(dl, &cdev->pdev->dev);
+       if (rc)
+               goto err_free;
+
+       rc = devlink_params_register(dl, qed_devlink_params,
+                                    ARRAY_SIZE(qed_devlink_params));
+       if (rc)
+               goto err_unregister;
+
+       value.vbool = false;
+       devlink_param_driverinit_value_set(dl,
+                                          QED_DEVLINK_PARAM_ID_IWARP_CMT,
+                                          value);
+
+       devlink_params_publish(dl);
+       cdev->iwarp_cmt = false;
+
+       return 0;
+
+err_unregister:
+       devlink_unregister(dl);
+
+err_free:
+       cdev->dl = NULL;
+       devlink_free(dl);
+
+       return rc;
+}
+
+void qed_devlink_unregister(struct qed_dev *cdev)
+{
+       if (!cdev->dl)
+               return;
+
+       devlink_params_unregister(cdev->dl, qed_devlink_params,
+                                 ARRAY_SIZE(qed_devlink_params));
+
+       devlink_unregister(cdev->dl);
+       devlink_free(cdev->dl);
+}
diff --git a/drivers/net/ethernet/qlogic/qed/qed_devlink.h 
b/drivers/net/ethernet/qlogic/qed/qed_devlink.h
new file mode 100644
index 0000000..86e1caa
--- /dev/null
+++ b/drivers/net/ethernet/qlogic/qed/qed_devlink.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _QED_DEVLINK_H
+#define _QED_DEVLINK_H
+#include "qed.h"
+
+struct qed_devlink {
+       struct qed_dev *cdev;
+};
+
+enum qed_devlink_param_id {
+       QED_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX,
+       QED_DEVLINK_PARAM_ID_IWARP_CMT,
+};
+
+int qed_devlink_register(struct qed_dev *cdev);
+void qed_devlink_unregister(struct qed_dev *cdev);
+
+#endif
diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c 
b/drivers/net/ethernet/qlogic/qed/qed_main.c
index fdd84f5..e3a8754 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_main.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_main.c
@@ -63,6 +63,7 @@
 #include "qed_hw.h"
 #include "qed_selftest.h"
 #include "qed_debug.h"
+#include "qed_devlink.h"
 
 #define QED_ROCE_QPS                   (8192)
 #define QED_ROCE_DPIS                  (8)
@@ -343,107 +344,6 @@ static int qed_set_power_state(struct qed_dev *cdev, 
pci_power_t state)
        return 0;
 }
 
-struct qed_devlink {
-       struct qed_dev *cdev;
-};
-
-enum qed_devlink_param_id {
-       QED_DEVLINK_PARAM_ID_BASE = DEVLINK_PARAM_GENERIC_ID_MAX,
-       QED_DEVLINK_PARAM_ID_IWARP_CMT,
-};
-
-static int qed_dl_param_get(struct devlink *dl, u32 id,
-                           struct devlink_param_gset_ctx *ctx)
-{
-       struct qed_devlink *qed_dl;
-       struct qed_dev *cdev;
-
-       qed_dl = devlink_priv(dl);
-       cdev = qed_dl->cdev;
-       ctx->val.vbool = cdev->iwarp_cmt;
-
-       return 0;
-}
-
-static int qed_dl_param_set(struct devlink *dl, u32 id,
-                           struct devlink_param_gset_ctx *ctx)
-{
-       struct qed_devlink *qed_dl;
-       struct qed_dev *cdev;
-
-       qed_dl = devlink_priv(dl);
-       cdev = qed_dl->cdev;
-       cdev->iwarp_cmt = ctx->val.vbool;
-
-       return 0;
-}
-
-static const struct devlink_param qed_devlink_params[] = {
-       DEVLINK_PARAM_DRIVER(QED_DEVLINK_PARAM_ID_IWARP_CMT,
-                            "iwarp_cmt", DEVLINK_PARAM_TYPE_BOOL,
-                            BIT(DEVLINK_PARAM_CMODE_RUNTIME),
-                            qed_dl_param_get, qed_dl_param_set, NULL),
-};
-
-static const struct devlink_ops qed_dl_ops;
-
-static int qed_devlink_register(struct qed_dev *cdev)
-{
-       union devlink_param_value value;
-       struct qed_devlink *qed_dl;
-       struct devlink *dl;
-       int rc;
-
-       dl = devlink_alloc(&qed_dl_ops, sizeof(*qed_dl));
-       if (!dl)
-               return -ENOMEM;
-
-       qed_dl = devlink_priv(dl);
-
-       cdev->dl = dl;
-       qed_dl->cdev = cdev;
-
-       rc = devlink_register(dl, &cdev->pdev->dev);
-       if (rc)
-               goto err_free;
-
-       rc = devlink_params_register(dl, qed_devlink_params,
-                                    ARRAY_SIZE(qed_devlink_params));
-       if (rc)
-               goto err_unregister;
-
-       value.vbool = false;
-       devlink_param_driverinit_value_set(dl,
-                                          QED_DEVLINK_PARAM_ID_IWARP_CMT,
-                                          value);
-
-       devlink_params_publish(dl);
-       cdev->iwarp_cmt = false;
-
-       return 0;
-
-err_unregister:
-       devlink_unregister(dl);
-
-err_free:
-       cdev->dl = NULL;
-       devlink_free(dl);
-
-       return rc;
-}
-
-static void qed_devlink_unregister(struct qed_dev *cdev)
-{
-       if (!cdev->dl)
-               return;
-
-       devlink_params_unregister(cdev->dl, qed_devlink_params,
-                                 ARRAY_SIZE(qed_devlink_params));
-
-       devlink_unregister(cdev->dl);
-       devlink_free(cdev->dl);
-}
-
 /* probing */
 static struct qed_dev *qed_probe(struct pci_dev *pdev,
                                 struct qed_probe_params *params)
-- 
1.8.3.1

Reply via email to