Eric Barton wrote:
int
kiblnd_post_rx (kib_rx_t *rx, int credit)
{
        kib_conn_t         *conn = rx->rx_conn;
        struct ib_recv_wr  *bad_wrq;
        int                 rc;

        LASSERT (!in_interrupt());
        LASSERT (credit == IBLND_POSTRX_NO_CREDIT ||
                 credit == IBLND_POSTRX_PEER_CREDIT ||
                 credit == IBLND_POSTRX_RSRVD_CREDIT);

        rx->rx_sge.length = IBLND_MSG_SIZE;
        rx->rx_sge.lkey = kiblnd_data.kib_mr->lkey;
        rx->rx_sge.addr = rx->rx_msgaddr;

        rx->rx_wrq.next = NULL;
        rx->rx_wrq.sg_list = &rx->rx_sge;
        rx->rx_wrq.num_sge = 1;
        rx->rx_wrq.wr_id = kiblnd_ptr2wreqid(rx, IBLND_WID_RX);

        LASSERT (conn->ibc_state >= IBLND_CONN_INIT);
        LASSERT (rx->rx_nob >= 0);              /* not posted */

        CDEBUG(D_NET, "posting rx [%d %x "LPX64"]\n",
               rx->rx_wrq.sg_list->length,
               rx->rx_wrq.sg_list->lkey,
               rx->rx_wrq.sg_list->addr);

        if (conn->ibc_state > IBLND_CONN_ESTABLISHED) {
                /* No more posts for this rx; so lose its ref */
                kiblnd_conn_decref(conn);
                return 0;
        }

        rx->rx_nob = -1;                        /* flag posted */

        rc = ib_post_recv(conn->ibc_cmid->qp, &rx->rx_wrq, &bad_wrq);
...

Based on your errors, my guess is that there's something wrong with the posted receive, but I don't see what from this code. Can you post where you create the mr and map the receive buffers too?

- Sean
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to