net/mlx5: Fix cmd error logging for manage pages cmd
authorRoy Novich <royno@nvidia.com>
Wed, 30 Mar 2022 14:59:27 +0000 (17:59 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Mon, 22 Aug 2022 19:57:08 +0000 (12:57 -0700)
When the driver unloads, give/reclaim_pages may fail as PF driver in
teardown flow, current code will lead to the following kernel log print
'failed reclaiming pages: err 0'.

Fix it to get same behavior as before the cited commits,
by calling mlx5_cmd_check before handling error state.
mlx5_cmd_check will verify if the returned error is an actual error
needed to be handled by the driver or not and will return an
appropriate value.

Fixes: 8d564292a166 ("net/mlx5: Remove redundant error on reclaim pages")
Fixes: 4dac2f10ada0 ("net/mlx5: Remove redundant notify fail on give pages")
Signed-off-by: Roy Novich <royno@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/pagealloc.c

index ec76a8b1acc1cccaace705fd0ba424123ce467c7..60596357bfc7ae94f7201037a8014f3b81f941c7 100644 (file)
@@ -376,8 +376,8 @@ retry:
                        goto out_dropped;
                }
        }
+       err = mlx5_cmd_check(dev, err, in, out);
        if (err) {
-               err = mlx5_cmd_check(dev, err, in, out);
                mlx5_core_warn(dev, "func_id 0x%x, npages %d, err %d\n",
                               func_id, npages, err);
                goto out_dropped;
@@ -524,10 +524,13 @@ static int reclaim_pages(struct mlx5_core_dev *dev, u16 func_id, int npages,
                dev->priv.reclaim_pages_discard += npages;
        }
        /* if triggered by FW event and failed by FW then ignore */
-       if (event && err == -EREMOTEIO)
+       if (event && err == -EREMOTEIO) {
                err = 0;
+               goto out_free;
+       }
+
+       err = mlx5_cmd_check(dev, err, in, out);
        if (err) {
-               err = mlx5_cmd_check(dev, err, in, out);
                mlx5_core_err(dev, "failed reclaiming pages: err %d\n", err);
                goto out_free;
        }