RDMA/mlx5: Clear old rate limit when closing QP

Before QP is closed it changes to ERROR state, when this happens
the QP was left with old rate limit that was already removed from
the table.

Fixes: 7d29f349a4 ("IB/mlx5: Properly adjust rate limit on QP state transitions")
Signed-off-by: Rafi Wiener <rafiw@mellanox.com>
Signed-off-by: Oleg Kuporosov <olegk@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Link: https://lore.kernel.org/r/20191002120243.16971-1-leon@kernel.org
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Rafi Wiener 2019-10-02 15:02:43 +03:00 committed by Doug Ledford
parent 0417791536
commit c8973df2da
1 changed files with 5 additions and 3 deletions

View File

@ -3249,10 +3249,12 @@ static int modify_raw_packet_qp_sq(
} }
/* Only remove the old rate after new rate was set */ /* Only remove the old rate after new rate was set */
if ((old_rl.rate && if ((old_rl.rate && !mlx5_rl_are_equal(&old_rl, &new_rl)) ||
!mlx5_rl_are_equal(&old_rl, &new_rl)) || (new_state != MLX5_SQC_STATE_RDY)) {
(new_state != MLX5_SQC_STATE_RDY))
mlx5_rl_remove_rate(dev, &old_rl); mlx5_rl_remove_rate(dev, &old_rl);
if (new_state != MLX5_SQC_STATE_RDY)
memset(&new_rl, 0, sizeof(new_rl));
}
ibqp->rl = new_rl; ibqp->rl = new_rl;
sq->state = new_state; sq->state = new_state;