Commit baf6dfdb authored by Aya Levin's avatar Aya Levin Committed by Saeed Mahameed

net/mlx5e: Set tx reporter only on successful creation

When failing to create tx reporter, don't set the reporter's pointer.
Creating a reporter is not mandatory for driver load, avoid
garbage/error pointer.
Signed-off-by: default avatarAya Levin <ayal@mellanox.com>
Reviewed-by: default avatarTariq Toukan <tariqt@mellanox.com>
Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
parent 7f7cc235
...@@ -117,7 +117,7 @@ static int mlx5_tx_health_report(struct devlink_health_reporter *tx_reporter, ...@@ -117,7 +117,7 @@ static int mlx5_tx_health_report(struct devlink_health_reporter *tx_reporter,
char *err_str, char *err_str,
struct mlx5e_tx_err_ctx *err_ctx) struct mlx5e_tx_err_ctx *err_ctx)
{ {
if (IS_ERR_OR_NULL(tx_reporter)) { if (!tx_reporter) {
netdev_err(err_ctx->sq->channel->netdev, err_str); netdev_err(err_ctx->sq->channel->netdev, err_str);
return err_ctx->recover(err_ctx->sq); return err_ctx->recover(err_ctx->sq);
} }
...@@ -289,25 +289,27 @@ static const struct devlink_health_reporter_ops mlx5_tx_reporter_ops = { ...@@ -289,25 +289,27 @@ static const struct devlink_health_reporter_ops mlx5_tx_reporter_ops = {
int mlx5e_tx_reporter_create(struct mlx5e_priv *priv) int mlx5e_tx_reporter_create(struct mlx5e_priv *priv)
{ {
struct devlink_health_reporter *reporter;
struct mlx5_core_dev *mdev = priv->mdev; struct mlx5_core_dev *mdev = priv->mdev;
struct devlink *devlink = priv_to_devlink(mdev); struct devlink *devlink = priv_to_devlink(mdev);
priv->tx_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); true, priv);
if (IS_ERR(priv->tx_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",
PTR_ERR(priv->tx_reporter)); PTR_ERR(reporter));
return PTR_ERR(priv->tx_reporter); return PTR_ERR(reporter);
} }
priv->tx_reporter = reporter;
return 0; return 0;
} }
void mlx5e_tx_reporter_destroy(struct mlx5e_priv *priv) void mlx5e_tx_reporter_destroy(struct mlx5e_priv *priv)
{ {
if (IS_ERR_OR_NULL(priv->tx_reporter)) if (!priv->tx_reporter)
return; return;
devlink_health_reporter_destroy(priv->tx_reporter); devlink_health_reporter_destroy(priv->tx_reporter);
......
...@@ -2325,7 +2325,7 @@ int mlx5e_open_channels(struct mlx5e_priv *priv, ...@@ -2325,7 +2325,7 @@ int mlx5e_open_channels(struct mlx5e_priv *priv,
goto err_close_channels; goto err_close_channels;
} }
if (!IS_ERR_OR_NULL(priv->tx_reporter)) if (priv->tx_reporter)
devlink_health_reporter_state_update(priv->tx_reporter, devlink_health_reporter_state_update(priv->tx_reporter,
DEVLINK_HEALTH_REPORTER_STATE_HEALTHY); DEVLINK_HEALTH_REPORTER_STATE_HEALTHY);
......
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