diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/devlink.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/net/core/devlink.c b/net/core/devlink.c index 376e01a70c6d..78e22cea4cc7 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -4409,11 +4409,6 @@ struct devlink_health_reporter { u64 last_recovery_ts; }; -enum devlink_health_reporter_state { - DEVLINK_HEALTH_REPORTER_STATE_HEALTHY, - DEVLINK_HEALTH_REPORTER_STATE_ERROR, -}; - void * devlink_health_reporter_priv(struct devlink_health_reporter *reporter) { @@ -4498,6 +4493,23 @@ devlink_health_reporter_destroy(struct devlink_health_reporter *reporter) } EXPORT_SYMBOL_GPL(devlink_health_reporter_destroy); +void +devlink_health_reporter_state_update(struct devlink_health_reporter *reporter, + enum devlink_health_reporter_state state) +{ + if (WARN_ON(state != DEVLINK_HEALTH_REPORTER_STATE_HEALTHY && + state != DEVLINK_HEALTH_REPORTER_STATE_ERROR)) + return; + + if (reporter->health_state == state) + return; + + reporter->health_state = state; + trace_devlink_health_reporter_state_update(reporter->devlink, + reporter->ops->name, state); +} +EXPORT_SYMBOL_GPL(devlink_health_reporter_state_update); + static int devlink_health_reporter_recover(struct devlink_health_reporter *reporter, void *priv_ctx) |