Commit ba7d16c7 authored by Eran Ben Elisha's avatar Eran Ben Elisha Committed by David S. Miller

devlink: Implicitly set auto recover flag when registering health reporter

When health reporter is registered to devlink, devlink will implicitly set
auto recover if and only if the reporter has a recover method. No reason
to explicitly get the auto recover flag from the driver.

Remove this flag from all drivers that called
devlink_health_reporter_create.

All existing health reporters set auto recovery to true if they have a
recover method.

Yet, administrator can unset auto recover via netlink command as prior to
this patch.
Signed-off-by: default avatarEran Ben Elisha <eranbe@mellanox.com>
Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c7f0d4c8
...@@ -150,7 +150,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp) ...@@ -150,7 +150,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp)
health->fw_reset_reporter = health->fw_reset_reporter =
devlink_health_reporter_create(bp->dl, devlink_health_reporter_create(bp->dl,
&bnxt_dl_fw_reset_reporter_ops, &bnxt_dl_fw_reset_reporter_ops,
0, true, bp); 0, bp);
if (IS_ERR(health->fw_reset_reporter)) { if (IS_ERR(health->fw_reset_reporter)) {
netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n", netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n",
PTR_ERR(health->fw_reset_reporter)); PTR_ERR(health->fw_reset_reporter));
...@@ -166,7 +166,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp) ...@@ -166,7 +166,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp)
health->fw_reporter = health->fw_reporter =
devlink_health_reporter_create(bp->dl, devlink_health_reporter_create(bp->dl,
&bnxt_dl_fw_reporter_ops, &bnxt_dl_fw_reporter_ops,
0, false, bp); 0, bp);
if (IS_ERR(health->fw_reporter)) { if (IS_ERR(health->fw_reporter)) {
netdev_warn(bp->dev, "Failed to create FW health reporter, rc = %ld\n", netdev_warn(bp->dev, "Failed to create FW health reporter, rc = %ld\n",
PTR_ERR(health->fw_reporter)); PTR_ERR(health->fw_reporter));
...@@ -182,7 +182,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp) ...@@ -182,7 +182,7 @@ void bnxt_dl_fw_reporters_create(struct bnxt *bp)
health->fw_fatal_reporter = health->fw_fatal_reporter =
devlink_health_reporter_create(bp->dl, devlink_health_reporter_create(bp->dl,
&bnxt_dl_fw_fatal_reporter_ops, &bnxt_dl_fw_fatal_reporter_ops,
0, true, bp); 0, bp);
if (IS_ERR(health->fw_fatal_reporter)) { if (IS_ERR(health->fw_fatal_reporter)) {
netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n", netdev_warn(bp->dev, "Failed to create FW fatal health reporter, rc = %ld\n",
PTR_ERR(health->fw_fatal_reporter)); PTR_ERR(health->fw_fatal_reporter));
......
...@@ -571,7 +571,7 @@ int mlx5e_reporter_rx_create(struct mlx5e_priv *priv) ...@@ -571,7 +571,7 @@ int mlx5e_reporter_rx_create(struct mlx5e_priv *priv)
reporter = devlink_health_reporter_create(devlink, reporter = devlink_health_reporter_create(devlink,
&mlx5_rx_reporter_ops, &mlx5_rx_reporter_ops,
MLX5E_REPORTER_RX_GRACEFUL_PERIOD, MLX5E_REPORTER_RX_GRACEFUL_PERIOD,
true, priv); priv);
if (IS_ERR(reporter)) { if (IS_ERR(reporter)) {
netdev_warn(priv->netdev, "Failed to create rx reporter, err = %ld\n", netdev_warn(priv->netdev, "Failed to create rx reporter, err = %ld\n",
PTR_ERR(reporter)); PTR_ERR(reporter));
......
...@@ -416,7 +416,7 @@ int mlx5e_reporter_tx_create(struct mlx5e_priv *priv) ...@@ -416,7 +416,7 @@ int mlx5e_reporter_tx_create(struct mlx5e_priv *priv)
reporter = reporter =
devlink_health_reporter_create(devlink, &mlx5_tx_reporter_ops, devlink_health_reporter_create(devlink, &mlx5_tx_reporter_ops,
MLX5_REPORTER_TX_GRACEFUL_PERIOD, MLX5_REPORTER_TX_GRACEFUL_PERIOD,
true, priv); priv);
if (IS_ERR(reporter)) { if (IS_ERR(reporter)) {
netdev_warn(priv->netdev, netdev_warn(priv->netdev,
"Failed to create tx reporter, err = %ld\n", "Failed to create tx reporter, err = %ld\n",
......
...@@ -627,7 +627,7 @@ static void mlx5_fw_reporters_create(struct mlx5_core_dev *dev) ...@@ -627,7 +627,7 @@ static void mlx5_fw_reporters_create(struct mlx5_core_dev *dev)
health->fw_reporter = health->fw_reporter =
devlink_health_reporter_create(devlink, &mlx5_fw_reporter_ops, devlink_health_reporter_create(devlink, &mlx5_fw_reporter_ops,
0, false, dev); 0, dev);
if (IS_ERR(health->fw_reporter)) if (IS_ERR(health->fw_reporter))
mlx5_core_warn(dev, "Failed to create fw reporter, err = %ld\n", mlx5_core_warn(dev, "Failed to create fw reporter, err = %ld\n",
PTR_ERR(health->fw_reporter)); PTR_ERR(health->fw_reporter));
...@@ -636,7 +636,7 @@ static void mlx5_fw_reporters_create(struct mlx5_core_dev *dev) ...@@ -636,7 +636,7 @@ static void mlx5_fw_reporters_create(struct mlx5_core_dev *dev)
devlink_health_reporter_create(devlink, devlink_health_reporter_create(devlink,
&mlx5_fw_fatal_reporter_ops, &mlx5_fw_fatal_reporter_ops,
MLX5_REPORTER_FW_GRACEFUL_PERIOD, MLX5_REPORTER_FW_GRACEFUL_PERIOD,
true, dev); dev);
if (IS_ERR(health->fw_fatal_reporter)) if (IS_ERR(health->fw_fatal_reporter))
mlx5_core_warn(dev, "Failed to create fw fatal reporter, err = %ld\n", mlx5_core_warn(dev, "Failed to create fw fatal reporter, err = %ld\n",
PTR_ERR(health->fw_fatal_reporter)); PTR_ERR(health->fw_fatal_reporter));
......
...@@ -271,14 +271,14 @@ int nsim_dev_health_init(struct nsim_dev *nsim_dev, struct devlink *devlink) ...@@ -271,14 +271,14 @@ int nsim_dev_health_init(struct nsim_dev *nsim_dev, struct devlink *devlink)
health->empty_reporter = health->empty_reporter =
devlink_health_reporter_create(devlink, devlink_health_reporter_create(devlink,
&nsim_dev_empty_reporter_ops, &nsim_dev_empty_reporter_ops,
0, false, health); 0, health);
if (IS_ERR(health->empty_reporter)) if (IS_ERR(health->empty_reporter))
return PTR_ERR(health->empty_reporter); return PTR_ERR(health->empty_reporter);
health->dummy_reporter = health->dummy_reporter =
devlink_health_reporter_create(devlink, devlink_health_reporter_create(devlink,
&nsim_dev_dummy_reporter_ops, &nsim_dev_dummy_reporter_ops,
0, true, health); 0, health);
if (IS_ERR(health->dummy_reporter)) { if (IS_ERR(health->dummy_reporter)) {
err = PTR_ERR(health->dummy_reporter); err = PTR_ERR(health->dummy_reporter);
goto err_empty_reporter_destroy; goto err_empty_reporter_destroy;
......
...@@ -1040,8 +1040,7 @@ int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, ...@@ -1040,8 +1040,7 @@ int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name,
struct devlink_health_reporter * struct devlink_health_reporter *
devlink_health_reporter_create(struct devlink *devlink, devlink_health_reporter_create(struct devlink *devlink,
const struct devlink_health_reporter_ops *ops, const struct devlink_health_reporter_ops *ops,
u64 graceful_period, bool auto_recover, u64 graceful_period, void *priv);
void *priv);
void void
devlink_health_reporter_destroy(struct devlink_health_reporter *reporter); devlink_health_reporter_destroy(struct devlink_health_reporter *reporter);
......
...@@ -5124,14 +5124,12 @@ devlink_health_reporter_find_by_name(struct devlink *devlink, ...@@ -5124,14 +5124,12 @@ devlink_health_reporter_find_by_name(struct devlink *devlink,
* @devlink: devlink * @devlink: devlink
* @ops: ops * @ops: ops
* @graceful_period: to avoid recovery loops, in msecs * @graceful_period: to avoid recovery loops, in msecs
* @auto_recover: auto recover when error occurs
* @priv: priv * @priv: priv
*/ */
struct devlink_health_reporter * struct devlink_health_reporter *
devlink_health_reporter_create(struct devlink *devlink, devlink_health_reporter_create(struct devlink *devlink,
const struct devlink_health_reporter_ops *ops, const struct devlink_health_reporter_ops *ops,
u64 graceful_period, bool auto_recover, u64 graceful_period, void *priv)
void *priv)
{ {
struct devlink_health_reporter *reporter; struct devlink_health_reporter *reporter;
...@@ -5141,8 +5139,7 @@ devlink_health_reporter_create(struct devlink *devlink, ...@@ -5141,8 +5139,7 @@ devlink_health_reporter_create(struct devlink *devlink,
goto unlock; goto unlock;
} }
if (WARN_ON(auto_recover && !ops->recover) || if (WARN_ON(graceful_period && !ops->recover)) {
WARN_ON(graceful_period && !ops->recover)) {
reporter = ERR_PTR(-EINVAL); reporter = ERR_PTR(-EINVAL);
goto unlock; goto unlock;
} }
...@@ -5157,7 +5154,7 @@ devlink_health_reporter_create(struct devlink *devlink, ...@@ -5157,7 +5154,7 @@ devlink_health_reporter_create(struct devlink *devlink,
reporter->ops = ops; reporter->ops = ops;
reporter->devlink = devlink; reporter->devlink = devlink;
reporter->graceful_period = graceful_period; reporter->graceful_period = graceful_period;
reporter->auto_recover = auto_recover; reporter->auto_recover = !!ops->recover;
mutex_init(&reporter->dump_lock); mutex_init(&reporter->dump_lock);
refcount_set(&reporter->refcount, 1); refcount_set(&reporter->refcount, 1);
list_add_tail(&reporter->list, &devlink->reporter_list); list_add_tail(&reporter->list, &devlink->reporter_list);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment