RDMA/cxgb3: Wrap the software send queue pointer as needed on flush
cxio_flush_sq() was failing to wrap around the software send queue causing garbage completion entries on a flush operation. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
f018c7e177
commit
a58e58fafd
@ -405,11 +405,11 @@ int cxio_flush_sq(struct t3_wq *wq, struct t3_cq *cq, int count)
|
|||||||
struct t3_swsq *sqp = wq->sq + Q_PTR2IDX(wq->sq_rptr, wq->sq_size_log2);
|
struct t3_swsq *sqp = wq->sq + Q_PTR2IDX(wq->sq_rptr, wq->sq_size_log2);
|
||||||
|
|
||||||
ptr = wq->sq_rptr + count;
|
ptr = wq->sq_rptr + count;
|
||||||
sqp += count;
|
sqp = wq->sq + Q_PTR2IDX(ptr, wq->sq_size_log2);
|
||||||
while (ptr != wq->sq_wptr) {
|
while (ptr != wq->sq_wptr) {
|
||||||
insert_sq_cqe(wq, cq, sqp);
|
insert_sq_cqe(wq, cq, sqp);
|
||||||
sqp++;
|
|
||||||
ptr++;
|
ptr++;
|
||||||
|
sqp = wq->sq + Q_PTR2IDX(ptr, wq->sq_size_log2);
|
||||||
flushed++;
|
flushed++;
|
||||||
}
|
}
|
||||||
return flushed;
|
return flushed;
|
||||||
|
Loading…
Reference in New Issue
Block a user