[ofw] [Patch 4/62] Reference implementation of NDv2
Fab Tillier
ftillier at microsoft.com
Wed Feb 20 15:37:27 PST 2013
QP state checks when posting aren't really accomplishing anything. The SQ check especially only checks against the QP being in RST, while a proper check would be to prevent posting until in RTS. However, the QP state is decoupled between the hardware and the software, so a QP can move to RTS before user-mode detects it, and a receive completion can imply RTS. Fixing the state checks to be useful is *really hard*, so this patch just removes them (fewer branches in post path).
Signed-off-by: Fab Tillier <ftillier at microsoft.com>
diff -dwup3 -x *svn* -r c:\dev\openib\ofw\gen1\branches\mlx4_30\trunk\hw\mlx4\user\hca\qp.c .\hw\mlx4\user\hca\qp.c
--- c:\dev\openib\ofw\gen1\branches\mlx4_30\trunk\hw\mlx4\user\hca\qp.c Thu Mar 29 00:15:30 2012
+++ .\hw\mlx4\user\hca\qp.c Wed May 23 18:40:41 2012
@@ -230,14 +230,6 @@ mlx4_post_send(
pthread_spin_lock(&qp->sq.lock);
- /* XXX check that state is OK to post send */
- if(ibqp->state == IBV_QPS_RESET) {
- status = IB_INVALID_QP_STATE;
- if (bad_wr)
- *bad_wr = wr;
- goto err_state;
- }
-
ind = qp->sq.head;
for (nreq = 0; wr; ++nreq, wr = wr->p_next) {
@@ -478,7 +470,6 @@ out:
stamp_send_wqe(qp, (ind + qp->sq_spare_wqes - 1) &
(qp->sq.wqe_cnt - 1));
-err_state:
pthread_spin_unlock(&qp->sq.lock);
return status;
@@ -501,14 +492,6 @@ mlx4_post_recv(
pthread_spin_lock(&qp->rq.lock);
- /* XXX check that state is OK to post receive */
- if(qp->ibv_qp.state == IBV_QPS_RESET) {
- status = IB_INVALID_QP_STATE;
- if (bad_wr)
- *bad_wr = wr;
- goto err_state;
- }
-
ind = qp->rq.head & (qp->rq.wqe_cnt - 1);
for (nreq = 0; wr; ++nreq, wr = wr->p_next) {
@@ -558,7 +541,6 @@ out:
*qp->db = htonl(qp->rq.head & 0xffff);
}
-err_state:
pthread_spin_unlock(&qp->rq.lock);
return status;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ndv2.4.patch
Type: application/octet-stream
Size: 1316 bytes
Desc: ndv2.4.patch
URL: <http://lists.openfabrics.org/pipermail/ofw/attachments/20130220/6d93c4bd/attachment.obj>
More information about the ofw
mailing list