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 d9d363fe5cf786f6fba763e326a055ba30674e1d..9006fda6bd11bfc359a6d11da7a80af113bf56a0 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 7ec135eaabc628d555913186c7154a23f57a564f..5ea141893b99f84241a8eeb7d0d83bfd2a3415cb 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,