In ipath_rc.c, there are a couple of places that do:

                qp->r_msn++;
                qp->r_psn++;
                qp->r_state = opcode;
                qp->r_nak_state = 0;
                barrier();
                qp->r_head_ack_queue = next;

This looks pretty suspicious to me -- I haven't really tried to
understand the code, but it has the flavor of protecting against
another CPU seeing the r_head_ack_queue update before the other
updates; and barrier() doesn't actually do that.  If this code is
correct, I think a comment explaining the barrier() would be good.

But I have the feeling that the barrier() should really be wmb(), with
rmb()s added on the reader side.

 - R.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to