Message ID | 1439108187-12785-1-git-send-email-sagig@mellanox.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On 08/09/2015 04:16 AM, Sagi Grimberg wrote: > From: Ariel Nahum <arieln@mellanox.com> > > When handling a device internal error, the driver is responsible to > drain the completion queue with flush errors. > > In case a completion queue was assigned to multiple send queues, the > driver iterates over the send queues and generates flush errors of > inflight wqes. The driver must correctly pass the wc array with an > offset as a result of the previous send queue iteration. Not doing so > will overwrite previously set completions and return a wrong number > of polled completions which includes ones which were not correctly set. > > Fixes: 35f05dabf95a (IB/mlx4: Reset flow support for IB kernel ULPs) > Signed-off-by: Ariel Nahum <arieln@mellanox.com> > Signed-off-by: Sagi Grimberg <sagig@mellanox.com> > Cc: Yishai Hadas <yishaih@mellanox.com> Applied, thanks.
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c index 36eb3d0..2f42595 100644 --- a/drivers/infiniband/hw/mlx4/cq.c +++ b/drivers/infiniband/hw/mlx4/cq.c @@ -638,7 +638,7 @@ static void mlx4_ib_poll_sw_comp(struct mlx4_ib_cq *cq, int num_entries, * simulated FLUSH_ERR completions */ list_for_each_entry(qp, &cq->send_qp_list, cq_send_list) { - mlx4_ib_qp_sw_comp(qp, num_entries, wc, npolled, 1); + mlx4_ib_qp_sw_comp(qp, num_entries, wc + *npolled, npolled, 1); if (*npolled >= num_entries) goto out; }