X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Fklnds%2Fo2iblnd%2Fo2iblnd.c;h=5d4001022d05e3d8df38debe0e18568e73c483f5;hb=03ff4ee6484faf914cadbbffedbcd0057708625a;hp=ae9e88273107485b95c8d2c2a9fe808dbf6d15b9;hpb=84c7efc87ceb70ea05db4d0ae7f85d3c7932f38b;p=fs%2Flustre-release.git diff --git a/lnet/klnds/o2iblnd/o2iblnd.c b/lnet/klnds/o2iblnd/o2iblnd.c index ae9e882..5d40010 100644 --- a/lnet/klnds/o2iblnd/o2iblnd.c +++ b/lnet/klnds/o2iblnd/o2iblnd.c @@ -191,14 +191,14 @@ kiblnd_unpack_msg(kib_msg_t *msg, int nob) __swab32s(&msg->ibm_u.putack.ibpam_rd.rd_key); __swab32s(&msg->ibm_u.putack.ibpam_rd.rd_nfrags); } - + n = msg->ibm_u.putack.ibpam_rd.rd_nfrags; if (n <= 0 || n > IBLND_MAX_RDMA_FRAGS) { CERROR("Bad PUT_ACK nfrags: %d, should be 0 < n <= %d\n", n, IBLND_MAX_RDMA_FRAGS); return -EPROTO; } - + if (msg_nob < offsetof(kib_msg_t, ibm_u.putack.ibpam_rd.rd_frags[n])) { CERROR("Short PUT_ACK: %d(%d)\n", msg_nob, (int)offsetof(kib_msg_t, ibm_u.putack.ibpam_rd.rd_frags[n])); @@ -314,7 +314,7 @@ kiblnd_create_peer (lnet_ni_t *ni, kib_peer_t **peerp, lnet_nid_t nid) /* always called with a ref on ni, which prevents ni being shutdown */ LASSERT (net->ibn_shutdown == 0); - + /* npeers only grows with the global lock held */ atomic_inc(&net->ibn_npeers); @@ -598,6 +598,10 @@ kiblnd_debug_conn (kib_conn_t *conn) list_for_each(tmp, &conn->ibc_early_rxs) kiblnd_debug_rx(list_entry(tmp, kib_rx_t, rx_list)); + CDEBUG(D_CONSOLE, " tx_noops:\n"); + list_for_each(tmp, &conn->ibc_tx_noops) + kiblnd_debug_tx(list_entry(tmp, kib_tx_t, tx_list)); + CDEBUG(D_CONSOLE, " tx_queue_nocred:\n"); list_for_each(tmp, &conn->ibc_tx_queue_nocred) kiblnd_debug_tx(list_entry(tmp, kib_tx_t, tx_list)); @@ -666,6 +670,7 @@ kiblnd_create_conn (kib_peer_t *peer, struct rdma_cm_id *cmid, int state) conn->ibc_cmid = cmid; INIT_LIST_HEAD(&conn->ibc_early_rxs); + INIT_LIST_HEAD(&conn->ibc_tx_noops); INIT_LIST_HEAD(&conn->ibc_tx_queue); INIT_LIST_HEAD(&conn->ibc_tx_queue_rsrvd); INIT_LIST_HEAD(&conn->ibc_tx_queue_nocred); @@ -737,13 +742,12 @@ kiblnd_create_conn (kib_peer_t *peer, struct rdma_cm_id *cmid, int state) CERROR("Can't request completion notificiation: %d\n", rc); goto failed_2; } - + memset(init_qp_attr, 0, sizeof(*init_qp_attr)); init_qp_attr->event_handler = kiblnd_qp_event; init_qp_attr->qp_context = conn; - init_qp_attr->cap.max_send_wr = (*kiblnd_tunables.kib_concurrent_sends) * - (1 + IBLND_MAX_RDMA_FRAGS); - init_qp_attr->cap.max_recv_wr = IBLND_RX_MSGS; + init_qp_attr->cap.max_send_wr = IBLND_SEND_WRS; + init_qp_attr->cap.max_recv_wr = IBLND_RECV_WRS; init_qp_attr->cap.max_send_sge = 1; init_qp_attr->cap.max_recv_sge = 1; init_qp_attr->sq_sig_type = IB_SIGNAL_REQ_WR; @@ -850,6 +854,7 @@ kiblnd_destroy_conn (kib_conn_t *conn) LASSERT (!in_interrupt()); LASSERT (atomic_read(&conn->ibc_refcount) == 0); LASSERT (list_empty(&conn->ibc_early_rxs)); + LASSERT (list_empty(&conn->ibc_tx_noops)); LASSERT (list_empty(&conn->ibc_tx_queue)); LASSERT (list_empty(&conn->ibc_tx_queue_rsrvd)); LASSERT (list_empty(&conn->ibc_tx_queue_nocred)); @@ -1180,20 +1185,20 @@ kiblnd_alloc_tx_descs (lnet_ni_t *ni) return -ENOMEM; } #else - LIBCFS_ALLOC(tx->tx_wrq, - (1 + IBLND_MAX_RDMA_FRAGS) * + LIBCFS_ALLOC(tx->tx_wrq, + (1 + IBLND_MAX_RDMA_FRAGS) * sizeof(*tx->tx_wrq)); if (tx->tx_wrq == NULL) return -ENOMEM; - - LIBCFS_ALLOC(tx->tx_sge, - (1 + IBLND_MAX_RDMA_FRAGS) * + + LIBCFS_ALLOC(tx->tx_sge, + (1 + IBLND_MAX_RDMA_FRAGS) * sizeof(*tx->tx_sge)); if (tx->tx_sge == NULL) return -ENOMEM; - - LIBCFS_ALLOC(tx->tx_rd, - offsetof(kib_rdma_desc_t, + + LIBCFS_ALLOC(tx->tx_rd, + offsetof(kib_rdma_desc_t, rd_frags[IBLND_MAX_RDMA_FRAGS])); if (tx->tx_rd == NULL) return -ENOMEM; @@ -1616,7 +1621,7 @@ kiblnd_startup (lnet_ni_t *ni) if (!IS_ERR(mr)) { ibdev->ibd_mr = mr; } else { - CERROR("Can't get MR: %ld\n", PTR_ERR(pd)); + CERROR("Can't get MR: %ld\n", PTR_ERR(mr)); goto failed; }