net/mlx4_core: Reduce harmless SRIOV error message to debug level
Under SRIOV resource management, extra counters are allocated to VFs
from a free pool. If that pool is empty, the ALLOC_RES command for
a counter resource fails -- and this generates a misleading error
message in the message log.
Under SRIOV, each VF is allocated (i.e., guaranteed) 2 counters --
one counter per port. For ETH ports, the RoCE driver requests an
additional counter (above the guaranteed counters). If that request
fails, the VF RoCE driver simply uses the default (i.e., guaranteed)
counter for that port.
Thus, failing to allocate an additional counter does not constitute
a problem, and the error message on the PF when this occurs should
be reduced to debug level.
Finally, to identify the situation that the reason for the failure is
that no resources are available to grant to the VF, we modified the
error returned by mlx4_grant_resource to -EDQUOT (Quota exceeded),
which more accurately describes the error.
Fixes: c3abb51bdb
("IB/mlx4: Add RoCE/IB dedicated counters")
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
89c557687a
Коммит
83bd5118a1
|
@ -1789,9 +1789,17 @@ static int mlx4_master_process_vhcr(struct mlx4_dev *dev, int slave,
|
|||
}
|
||||
|
||||
if (err) {
|
||||
if (!(dev->persist->state & MLX4_DEVICE_STATE_INTERNAL_ERROR))
|
||||
if (!(dev->persist->state & MLX4_DEVICE_STATE_INTERNAL_ERROR)) {
|
||||
if (vhcr->op == MLX4_CMD_ALLOC_RES &&
|
||||
(vhcr->in_modifier & 0xff) == RES_COUNTER &&
|
||||
err == -EDQUOT)
|
||||
mlx4_dbg(dev,
|
||||
"Unable to allocate counter for slave %d (%d)\n",
|
||||
slave, err);
|
||||
else
|
||||
mlx4_warn(dev, "vhcr command:0x%x slave:%d failed with error:%d, status %d\n",
|
||||
vhcr->op, slave, vhcr->errno, err);
|
||||
}
|
||||
vhcr_cmd->status = mlx4_errno_to_status(err);
|
||||
goto out_status;
|
||||
}
|
||||
|
|
|
@ -311,7 +311,7 @@ static inline int mlx4_grant_resource(struct mlx4_dev *dev, int slave,
|
|||
struct mlx4_priv *priv = mlx4_priv(dev);
|
||||
struct resource_allocator *res_alloc =
|
||||
&priv->mfunc.master.res_tracker.res_alloc[res_type];
|
||||
int err = -EINVAL;
|
||||
int err = -EDQUOT;
|
||||
int allocated, free, reserved, guaranteed, from_free;
|
||||
int from_rsvd;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче