OSDN Git Service

net: dsa: Add support for devlink resources
authorAndrew Lunn <andrew@lunn.ch>
Tue, 5 Nov 2019 00:12:57 +0000 (01:12 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Nov 2019 02:09:45 +0000 (18:09 -0800)
Add wrappers around the devlink resource API, so that DSA drivers can
register and unregister devlink resources.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/dsa.h
net/dsa/dsa.c

index e4c697b..9507611 100644 (file)
@@ -586,6 +586,22 @@ int dsa_devlink_params_register(struct dsa_switch *ds,
 void dsa_devlink_params_unregister(struct dsa_switch *ds,
                                   const struct devlink_param *params,
                                   size_t params_count);
+int dsa_devlink_resource_register(struct dsa_switch *ds,
+                                 const char *resource_name,
+                                 u64 resource_size,
+                                 u64 resource_id,
+                                 u64 parent_resource_id,
+                                 const struct devlink_resource_size_params *size_params);
+
+void dsa_devlink_resources_unregister(struct dsa_switch *ds);
+
+void dsa_devlink_resource_occ_get_register(struct dsa_switch *ds,
+                                          u64 resource_id,
+                                          devlink_resource_occ_get_t *occ_get,
+                                          void *occ_get_priv);
+void dsa_devlink_resource_occ_get_unregister(struct dsa_switch *ds,
+                                            u64 resource_id);
+
 struct dsa_devlink_priv {
        struct dsa_switch *ds;
 };
index db1c1c7..17281fe 100644 (file)
@@ -379,6 +379,43 @@ void dsa_devlink_params_unregister(struct dsa_switch *ds,
 }
 EXPORT_SYMBOL_GPL(dsa_devlink_params_unregister);
 
+int dsa_devlink_resource_register(struct dsa_switch *ds,
+                                 const char *resource_name,
+                                 u64 resource_size,
+                                 u64 resource_id,
+                                 u64 parent_resource_id,
+                                 const struct devlink_resource_size_params *size_params)
+{
+       return devlink_resource_register(ds->devlink, resource_name,
+                                        resource_size, resource_id,
+                                        parent_resource_id,
+                                        size_params);
+}
+EXPORT_SYMBOL_GPL(dsa_devlink_resource_register);
+
+void dsa_devlink_resources_unregister(struct dsa_switch *ds)
+{
+       devlink_resources_unregister(ds->devlink, NULL);
+}
+EXPORT_SYMBOL_GPL(dsa_devlink_resources_unregister);
+
+void dsa_devlink_resource_occ_get_register(struct dsa_switch *ds,
+                                          u64 resource_id,
+                                          devlink_resource_occ_get_t *occ_get,
+                                          void *occ_get_priv)
+{
+       return devlink_resource_occ_get_register(ds->devlink, resource_id,
+                                                occ_get, occ_get_priv);
+}
+EXPORT_SYMBOL_GPL(dsa_devlink_resource_occ_get_register);
+
+void dsa_devlink_resource_occ_get_unregister(struct dsa_switch *ds,
+                                            u64 resource_id)
+{
+       devlink_resource_occ_get_unregister(ds->devlink, resource_id);
+}
+EXPORT_SYMBOL_GPL(dsa_devlink_resource_occ_get_unregister);
+
 static int __init dsa_init_module(void)
 {
        int rc;