aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/devlink.c
diff options
context:
space:
mode:
authorVladyslav Tarasiuk <vladyslavt@mellanox.com>2020-07-10 15:25:09 +0300
committerDavid S. Miller <davem@davemloft.net>2020-07-10 14:32:02 -0700
commitbd8210055c36a453358d75017dce7522d950dd38 (patch)
treed11117c01d7a7f5d06979d43bd37db1602364289 /net/core/devlink.c
parentdevlink: Rework devlink health reporter destructor (diff)
downloadlinux-dev-bd8210055c36a453358d75017dce7522d950dd38.tar.xz
linux-dev-bd8210055c36a453358d75017dce7522d950dd38.zip
devlink: Create generic devlink health reporter search function
Add a generic __devlink_health_reporter_find_by_name() that can be used with arbitrary devlink health reporter list. Signed-off-by: Vladyslav Tarasiuk <vladyslavt@mellanox.com> Reviewed-by: Moshe Shemesh <moshe@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/devlink.c')
-rw-r--r--net/core/devlink.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c
index b85f2113398d..4e995de65b36 100644
--- a/net/core/devlink.c
+++ b/net/core/devlink.c
@@ -5309,19 +5309,29 @@ devlink_health_reporter_priv(struct devlink_health_reporter *reporter)
EXPORT_SYMBOL_GPL(devlink_health_reporter_priv);
static struct devlink_health_reporter *
-devlink_health_reporter_find_by_name(struct devlink *devlink,
- const char *reporter_name)
+__devlink_health_reporter_find_by_name(struct list_head *reporter_list,
+ struct mutex *list_lock,
+ const char *reporter_name)
{
struct devlink_health_reporter *reporter;
- lockdep_assert_held(&devlink->reporters_lock);
- list_for_each_entry(reporter, &devlink->reporter_list, list)
+ lockdep_assert_held(list_lock);
+ list_for_each_entry(reporter, reporter_list, list)
if (!strcmp(reporter->ops->name, reporter_name))
return reporter;
return NULL;
}
static struct devlink_health_reporter *
+devlink_health_reporter_find_by_name(struct devlink *devlink,
+ const char *reporter_name)
+{
+ return __devlink_health_reporter_find_by_name(&devlink->reporter_list,
+ &devlink->reporters_lock,
+ reporter_name);
+}
+
+static struct devlink_health_reporter *
__devlink_health_reporter_create(struct devlink *devlink,
const struct devlink_health_reporter_ops *ops,
u64 graceful_period, void *priv)