IB/mlx4: Fix handling of wq->tail for send completions
Cast the increment added to wq->tail when send completions are processed to u16 to avoid using wrong values caused by standard integer promotions. The same bug was fixed in libmlx4 by Eli Cohen <eli@mellanox.co.il>. Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
@@ -354,7 +354,7 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq,
|
|||||||
if (is_send) {
|
if (is_send) {
|
||||||
wq = &(*cur_qp)->sq;
|
wq = &(*cur_qp)->sq;
|
||||||
wqe_ctr = be16_to_cpu(cqe->wqe_index);
|
wqe_ctr = be16_to_cpu(cqe->wqe_index);
|
||||||
wq->tail += wqe_ctr - (u16) wq->tail;
|
wq->tail += (u16) (wqe_ctr - (u16) wq->tail);
|
||||||
wc->wr_id = wq->wrid[wq->tail & (wq->max - 1)];
|
wc->wr_id = wq->wrid[wq->tail & (wq->max - 1)];
|
||||||
++wq->tail;
|
++wq->tail;
|
||||||
} else if ((*cur_qp)->ibqp.srq) {
|
} else if ((*cur_qp)->ibqp.srq) {
|
||||||
|
Reference in New Issue
Block a user