diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx5/qp.c')
| -rw-r--r-- | drivers/infiniband/hw/mlx5/qp.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c index 8937d72ddcf6..5fd071c05944 100644 --- a/drivers/infiniband/hw/mlx5/qp.c +++ b/drivers/infiniband/hw/mlx5/qp.c @@ -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;  |