summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorRoland Dreier <rolandd@cisco.com>2007-06-12 10:50:42 -0700
committerRoland Dreier <rolandd@cisco.com>2007-06-12 10:50:42 -0700
commit614c3c85b5b4c3776439d464939c123cce679dee (patch)
tree9e25ae6a6752eb32c31dfe9d0b55c79b90385fc6 /drivers/infiniband
parent99f9f3d49cbc7d944476f6fde53a77ec789ab2aa (diff)
downloadop-kernel-dev-614c3c85b5b4c3776439d464939c123cce679dee.zip
op-kernel-dev-614c3c85b5b4c3776439d464939c123cce679dee.tar.gz
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>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/mlx4/cq.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index b2a290c..048c527 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -354,7 +354,7 @@ static int mlx4_ib_poll_one(struct mlx4_ib_cq *cq,
if (is_send) {
wq = &(*cur_qp)->sq;
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)];
++wq->tail;
} else if ((*cur_qp)->ibqp.srq) {
OpenPOWER on IntegriCloud