mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
RDMA/mlx5: Fix Q-counters query in LAG mode
Previously we used the core device associated to the IB device in order
to do the Q-counters query to the FW, but in LAG mode it is possible
that the core device isn't the one that created this VF.
Hence instead of using the core device to query the Q-counters
we use the ESW core device which is guaranteed to be that of the VF.
Fixes: d22467a71e
("RDMA/mlx5: Expand switchdev Q-counters to expose representor statistics")
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
Reviewed-by: Mark Zhang <markzhang@nvidia.com>
Link: https://lore.kernel.org/r/778d7d7a24892348d0bdef17d2e5f9e044717e86.1685960567.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
e80ef13948
commit
2de43f5b51
@ -330,6 +330,7 @@ static int mlx5_ib_query_q_counters_vport(struct mlx5_ib_dev *dev,
|
||||
{
|
||||
u32 out[MLX5_ST_SZ_DW(query_q_counter_out)] = {};
|
||||
u32 in[MLX5_ST_SZ_DW(query_q_counter_in)] = {};
|
||||
struct mlx5_core_dev *mdev;
|
||||
__be32 val;
|
||||
int ret, i;
|
||||
|
||||
@ -337,12 +338,16 @@ static int mlx5_ib_query_q_counters_vport(struct mlx5_ib_dev *dev,
|
||||
dev->port[port_num].rep->vport == MLX5_VPORT_UPLINK)
|
||||
return 0;
|
||||
|
||||
mdev = mlx5_eswitch_get_core_dev(dev->port[port_num].rep->esw);
|
||||
if (!mdev)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
MLX5_SET(query_q_counter_in, in, opcode, MLX5_CMD_OP_QUERY_Q_COUNTER);
|
||||
MLX5_SET(query_q_counter_in, in, other_vport, 1);
|
||||
MLX5_SET(query_q_counter_in, in, vport_number,
|
||||
dev->port[port_num].rep->vport);
|
||||
MLX5_SET(query_q_counter_in, in, aggregate, 1);
|
||||
ret = mlx5_cmd_exec_inout(dev->mdev, query_q_counter, in, out);
|
||||
ret = mlx5_cmd_exec_inout(mdev, query_q_counter, in, out);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user