net/mlx5: Move all devlink related functions calls to devlink.c
authorEran Ben Elisha <eranbe@mellanox.com>
Tue, 11 Dec 2018 14:09:51 +0000 (16:09 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 13 Jun 2019 20:23:16 +0000 (13:23 -0700)
Centralize all devlink related callbacks in one file.
In the downstream patch, some more functionality will be added, this
patch is preparing the driver infrastructure for it.

Currently, move devlink un/register functions calls into this file.

Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Reviewed-by: Moshe Shemesh <moshe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/Makefile
drivers/net/ethernet/mellanox/mlx5/core/devlink.c [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlx5/core/devlink.h [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlx5/core/main.c

index d9d363f..9006fda 100644 (file)
@@ -15,7 +15,7 @@ mlx5_core-y :=        main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \
                health.o mcg.o cq.o alloc.o qp.o port.o mr.o pd.o \
                transobj.o vport.o sriov.o fs_cmd.o fs_core.o \
                fs_counters.o rl.o lag.o dev.o events.o wq.o lib/gid.o \
-               lib/devcom.o diag/fs_tracepoint.o diag/fw_tracer.o
+               lib/devcom.o diag/fs_tracepoint.o diag/fw_tracer.o devlink.o
 
 #
 # Netdev basic
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.c b/drivers/net/ethernet/mellanox/mlx5/core/devlink.c
new file mode 100644 (file)
index 0000000..ed4202e
--- /dev/null
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
+/* Copyright (c) 2019 Mellanox Technologies */
+
+#include <devlink.h>
+
+#include "mlx5_core.h"
+#include "eswitch.h"
+
+static int mlx5_devlink_flash_update(struct devlink *devlink,
+                                    const char *file_name,
+                                    const char *component,
+                                    struct netlink_ext_ack *extack)
+{
+       struct mlx5_core_dev *dev = devlink_priv(devlink);
+       const struct firmware *fw;
+       int err;
+
+       if (component)
+               return -EOPNOTSUPP;
+
+       err = request_firmware_direct(&fw, file_name, &dev->pdev->dev);
+       if (err)
+               return err;
+
+       return mlx5_firmware_flash(dev, fw, extack);
+}
+
+static const struct devlink_ops mlx5_devlink_ops = {
+#ifdef CONFIG_MLX5_ESWITCH
+       .eswitch_mode_set = mlx5_devlink_eswitch_mode_set,
+       .eswitch_mode_get = mlx5_devlink_eswitch_mode_get,
+       .eswitch_inline_mode_set = mlx5_devlink_eswitch_inline_mode_set,
+       .eswitch_inline_mode_get = mlx5_devlink_eswitch_inline_mode_get,
+       .eswitch_encap_mode_set = mlx5_devlink_eswitch_encap_mode_set,
+       .eswitch_encap_mode_get = mlx5_devlink_eswitch_encap_mode_get,
+#endif
+       .flash_update = mlx5_devlink_flash_update,
+};
+
+struct devlink *mlx5_devlink_alloc()
+{
+       return devlink_alloc(&mlx5_devlink_ops, sizeof(struct mlx5_core_dev));
+}
+
+void mlx5_devlink_free(struct devlink *devlink)
+{
+       devlink_free(devlink);
+}
+
+int mlx5_devlink_register(struct devlink *devlink, struct device *dev)
+{
+       return devlink_register(devlink, dev);
+}
+
+void mlx5_devlink_unregister(struct devlink *devlink)
+{
+       devlink_unregister(devlink);
+}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/devlink.h b/drivers/net/ethernet/mellanox/mlx5/core/devlink.h
new file mode 100644 (file)
index 0000000..d0ba037
--- /dev/null
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
+/* Copyright (c) 2019, Mellanox Technologies */
+
+#ifndef __MLX5_DEVLINK_H__
+#define __MLX5_DEVLINK_H__
+
+#include <net/devlink.h>
+
+struct devlink *mlx5_devlink_alloc(void);
+void mlx5_devlink_free(struct devlink *devlink);
+int mlx5_devlink_register(struct devlink *devlink, struct device *dev);
+void mlx5_devlink_unregister(struct devlink *devlink);
+
+#endif /* __MLX5_DEVLINK_H__ */
index 7ec135e..5ea1418 100644 (file)
@@ -56,6 +56,7 @@
 #include "fs_core.h"
 #include "lib/mpfs.h"
 #include "eswitch.h"
+#include "devlink.h"
 #include "lib/mlx5.h"
 #include "fpga/core.h"
 #include "fpga/ipsec.h"
@@ -1214,37 +1215,6 @@ out:
        return err;
 }
 
-static int mlx5_devlink_flash_update(struct devlink *devlink,
-                                    const char *file_name,
-                                    const char *component,
-                                    struct netlink_ext_ack *extack)
-{
-       struct mlx5_core_dev *dev = devlink_priv(devlink);
-       const struct firmware *fw;
-       int err;
-
-       if (component)
-               return -EOPNOTSUPP;
-
-       err = request_firmware_direct(&fw, file_name, &dev->pdev->dev);
-       if (err)
-               return err;
-
-       return mlx5_firmware_flash(dev, fw, extack);
-}
-
-static const struct devlink_ops mlx5_devlink_ops = {
-#ifdef CONFIG_MLX5_ESWITCH
-       .eswitch_mode_set = mlx5_devlink_eswitch_mode_set,
-       .eswitch_mode_get = mlx5_devlink_eswitch_mode_get,
-       .eswitch_inline_mode_set = mlx5_devlink_eswitch_inline_mode_set,
-       .eswitch_inline_mode_get = mlx5_devlink_eswitch_inline_mode_get,
-       .eswitch_encap_mode_set = mlx5_devlink_eswitch_encap_mode_set,
-       .eswitch_encap_mode_get = mlx5_devlink_eswitch_encap_mode_get,
-#endif
-       .flash_update = mlx5_devlink_flash_update,
-};
-
 static int mlx5_mdev_init(struct mlx5_core_dev *dev, int profile_idx)
 {
        struct mlx5_priv *priv = &dev->priv;
@@ -1306,9 +1276,9 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *id)
        struct devlink *devlink;
        int err;
 
-       devlink = devlink_alloc(&mlx5_devlink_ops, sizeof(*dev));
+       devlink = mlx5_devlink_alloc();
        if (!devlink) {
-               dev_err(&pdev->dev, "kzalloc failed\n");
+               dev_err(&pdev->dev, "devlink alloc failed\n");
                return -ENOMEM;
        }
 
@@ -1336,7 +1306,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *id)
 
        request_module_nowait(MLX5_IB_MOD);
 
-       err = devlink_register(devlink, &pdev->dev);
+       err = mlx5_devlink_register(devlink, &pdev->dev);
        if (err)
                goto clean_load;
 
@@ -1351,7 +1321,7 @@ err_load_one:
 pci_init_err:
        mlx5_mdev_uninit(dev);
 mdev_init_err:
-       devlink_free(devlink);
+       mlx5_devlink_free(devlink);
 
        return err;
 }
@@ -1361,7 +1331,7 @@ static void remove_one(struct pci_dev *pdev)
        struct mlx5_core_dev *dev  = pci_get_drvdata(pdev);
        struct devlink *devlink = priv_to_devlink(dev);
 
-       devlink_unregister(devlink);
+       mlx5_devlink_unregister(devlink);
        mlx5_unregister_device(dev);
 
        if (mlx5_unload_one(dev, true)) {
@@ -1372,7 +1342,7 @@ static void remove_one(struct pci_dev *pdev)
 
        mlx5_pci_close(dev);
        mlx5_mdev_uninit(dev);
-       devlink_free(devlink);
+       mlx5_devlink_free(devlink);
 }
 
 static pci_ers_result_t mlx5_pci_err_detected(struct pci_dev *pdev,