|
@@ -284,7 +284,7 @@ void mthca_cq_clean(struct mthca_dev *dev, struct mthca_cq *cq, u32 qpn,
|
|
{
|
|
{
|
|
struct mthca_cqe *cqe;
|
|
struct mthca_cqe *cqe;
|
|
u32 prod_index;
|
|
u32 prod_index;
|
|
- int nfreed = 0;
|
|
|
|
|
|
+ int i, nfreed = 0;
|
|
|
|
|
|
spin_lock_irq(&cq->lock);
|
|
spin_lock_irq(&cq->lock);
|
|
|
|
|
|
@@ -321,6 +321,8 @@ void mthca_cq_clean(struct mthca_dev *dev, struct mthca_cq *cq, u32 qpn,
|
|
}
|
|
}
|
|
|
|
|
|
if (nfreed) {
|
|
if (nfreed) {
|
|
|
|
+ for (i = 0; i < nfreed; ++i)
|
|
|
|
+ set_cqe_hw(get_cqe(cq, (cq->cons_index + i) & cq->ibcq.cqe));
|
|
wmb();
|
|
wmb();
|
|
cq->cons_index += nfreed;
|
|
cq->cons_index += nfreed;
|
|
update_cons_index(dev, cq, nfreed);
|
|
update_cons_index(dev, cq, nfreed);
|