i40iw: Fix incorrect assignment of SQ head
The SQ head is incorrectly incremented when the number of WQEs required is greater than the number available. The fix is to use the I40IW_RING_MOV_HEAD_BY_COUNT macro. This checks for the SQ full condition first and only if SQ has room for the request, then we move the head appropriately. Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Henry Orosco <henry.orosco@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
78e945aace
commit
d4165e3abd
|
@ -175,12 +175,10 @@ u64 *i40iw_qp_get_next_send_wqe(struct i40iw_qp_uk *qp,
|
|||
if (!*wqe_idx)
|
||||
qp->swqe_polarity = !qp->swqe_polarity;
|
||||
}
|
||||
|
||||
for (i = 0; i < wqe_size / I40IW_QP_WQE_MIN_SIZE; i++) {
|
||||
I40IW_RING_MOVE_HEAD(qp->sq_ring, ret_code);
|
||||
if (ret_code)
|
||||
return NULL;
|
||||
}
|
||||
I40IW_RING_MOVE_HEAD_BY_COUNT(qp->sq_ring,
|
||||
wqe_size / I40IW_QP_WQE_MIN_SIZE, ret_code);
|
||||
if (ret_code)
|
||||
return NULL;
|
||||
|
||||
wqe = qp->sq_base[*wqe_idx].elem;
|
||||
|
||||
|
|
Loading…
Reference in a new issue