Commit c8973df2 authored by Rafi Wiener's avatar Rafi Wiener Committed by Doug Ledford
Browse files

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: 7d29f349 ("IB/mlx5: Properly adjust rate limit on QP state transitions")
Signed-off-by: default avatarRafi Wiener <rafiw@mellanox.com>
Signed-off-by: default avatarOleg Kuporosov <olegk@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Link: https://lore.kernel.org/r/20191002120243.16971-1-leon@kernel.org


Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 04177915
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -3249,10 +3249,12 @@ static int modify_raw_packet_qp_sq(
	}

	/* Only remove the old rate after new rate was set */
	if ((old_rl.rate &&
	     !mlx5_rl_are_equal(&old_rl, &new_rl)) ||
	    (new_state != MLX5_SQC_STATE_RDY))
	if ((old_rl.rate && !mlx5_rl_are_equal(&old_rl, &new_rl)) ||
	    (new_state != MLX5_SQC_STATE_RDY)) {
		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;
	sq->state = new_state;