net/funeth: devlink support
authorDimitris Michailidis <d.michailidis@fungible.com>
Fri, 25 Feb 2022 02:58:59 +0000 (18:58 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 27 Feb 2022 10:51:23 +0000 (10:51 +0000)
The devlink part, which is minimal at this time giving just the driver
name.

Signed-off-by: Dimitris Michailidis <dmichail@fungible.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/fungible/funeth/funeth_devlink.c [new file with mode: 0644]
drivers/net/ethernet/fungible/funeth/funeth_devlink.h [new file with mode: 0644]

diff --git a/drivers/net/ethernet/fungible/funeth/funeth_devlink.c b/drivers/net/ethernet/fungible/funeth/funeth_devlink.c
new file mode 100644 (file)
index 0000000..a849b3c
--- /dev/null
@@ -0,0 +1,40 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
+
+#include "funeth.h"
+#include "funeth_devlink.h"
+
+static int fun_dl_info_get(struct devlink *dl, struct devlink_info_req *req,
+                          struct netlink_ext_ack *extack)
+{
+       int err;
+
+       err = devlink_info_driver_name_put(req, KBUILD_MODNAME);
+       if (err)
+               return err;
+
+       return 0;
+}
+
+static const struct devlink_ops fun_dl_ops = {
+       .info_get = fun_dl_info_get,
+};
+
+struct devlink *fun_devlink_alloc(struct device *dev)
+{
+       return devlink_alloc(&fun_dl_ops, sizeof(struct fun_ethdev), dev);
+}
+
+void fun_devlink_free(struct devlink *devlink)
+{
+       devlink_free(devlink);
+}
+
+void fun_devlink_register(struct devlink *devlink)
+{
+       devlink_register(devlink);
+}
+
+void fun_devlink_unregister(struct devlink *devlink)
+{
+       devlink_unregister(devlink);
+}
diff --git a/drivers/net/ethernet/fungible/funeth/funeth_devlink.h b/drivers/net/ethernet/fungible/funeth/funeth_devlink.h
new file mode 100644 (file)
index 0000000..e40464d
--- /dev/null
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
+
+#ifndef __FUNETH_DEVLINK_H
+#define __FUNETH_DEVLINK_H
+
+#include <net/devlink.h>
+
+struct devlink *fun_devlink_alloc(struct device *dev);
+void fun_devlink_free(struct devlink *devlink);
+void fun_devlink_register(struct devlink *devlink);
+void fun_devlink_unregister(struct devlink *devlink);
+
+#endif /* __FUNETH_DEVLINK_H */