From e4b273bfc3c497a67cd71dc9481a7d1fae39cba5 Mon Sep 17 00:00:00 2001 From: isaac Date: Thu, 28 Feb 2008 13:00:01 +0000 Subject: [PATCH] - removed trailing spaces. --- lnet/klnds/viblnd/viblnd.c | 31 ++- lnet/klnds/viblnd/viblnd_cb.c | 465 +++++++++++++++++++++--------------------- 2 files changed, 246 insertions(+), 250 deletions(-) diff --git a/lnet/klnds/viblnd/viblnd.c b/lnet/klnds/viblnd/viblnd.c index b094bff..0ab15bf 100644 --- a/lnet/klnds/viblnd/viblnd.c +++ b/lnet/klnds/viblnd/viblnd.c @@ -1494,13 +1494,12 @@ kibnal_setup_tx_descs (void) fmr_props.max_pages = LNET_MAX_IOV; fmr_props.log2_page_sz = PAGE_SHIFT; fmr_props.max_outstanding_maps = *kibnal_tunables.kib_fmr_remaps; - + vvrc = vv_alloc_fmr(kibnal_data.kib_hca, &fmr_props, &tx->tx_md.md_fmrhandle); if (vvrc != vv_return_ok) { CERROR("Can't allocate fmr %d: %d\n", i, vvrc); - kibnal_free_fmrs(i); kibnal_free_pages (kibnal_data.kib_tx_pages); return -ENOMEM; @@ -1509,7 +1508,7 @@ kibnal_setup_tx_descs (void) tx->tx_md.md_fmrcount = *kibnal_tunables.kib_fmr_remaps; tx->tx_md.md_active = 0; #endif - tx->tx_msg = (kib_msg_t *)(((char *)page_address(page)) + + tx->tx_msg = (kib_msg_t *)(((char *)page_address(page)) + page_offset); vvrc = vv_get_gen_mr_attrib(kibnal_data.kib_hca, @@ -1520,7 +1519,7 @@ kibnal_setup_tx_descs (void) &rkey); LASSERT (vvrc == vv_return_ok); - CDEBUG(D_NET, "Tx[%d] %p->%p[%x]\n", i, tx, + CDEBUG(D_NET, "Tx[%d] %p->%p[%x]\n", i, tx, tx->tx_msg, tx->tx_lkey); list_add (&tx->tx_list, &kibnal_data.kib_idle_txs); @@ -1688,7 +1687,7 @@ kibnal_startup (lnet_ni_t *ni) ni->ni_peertxcredits = *kibnal_tunables.kib_peercredits; CLASSERT (LNET_MAX_INTERFACES > 1); - + if (ni->ni_interfaces[0] != NULL) { /* Use the HCA specified in 'networks=' */ @@ -1700,7 +1699,7 @@ kibnal_startup (lnet_ni_t *ni) /* Parse */ hca_name = ni->ni_interfaces[0]; nob = strlen(*kibnal_tunables.kib_hca_basename); - + if (strncmp(hca_name, *kibnal_tunables.kib_hca_basename, nob) || sscanf(hca_name + nob, "%d%n", &devno, &nob) < 1) { CERROR("Unrecognised HCA %s\n", hca_name); @@ -1727,26 +1726,26 @@ kibnal_startup (lnet_ni_t *ni) CERROR("IPoIB interface name %s truncated\n", ipif_name); return -EINVAL; } - + rc = libcfs_ipif_query(ipif_name, &up, &ip, &netmask); if (rc != 0) { CERROR("Can't query IPoIB interface %s: %d\n", ipif_name, rc); return -ENETDOWN; } - + if (!up) { CERROR("Can't query IPoIB interface %s: it's down\n", ipif_name); return -ENETDOWN; } - + ni->ni_nid = LNET_MKNID(LNET_NIDNET(ni->ni_nid), ip); - + PORTAL_MODULE_USE; memset (&kibnal_data, 0, sizeof (kibnal_data)); /* zero pointers, flags etc */ kibnal_data.kib_ni = ni; ni->ni_data = &kibnal_data; - + do_gettimeofday(&tv); kibnal_data.kib_incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec; @@ -1779,7 +1778,7 @@ kibnal_startup (lnet_ni_t *ni) CERROR("Can't allocate tx descs\n"); goto failed; } - + /* lists/ptrs/locks initialised */ kibnal_data.kib_init = IBNAL_INIT_DATA; /*****************************************************/ @@ -1899,7 +1898,7 @@ kibnal_startup (lnet_ni_t *ni) hca_name, kibnal_data.kib_port, kibnal_data.kib_port_gid.scope.g.subnet, kibnal_data.kib_port_gid.scope.g.eui64); - + /*****************************************************/ #if 1 @@ -1912,7 +1911,7 @@ kibnal_startup (lnet_ni_t *ni) CERROR ("Can't init PD: %d\n", vvrc); goto failed; } - + /* flag PD initialised */ kibnal_data.kib_init = IBNAL_INIT_PD; /*****************************************************/ @@ -1922,7 +1921,7 @@ kibnal_startup (lnet_ni_t *ni) CERROR ("Can't register tx descs: %d\n", rc); goto failed; } - + /* flag TX descs initialised */ kibnal_data.kib_init = IBNAL_INIT_TXD; /*****************************************************/ @@ -1962,7 +1961,7 @@ kibnal_startup (lnet_ni_t *ni) CERROR("Can't start listener: %d\n", rc); goto failed; } - + /* flag everything initialised */ kibnal_data.kib_init = IBNAL_INIT_ALL; /*****************************************************/ diff --git a/lnet/klnds/viblnd/viblnd_cb.c b/lnet/klnds/viblnd/viblnd_cb.c index 3b05751..d468673 100644 --- a/lnet/klnds/viblnd/viblnd_cb.c +++ b/lnet/klnds/viblnd/viblnd_cb.c @@ -42,7 +42,7 @@ kibnal_tx_done (kib_tx_t *tx) vv_return_t vvrc; /* mapping must be active (it dropped fmrcount to 0) */ - LASSERT (tx->tx_md.md_active); + LASSERT (tx->tx_md.md_active); vvrc = vv_unmap_fmr(kibnal_data.kib_hca, 1, &tx->tx_md.md_fmrhandle); @@ -56,7 +56,7 @@ kibnal_tx_done (kib_tx_t *tx) /* tx may have up to 2 lnet msgs to finalise */ lntmsg[0] = tx->tx_lntmsg[0]; tx->tx_lntmsg[0] = NULL; lntmsg[1] = tx->tx_lntmsg[1]; tx->tx_lntmsg[1] = NULL; - + if (tx->tx_conn != NULL) { kibnal_conn_decref(tx->tx_conn); tx->tx_conn = NULL; @@ -97,10 +97,10 @@ kibnal_txlist_done (struct list_head *txlist, int status) } kib_tx_t * -kibnal_get_idle_tx (void) +kibnal_get_idle_tx (void) { kib_tx_t *tx; - + spin_lock(&kibnal_data.kib_tx_lock); if (list_empty (&kibnal_data.kib_idle_txs)) { @@ -126,7 +126,7 @@ kibnal_get_idle_tx (void) LASSERT (tx->tx_conn == NULL); LASSERT (tx->tx_lntmsg[0] == NULL); LASSERT (tx->tx_lntmsg[1] == NULL); - + return tx; } @@ -142,7 +142,7 @@ kibnal_post_rx (kib_rx_t *rx, int credit, int rsrvd_credit) /* old peers don't reserve rxs for RDMA replies */ LASSERT (!rsrvd_credit || conn->ibc_version != IBNAL_MSG_VERSION_RDMAREPLYNOTRSRVD); - + rx->rx_gl = (vv_scatgat_t) { .v_address = KIBNAL_ADDR2SG(addr), .l_key = rx->rx_lkey, @@ -170,9 +170,9 @@ kibnal_post_rx (kib_rx_t *rx, int credit, int rsrvd_credit) kibnal_conn_decref(conn); return 0; } - + rx->rx_nob = -1; /* flag posted */ - + spin_lock(&conn->ibc_lock); /* Serialise vv_post_receive; it's not re-entrant on the same QP */ vvrc = vv_post_receive(kibnal_data.kib_hca, @@ -191,7 +191,7 @@ kibnal_post_rx (kib_rx_t *rx, int credit, int rsrvd_credit) return 0; } - + spin_unlock(&conn->ibc_lock); CERROR ("post rx -> %s failed %d\n", @@ -228,10 +228,10 @@ kib_tx_t * kibnal_find_waiting_tx_locked(kib_conn_t *conn, int txtype, __u64 cookie) { struct list_head *tmp; - + list_for_each(tmp, &conn->ibc_active_txs) { kib_tx_t *tx = list_entry(tmp, kib_tx_t, tx_list); - + LASSERT (!tx->tx_queued); LASSERT (tx->tx_sending != 0 || tx->tx_waiting); @@ -270,12 +270,12 @@ kibnal_handle_completion(kib_conn_t *conn, int txtype, int status, __u64 cookie) if (tx->tx_status == 0) { /* success so far */ if (status < 0) { /* failed? */ tx->tx_status = status; - } else if (txtype == IBNAL_MSG_GET_REQ) { + } else if (txtype == IBNAL_MSG_GET_REQ) { lnet_set_reply_msg_len(kibnal_data.kib_ni, tx->tx_lntmsg[1], status); } } - + tx->tx_waiting = 0; idle = !tx->tx_queued && (tx->tx_sending == 0); @@ -283,26 +283,26 @@ kibnal_handle_completion(kib_conn_t *conn, int txtype, int status, __u64 cookie) list_del(&tx->tx_list); spin_unlock(&conn->ibc_lock); - + if (idle) kibnal_tx_done(tx); } void -kibnal_send_completion (kib_conn_t *conn, int type, int status, __u64 cookie) +kibnal_send_completion (kib_conn_t *conn, int type, int status, __u64 cookie) { kib_tx_t *tx = kibnal_get_idle_tx(); - + if (tx == NULL) { CERROR("Can't get tx for completion %x for %s\n", type, libcfs_nid2str(conn->ibc_peer->ibp_nid)); return; } - + tx->tx_msg->ibm_u.completion.ibcm_status = status; tx->tx_msg->ibm_u.completion.ibcm_cookie = cookie; kibnal_init_tx_msg(tx, type, sizeof(kib_completion_msg_t)); - + kibnal_queue_tx(tx, conn); } @@ -322,7 +322,7 @@ kibnal_handle_rx (kib_rx_t *rx) CDEBUG (D_NET, "Received %x[%d] from %s\n", msg->ibm_type, credits, libcfs_nid2str(conn->ibc_peer->ibp_nid)); - + if (credits != 0) { /* Have I received credits that will let me send? */ spin_lock(&conn->ibc_lock); @@ -347,7 +347,7 @@ kibnal_handle_rx (kib_rx_t *rx) msg->ibm_srcnid, rx, 0); repost = rc < 0; /* repost on error */ break; - + case IBNAL_MSG_PUT_REQ: rc = lnet_parse(kibnal_data.kib_ni, &msg->ibm_u.putreq.ibprm_hdr, msg->ibm_srcnid, rx, 1); @@ -356,9 +356,9 @@ kibnal_handle_rx (kib_rx_t *rx) case IBNAL_MSG_PUT_NAK: rsrvd_credit = 1; /* rdma reply (was pre-reserved) */ - + CWARN ("PUT_NACK from %s\n", libcfs_nid2str(conn->ibc_peer->ibp_nid)); - kibnal_handle_completion(conn, IBNAL_MSG_PUT_REQ, + kibnal_handle_completion(conn, IBNAL_MSG_PUT_REQ, msg->ibm_u.completion.ibcm_status, msg->ibm_u.completion.ibcm_cookie); break; @@ -387,7 +387,7 @@ kibnal_handle_rx (kib_rx_t *rx) tx->tx_nwrq = 0; /* overwrite PUT_REQ */ - rc2 = kibnal_init_rdma(tx, IBNAL_MSG_PUT_DONE, + rc2 = kibnal_init_rdma(tx, IBNAL_MSG_PUT_DONE, kibnal_rd_size(&msg->ibm_u.putack.ibpam_rd), &msg->ibm_u.putack.ibpam_rd, msg->ibm_u.putack.ibpam_dst_cookie); @@ -402,7 +402,7 @@ kibnal_handle_rx (kib_rx_t *rx) kibnal_queue_tx_locked(tx, conn); spin_unlock(&conn->ibc_lock); break; - + case IBNAL_MSG_PUT_DONE: /* This buffer was pre-reserved by not returning the credit * when the PUT_REQ's buffer was reposted, so I just return it @@ -420,7 +420,7 @@ kibnal_handle_rx (kib_rx_t *rx) case IBNAL_MSG_GET_DONE: rsrvd_credit = 1; /* rdma reply (was pre-reserved) */ - + kibnal_handle_completion(conn, IBNAL_MSG_GET_REQ, msg->ibm_u.completion.ibcm_status, msg->ibm_u.completion.ibcm_cookie); @@ -454,7 +454,7 @@ kibnal_rx_complete (kib_rx_t *rx, vv_comp_status_t vvrc, int nob, __u64 rxseq) goto ignore; if (vvrc != vv_comp_status_success) { - CERROR("Rx from %s failed: %d\n", + CERROR("Rx from %s failed: %d\n", libcfs_nid2str(conn->ibc_peer->ibp_nid), vvrc); goto failed; } @@ -470,7 +470,7 @@ kibnal_rx_complete (kib_rx_t *rx, vv_comp_status_t vvrc, int nob, __u64 rxseq) if (!lnet_ptlcompat_matchnid(conn->ibc_peer->ibp_nid, msg->ibm_srcnid) || - !lnet_ptlcompat_matchnid(kibnal_data.kib_ni->ni_nid, + !lnet_ptlcompat_matchnid(kibnal_data.kib_ni->ni_nid, msg->ibm_dstnid) || msg->ibm_srcstamp != conn->ibc_incarnation || msg->ibm_dststamp != kibnal_data.kib_incarnation) { @@ -497,16 +497,16 @@ kibnal_rx_complete (kib_rx_t *rx, vv_comp_status_t vvrc, int nob, __u64 rxseq) /* must check holding global lock to eliminate race */ if (conn->ibc_state < IBNAL_CONN_ESTABLISHED) { list_add_tail(&rx->rx_list, &conn->ibc_early_rxs); - write_unlock_irqrestore(&kibnal_data.kib_global_lock, + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); return; } - write_unlock_irqrestore(&kibnal_data.kib_global_lock, + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); } kibnal_handle_rx(rx); return; - + failed: CDEBUG(D_NET, "rx %p conn %p\n", rx, conn); kibnal_close_conn(conn, -EIO); @@ -541,7 +541,7 @@ kibnal_kvaddr_to_page (unsigned long vaddr) #if !IBNAL_USE_FMR int -kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page, +kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page, unsigned long page_offset, unsigned long len) { kib_rdma_frag_t *frag = &rd->rd_frags[rd->rd_nfrag]; @@ -563,7 +563,7 @@ kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page, /* NB this relies entirely on there being a single region for the whole * of memory, since "high" memory will wrap in the (void *) cast! */ - vvrc = vv_get_gen_mr_attrib(kibnal_data.kib_hca, + vvrc = vv_get_gen_mr_attrib(kibnal_data.kib_hca, (void *)((unsigned long)addr), len, &mem_h, &l_key, &r_key); LASSERT (vvrc == vv_return_ok); @@ -589,8 +589,8 @@ kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page, kibnal_rf_set(frag, frag_addr, len); - CDEBUG(D_NET,"map frag [%d][%d %x %08x%08x] "LPX64"\n", - rd->rd_nfrag, frag->rf_nob, rd->rd_key, + CDEBUG(D_NET,"map frag [%d][%d %x %08x%08x] "LPX64"\n", + rd->rd_nfrag, frag->rf_nob, rd->rd_key, frag->rf_addr_hi, frag->rf_addr_lo, frag_addr); rd->rd_nfrag++; @@ -598,10 +598,9 @@ kibnal_append_rdfrag(kib_rdma_desc_t *rd, int active, struct page *page, } int -kibnal_setup_rd_iov(kib_tx_t *tx, kib_rdma_desc_t *rd, +kibnal_setup_rd_iov(kib_tx_t *tx, kib_rdma_desc_t *rd, vv_access_con_bit_mask_t access, unsigned int niov, struct iovec *iov, int offset, int nob) - { /* active if I'm sending */ int active = ((access & vv_acc_r_mem_write) == 0); @@ -637,7 +636,7 @@ kibnal_setup_rd_iov(kib_tx_t *tx, kib_rdma_desc_t *rd, fragnob = min((int)(iov->iov_len - offset), nob); fragnob = min(fragnob, (int)PAGE_SIZE - page_offset); - rc = kibnal_append_rdfrag(rd, active, page, + rc = kibnal_append_rdfrag(rd, active, page, page_offset, fragnob); if (rc != 0) return rc; @@ -651,12 +650,12 @@ kibnal_setup_rd_iov(kib_tx_t *tx, kib_rdma_desc_t *rd, } nob -= fragnob; } while (nob > 0); - + return 0; } int -kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, +kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, vv_access_con_bit_mask_t access, int nkiov, lnet_kiov_t *kiov, int offset, int nob) { @@ -682,7 +681,7 @@ kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, do { LASSERT (nkiov > 0); fragnob = min((int)(kiov->kiov_len - offset), nob); - + rc = kibnal_append_rdfrag(rd, active, kiov->kiov_page, kiov->kiov_offset + offset, fragnob); @@ -722,7 +721,7 @@ kibnal_map_tx (kib_tx_t *tx, kib_rdma_desc_t *rd, int active, vvrc = vv_map_fmr(kibnal_data.kib_hca, tx->tx_md.md_fmrhandle, &map_props, &tx->tx_md.md_lkey, &tx->tx_md.md_rkey); if (vvrc != vv_return_ok) { - CERROR ("Can't map vaddr %p for %d in %d pages: %d\n", + CERROR ("Can't map vaddr %p for %d in %d pages: %d\n", map_props.start, nob, npages, vvrc); return -EFAULT; } @@ -746,7 +745,6 @@ int kibnal_setup_rd_iov (kib_tx_t *tx, kib_rdma_desc_t *rd, vv_access_con_bit_mask_t access, unsigned int niov, struct iovec *iov, int offset, int nob) - { /* active if I'm sending */ int active = ((access & vv_acc_r_mem_write) == 0); @@ -773,7 +771,7 @@ kibnal_setup_rd_iov (kib_tx_t *tx, kib_rdma_desc_t *rd, } vaddr = ((unsigned long)iov->iov_base) + offset; - + page_offset = vaddr & (PAGE_SIZE - 1); resid = nob; npages = 0; @@ -808,7 +806,7 @@ kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, int resid; int npages; unsigned long page_offset; - + CDEBUG(D_NET, "niov %d offset %d nob %d\n", nkiov, offset, nob); LASSERT (nob > 0); @@ -825,7 +823,7 @@ kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, } page_offset = kiov->kiov_offset + offset; - + resid = offset + nob; npages = 0; @@ -834,13 +832,13 @@ kibnal_setup_rd_kiov (kib_tx_t *tx, kib_rdma_desc_t *rd, LASSERT (nkiov > 0); if ((npages > 0 && kiov->kiov_offset != 0) || - (resid > kiov->kiov_len && + (resid > kiov->kiov_len && (kiov->kiov_offset + kiov->kiov_len) != PAGE_SIZE)) { /* Can't have gaps */ CERROR ("Can't make payload contiguous in I/O VM:" "page %d, offset %d, len %d \n", npages, kiov->kiov_offset, kiov->kiov_len); - + return -EINVAL; } @@ -882,16 +880,16 @@ kibnal_check_sends (kib_conn_t *conn) libcfs_nid2str(conn->ibc_peer->ibp_nid)); return; } - + spin_lock(&conn->ibc_lock); LASSERT (conn->ibc_nsends_posted <= *kibnal_tunables.kib_concurrent_sends); LASSERT (conn->ibc_reserved_credits >= 0); - + while (conn->ibc_reserved_credits > 0 && !list_empty(&conn->ibc_tx_queue_rsrvd)) { - LASSERT (conn->ibc_version != + LASSERT (conn->ibc_version != IBNAL_MSG_VERSION_RDMAREPLYNOTRSRVD); tx = list_entry(conn->ibc_tx_queue_rsrvd.next, kib_tx_t, tx_list); @@ -899,39 +897,39 @@ kibnal_check_sends (kib_conn_t *conn) list_add_tail(&tx->tx_list, &conn->ibc_tx_queue); conn->ibc_reserved_credits--; } - + if (list_empty(&conn->ibc_tx_queue) && list_empty(&conn->ibc_tx_queue_nocred) && (conn->ibc_outstanding_credits >= IBNAL_CREDIT_HIGHWATER || kibnal_send_keepalive(conn))) { spin_unlock(&conn->ibc_lock); - + tx = kibnal_get_idle_tx(); if (tx != NULL) kibnal_init_tx_msg(tx, IBNAL_MSG_NOOP, 0); spin_lock(&conn->ibc_lock); - + if (tx != NULL) kibnal_queue_tx_locked(tx, conn); } for (;;) { if (!list_empty(&conn->ibc_tx_queue_nocred)) { - LASSERT (conn->ibc_version != + LASSERT (conn->ibc_version != IBNAL_MSG_VERSION_RDMAREPLYNOTRSRVD); - tx = list_entry (conn->ibc_tx_queue_nocred.next, + tx = list_entry (conn->ibc_tx_queue_nocred.next, kib_tx_t, tx_list); consume_cred = 0; } else if (!list_empty (&conn->ibc_tx_queue)) { - tx = list_entry (conn->ibc_tx_queue.next, + tx = list_entry (conn->ibc_tx_queue.next, kib_tx_t, tx_list); consume_cred = 1; } else { /* nothing waiting */ break; } - + LASSERT (tx->tx_queued); /* We rely on this for QP sizing */ LASSERT (tx->tx_nwrq > 0 && tx->tx_nwrq <= 1 + IBNAL_MAX_RDMA_FRAGS); @@ -948,14 +946,14 @@ kibnal_check_sends (kib_conn_t *conn) libcfs_nid2str(conn->ibc_peer->ibp_nid)); break; } - + if (consume_cred) { if (conn->ibc_credits == 0) { /* no credits */ CDEBUG(D_NET, "%s: no credits\n", libcfs_nid2str(conn->ibc_peer->ibp_nid)); break; } - + if (conn->ibc_credits == 1 && /* last credit reserved for */ conn->ibc_outstanding_credits == 0) { /* giving back credits */ CDEBUG(D_NET, "%s: not using last credit\n", @@ -963,7 +961,7 @@ kibnal_check_sends (kib_conn_t *conn) break; } } - + list_del (&tx->tx_list); tx->tx_queued = 0; @@ -1065,13 +1063,13 @@ kibnal_check_sends (kib_conn_t *conn) tx->tx_status = rc; tx->tx_waiting = 0; tx->tx_sending--; - + done = (tx->tx_sending == 0); if (done) list_del (&tx->tx_list); - + spin_unlock(&conn->ibc_lock); - + if (conn->ibc_state == IBNAL_CONN_ESTABLISHED) CERROR ("Error %d posting transmit to %s\n", vvrc, libcfs_nid2str(conn->ibc_peer->ibp_nid)); @@ -1123,7 +1121,7 @@ kibnal_tx_complete (kib_tx_t *tx, vv_comp_status_t vvrc) tx->tx_waiting = 0; tx->tx_status = -EIO; } - + idle = (tx->tx_sending == 0) && /* This is the final callback */ !tx->tx_waiting && /* Not waiting for peer */ !tx->tx_queued; /* Not re-queued (PUT_DONE) */ @@ -1155,7 +1153,7 @@ kibnal_init_tx_msg (kib_tx_t *tx, int type, int body_nob) int nob = offsetof (kib_msg_t, ibm_u) + body_nob; __u64 addr = (__u64)((unsigned long)((tx)->tx_msg)); - LASSERT (tx->tx_nwrq >= 0 && + LASSERT (tx->tx_nwrq >= 0 && tx->tx_nwrq < (1 + IBNAL_MAX_RDMA_FRAGS)); LASSERT (nob <= IBNAL_MSG_SIZE); @@ -1177,7 +1175,7 @@ kibnal_init_tx_msg (kib_tx_t *tx, int type, int body_nob) wrq->type.send.solicited_event = 1; wrq->type.send.immidiate_data_indicator = 0; wrq->type.send.send_qp_type.rc_type.fance_indicator = 0; - + tx->tx_nwrq++; } @@ -1239,7 +1237,7 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob, rc = -EPROTO; break; } - + if (dstidx == dstrd->rd_nfrag) { CERROR("Dst buffer exhausted: %d frags\n", dstidx); rc = -EPROTO; @@ -1275,14 +1273,14 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob, resid -= wrknob; if (wrknob < srcfrag->rf_nob) { - kibnal_rf_set(srcfrag, - kibnal_rf_addr(srcfrag) + wrknob, + kibnal_rf_set(srcfrag, + kibnal_rf_addr(srcfrag) + wrknob, srcfrag->rf_nob - wrknob); } else { srcfrag++; srcidx++; } - + if (wrknob < dstfrag->rf_nob) { kibnal_rf_set(dstfrag, kibnal_rf_addr(dstfrag) + wrknob, @@ -1291,14 +1289,14 @@ kibnal_init_rdma (kib_tx_t *tx, int type, int nob, dstfrag++; dstidx++; } - + tx->tx_nwrq++; } if (rc < 0) /* no RDMA if completing with failure */ tx->tx_nwrq = 0; #endif - + ibmsg->ibm_u.completion.ibcm_status = rc; ibmsg->ibm_u.completion.ibcm_cookie = dstcookie; kibnal_init_tx_msg(tx, type, sizeof (kib_completion_msg_t)); @@ -1312,7 +1310,7 @@ kibnal_queue_tx (kib_tx_t *tx, kib_conn_t *conn) spin_lock(&conn->ibc_lock); kibnal_queue_tx_locked (tx, conn); spin_unlock(&conn->ibc_lock); - + kibnal_check_sends(conn); } @@ -1346,13 +1344,13 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) /* If I get here, I've committed to send, so I complete the tx with * failure on any problems */ - + LASSERT (tx->tx_conn == NULL); /* only set when assigned a conn */ LASSERT (tx->tx_nwrq > 0); /* work items have been set up */ for (retry = 0; ; retry = 1) { read_lock_irqsave(g_lock, flags); - + peer = kibnal_find_peer_locked (nid); if (peer != NULL) { conn = kibnal_find_conn_locked (peer); @@ -1365,7 +1363,7 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) return; } } - + /* Making one or more connections; I'll need a write lock... */ read_unlock(g_lock); write_lock(g_lock); @@ -1389,7 +1387,7 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) if (rc != 0) { CERROR("Can't add peer %s: %d\n", libcfs_nid2str(nid), rc); - + tx->tx_status = -EHOSTUNREACH; tx->tx_waiting = 0; kibnal_tx_done (tx); @@ -1402,7 +1400,7 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) /* Connection exists; queue message on it */ kibnal_conn_addref(conn); /* 1 ref for me... */ write_unlock_irqrestore(g_lock, flags); - + kibnal_queue_tx (tx, conn); kibnal_conn_decref(conn); /* ...until here */ return; @@ -1423,7 +1421,7 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) peer->ibp_arp_count = 1 + *kibnal_tunables.kib_arp_retries; kibnal_schedule_peer_arp(peer); } - + /* A connection is being established; queue the message... */ list_add_tail (&tx->tx_list, &peer->ibp_tx_queue); @@ -1433,13 +1431,13 @@ kibnal_launch_tx (kib_tx_t *tx, lnet_nid_t nid) int kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) { - lnet_hdr_t *hdr = &lntmsg->msg_hdr; - int type = lntmsg->msg_type; + lnet_hdr_t *hdr = &lntmsg->msg_hdr; + int type = lntmsg->msg_type; lnet_process_id_t target = lntmsg->msg_target; int target_is_router = lntmsg->msg_target_is_router; int routing = lntmsg->msg_routing; - unsigned int payload_niov = lntmsg->msg_niov; - struct iovec *payload_iov = lntmsg->msg_iov; + unsigned int payload_niov = lntmsg->msg_niov; + struct iovec *payload_iov = lntmsg->msg_iov; lnet_kiov_t *payload_kiov = lntmsg->msg_kiov; unsigned int payload_offset = lntmsg->msg_offset; unsigned int payload_nob = lntmsg->msg_len; @@ -1465,7 +1463,7 @@ kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) default: LBUG(); return (-EIO); - + case LNET_MSG_ACK: LASSERT (payload_nob == 0); break; @@ -1473,7 +1471,7 @@ kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) case LNET_MSG_GET: if (routing || target_is_router) break; /* send IMMEDIATE */ - + /* is the REPLY message too small for RDMA? */ nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[lntmsg->msg_md->md_length]); if (nob <= IBNAL_MSG_SIZE) @@ -1485,7 +1483,7 @@ kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) libcfs_nid2str(target.nid)); return -ENOMEM; } - + ibmsg = tx->tx_msg; ibmsg->ibm_u.get.ibgm_hdr = *hdr; ibmsg->ibm_u.get.ibgm_cookie = tx->tx_cookie; @@ -1514,7 +1512,7 @@ kibnal_send(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg) #else { int n = ibmsg->ibm_u.get.ibgm_rd.rd_nfrag; - + nob = offsetof(kib_get_msg_t, ibgm_rd.rd_frags[n]); } #endif @@ -1613,14 +1611,14 @@ void kibnal_reply (lnet_ni_t *ni, kib_rx_t *rx, lnet_msg_t *lntmsg) { lnet_process_id_t target = lntmsg->msg_target; - unsigned int niov = lntmsg->msg_niov; - struct iovec *iov = lntmsg->msg_iov; + unsigned int niov = lntmsg->msg_niov; + struct iovec *iov = lntmsg->msg_iov; lnet_kiov_t *kiov = lntmsg->msg_kiov; unsigned int offset = lntmsg->msg_offset; unsigned int nob = lntmsg->msg_len; kib_tx_t *tx; int rc; - + tx = kibnal_get_idle_tx(); if (tx == NULL) { CERROR("Can't get tx for REPLY to %s\n", @@ -1631,7 +1629,7 @@ kibnal_reply (lnet_ni_t *ni, kib_rx_t *rx, lnet_msg_t *lntmsg) if (nob == 0) rc = 0; else if (kiov == NULL) - rc = kibnal_setup_rd_iov(tx, tx->tx_rd, 0, + rc = kibnal_setup_rd_iov(tx, tx->tx_rd, 0, niov, iov, offset, nob); else rc = kibnal_setup_rd_kiov(tx, tx->tx_rd, 0, @@ -1642,16 +1640,16 @@ kibnal_reply (lnet_ni_t *ni, kib_rx_t *rx, lnet_msg_t *lntmsg) libcfs_nid2str(target.nid), rc); goto failed_1; } - + rc = kibnal_init_rdma(tx, IBNAL_MSG_GET_DONE, nob, &rx->rx_msg->ibm_u.get.ibgm_rd, rx->rx_msg->ibm_u.get.ibgm_cookie); if (rc < 0) { - CERROR("Can't setup rdma for GET from %s: %d\n", + CERROR("Can't setup rdma for GET from %s: %d\n", libcfs_nid2str(target.nid), rc); goto failed_1; } - + if (rc == 0) { /* No RDMA: local completion may happen now! */ lnet_finalize(ni, lntmsg, 0); @@ -1660,10 +1658,10 @@ kibnal_reply (lnet_ni_t *ni, kib_rx_t *rx, lnet_msg_t *lntmsg) * completes */ tx->tx_lntmsg[0] = lntmsg; } - + kibnal_queue_tx(tx, rx->rx_conn); return; - + failed_1: kibnal_tx_done(tx); failed_0: @@ -1682,12 +1680,12 @@ kibnal_eager_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, LCONSOLE_ERROR_MSG(0x129, "Dropping message from %s: no buffers" " free. %s is running an old version of LNET " "that may deadlock if messages wait for" - "buffers) \n", + "buffers) \n", libcfs_nid2str(conn->ibc_peer->ibp_nid), libcfs_nid2str(conn->ibc_peer->ibp_nid)); return -EDEADLK; } - + *new_private = private; return 0; } @@ -1705,7 +1703,7 @@ kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, int nob; int post_cred = 1; int rc = 0; - + LASSERT (mlen <= rlen); LASSERT (!in_interrupt()); /* Either all pages or all vaddrs */ @@ -1714,7 +1712,7 @@ kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, switch (rxmsg->ibm_type) { default: LBUG(); - + case IBNAL_MSG_IMMEDIATE: nob = offsetof(kib_msg_t, ibm_u.immediate.ibim_payload[rlen]); if (nob > rx->rx_nob) { @@ -1745,7 +1743,7 @@ kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, rxmsg->ibm_u.putreq.ibprm_cookie); break; } - + tx = kibnal_get_idle_tx(); if (tx == NULL) { CERROR("Can't allocate tx for %s\n", @@ -1757,7 +1755,7 @@ kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, txmsg = tx->tx_msg; if (kiov == NULL) - rc = kibnal_setup_rd_iov(tx, + rc = kibnal_setup_rd_iov(tx, &txmsg->ibm_u.putack.ibpam_rd, vv_acc_r_mem_write, niov, iov, offset, mlen); @@ -1803,7 +1801,7 @@ kibnal_recv (lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed, kibnal_reply(ni, rx, lntmsg); } else { /* GET didn't match anything */ - kibnal_send_completion(rx->rx_conn, IBNAL_MSG_GET_DONE, + kibnal_send_completion(rx->rx_conn, IBNAL_MSG_GET_DONE, -ENODATA, rxmsg->ibm_u.get.ibgm_cookie); } @@ -1846,7 +1844,7 @@ kibnal_peer_notify (kib_peer_t *peer) time_t last_alive = 0; int error = 0; unsigned long flags; - + read_lock_irqsave(&kibnal_data.kib_global_lock, flags); if (list_empty(&peer->ibp_conns) && @@ -1855,14 +1853,14 @@ kibnal_peer_notify (kib_peer_t *peer) peer->ibp_error != 0) { error = peer->ibp_error; peer->ibp_error = 0; - + last_alive = cfs_time_current_sec() - cfs_duration_sec(cfs_time_current() - peer->ibp_last_alive); } - + read_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); - + if (error != 0) lnet_notify(kibnal_data.kib_ni, peer->ibp_nid, 0, last_alive); } @@ -1873,12 +1871,12 @@ kibnal_schedule_conn (kib_conn_t *conn) unsigned long flags; kibnal_conn_addref(conn); /* ++ref for connd */ - + spin_lock_irqsave(&kibnal_data.kib_connd_lock, flags); list_add_tail (&conn->ibc_list, &kibnal_data.kib_connd_conns); wake_up (&kibnal_data.kib_connd_waitq); - + spin_unlock_irqrestore(&kibnal_data.kib_connd_lock, flags); } @@ -1892,7 +1890,7 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) * already dealing with it (either to set it up or tear it down). * Caller holds kib_global_lock exclusively in irq context */ kib_peer_t *peer = conn->ibc_peer; - + LASSERT (error != 0 || conn->ibc_state >= IBNAL_CONN_ESTABLISHED); if (error != 0 && conn->ibc_comms_error == 0) @@ -1900,7 +1898,7 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) if (conn->ibc_state != IBNAL_CONN_ESTABLISHED) return; /* already being handled */ - + /* NB Can't take ibc_lock here (could be in IRQ context), without * risking deadlock, so access to ibc_{tx_queue,active_txs} is racey */ @@ -1910,7 +1908,7 @@ kibnal_close_conn_locked (kib_conn_t *conn, int error) list_empty(&conn->ibc_tx_queue_nocred) && list_empty(&conn->ibc_active_txs)) { CDEBUG(D_NET, "closing conn to %s" - " rx# "LPD64" tx# "LPD64"\n", + " rx# "LPD64" tx# "LPD64"\n", libcfs_nid2str(peer->ibp_nid), conn->ibc_txseq, conn->ibc_rxseq); } else { @@ -1945,11 +1943,11 @@ void kibnal_close_conn (kib_conn_t *conn, int error) { unsigned long flags; - + write_lock_irqsave(&kibnal_data.kib_global_lock, flags); kibnal_close_conn_locked (conn, error); - + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); } @@ -1961,16 +1959,16 @@ kibnal_handle_early_rxs(kib_conn_t *conn) LASSERT (!in_interrupt()); LASSERT (conn->ibc_state >= IBNAL_CONN_ESTABLISHED); - + write_lock_irqsave(&kibnal_data.kib_global_lock, flags); while (!list_empty(&conn->ibc_early_rxs)) { rx = list_entry(conn->ibc_early_rxs.next, kib_rx_t, rx_list); list_del(&rx->rx_list); write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); - + kibnal_handle_rx(rx); - + write_lock_irqsave(&kibnal_data.kib_global_lock, flags); } write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); @@ -1979,7 +1977,7 @@ kibnal_handle_early_rxs(kib_conn_t *conn) void kibnal_abort_txs(kib_conn_t *conn, struct list_head *txs) { - LIST_HEAD (zombies); + LIST_HEAD (zombies); struct list_head *tmp; struct list_head *nxt; kib_tx_t *tx; @@ -1995,11 +1993,11 @@ kibnal_abort_txs(kib_conn_t *conn, struct list_head *txs) } else { LASSERT (tx->tx_queued); } - + tx->tx_status = -ECONNABORTED; tx->tx_queued = 0; tx->tx_waiting = 0; - + if (tx->tx_sending == 0) { list_del (&tx->tx_list); list_add (&tx->tx_list, &zombies); @@ -2018,7 +2016,7 @@ kibnal_conn_disconnected(kib_conn_t *conn) LASSERT (!in_interrupt()); LASSERT (current == kibnal_data.kib_connd); LASSERT (conn->ibc_state >= IBNAL_CONN_INIT); - + kibnal_set_conn_state(conn, IBNAL_CONN_DISCONNECTED); /* move QP to error state to make posted work items complete */ @@ -2057,7 +2055,7 @@ kibnal_peer_connect_failed (kib_peer_t *peer, int active, int error) LASSERT (peer->ibp_accepting != 0); peer->ibp_accepting--; } - + if (peer->ibp_connecting != 0 || peer->ibp_accepting != 0) { /* another connection attempt under way (loopback?)... */ @@ -2074,14 +2072,14 @@ kibnal_peer_connect_failed (kib_peer_t *peer, int active, int error) peer->ibp_reconnect_interval = MIN(peer->ibp_reconnect_interval, *kibnal_tunables.kib_max_reconnect_interval); - - peer->ibp_reconnect_time = jiffies + + + peer->ibp_reconnect_time = jiffies + peer->ibp_reconnect_interval * HZ; /* Take peer's blocked transmits to complete with error */ list_add(&zombies, &peer->ibp_tx_queue); list_del_init(&peer->ibp_tx_queue); - + if (kibnal_peer_active(peer) && (peer->ibp_persistence == 0)) { /* failed connection attempt on non-persistent peer */ @@ -2093,14 +2091,14 @@ kibnal_peer_connect_failed (kib_peer_t *peer, int active, int error) /* Can't have blocked transmits if there are connections */ LASSERT (list_empty(&peer->ibp_tx_queue)); } - + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); kibnal_peer_notify(peer); - if (list_empty (&zombies)) + if (list_empty (&zombies)) return; - + CDEBUG (D_NETERROR, "Deleting messages for %s: connection failed\n", libcfs_nid2str(peer->ibp_nid)); @@ -2149,7 +2147,7 @@ kibnal_connreq_done(kib_conn_t *conn, int active, int status) } else { LASSERT (peer->ibp_accepting > 0); } - + LIBCFS_FREE(conn->ibc_connvars, sizeof(*conn->ibc_connvars)); conn->ibc_connvars = NULL; @@ -2201,7 +2199,7 @@ kibnal_connreq_done(kib_conn_t *conn, int active, int status) } else { LASSERT(conn->ibc_state == IBNAL_CONN_PASSIVE_WAIT); } - + conn->ibc_last_send = jiffies; kibnal_set_conn_state(conn, IBNAL_CONN_ESTABLISHED); kibnal_peer_alive(peer); @@ -2215,7 +2213,7 @@ kibnal_connreq_done(kib_conn_t *conn, int active, int status) if (!kibnal_peer_active(peer) || /* peer has been deleted */ conn->ibc_comms_error != 0 || /* comms error */ conn->ibc_disconnect) { /* need to disconnect */ - + /* start to shut down connection */ kibnal_close_conn_locked(conn, -ECONNABORTED); @@ -2232,7 +2230,7 @@ kibnal_connreq_done(kib_conn_t *conn, int active, int status) /* grab pending txs while I have the lock */ list_add(&txs, &peer->ibp_tx_queue); list_del_init(&peer->ibp_tx_queue); - + peer->ibp_reconnect_interval = 0; /* OK to reconnect at any time */ write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); @@ -2256,16 +2254,16 @@ void kibnal_cm_callback(cm_cep_handle_t cep, cm_conn_data_t *cmdata, void *arg) { static cm_dreply_data_t drep; /* just zeroed space */ - + kib_conn_t *conn = (kib_conn_t *)arg; unsigned long flags; - + /* CAVEAT EMPTOR: tasklet context */ switch (cmdata->status) { default: LBUG(); - + case cm_event_disconn_request: /* IBNAL_CONN_ACTIVE_RTU: gets closed in kibnal_connreq_done * IBNAL_CONN_ESTABLISHED: I start it closing @@ -2305,7 +2303,7 @@ kibnal_cm_callback(cm_cep_handle_t cep, cm_conn_data_t *cmdata, void *arg) } write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); break; - + case cm_event_disconn_timeout: case cm_event_disconn_reply: write_lock_irqsave(&kibnal_data.kib_global_lock, flags); @@ -2318,7 +2316,7 @@ kibnal_cm_callback(cm_cep_handle_t cep, cm_conn_data_t *cmdata, void *arg) write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); break; - + case cm_event_connected: case cm_event_conn_timeout: case cm_event_conn_reject: @@ -2340,7 +2338,7 @@ kibnal_check_passive_wait(kib_conn_t *conn) switch (conn->ibc_connvars->cv_conndata.status) { default: LBUG(); - + case cm_event_connected: kibnal_conn_addref(conn); /* ++ ref for CM callback */ rc = kibnal_set_qp_state(conn, vv_qp_state_rts); @@ -2350,11 +2348,11 @@ kibnal_check_passive_wait(kib_conn_t *conn) * an error immediately... */ kibnal_connreq_done(conn, 0, 0); break; - + case cm_event_conn_timeout: kibnal_connreq_done(conn, 0, -ETIMEDOUT); break; - + case cm_event_conn_reject: kibnal_connreq_done(conn, 0, -ECONNRESET); break; @@ -2379,7 +2377,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) kib_connvars_t *cv; cm_return_t cmrc; vv_return_t vvrc; - + /* I'm the connd executing in thread context * No concurrency problems with static data! */ LASSERT (!in_interrupt()); @@ -2417,7 +2415,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) if (!lnet_ptlcompat_matchnid(kibnal_data.kib_ni->ni_nid, rxmsg.ibm_dstnid)) { CERROR("Can't accept %s: bad dst nid %s\n", - libcfs_nid2str(rxmsg.ibm_srcnid), + libcfs_nid2str(rxmsg.ibm_srcnid), libcfs_nid2str(rxmsg.ibm_dstnid)); reason = IBNAL_REJECT_FATAL; goto reject; @@ -2425,8 +2423,8 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) if (rxmsg.ibm_u.connparams.ibcp_queue_depth != IBNAL_MSG_QUEUE_SIZE) { CERROR("Can't accept %s: incompatible queue depth %d (%d wanted)\n", - libcfs_nid2str(rxmsg.ibm_srcnid), - rxmsg.ibm_u.connparams.ibcp_queue_depth, + libcfs_nid2str(rxmsg.ibm_srcnid), + rxmsg.ibm_u.connparams.ibcp_queue_depth, IBNAL_MSG_QUEUE_SIZE); reason = IBNAL_REJECT_FATAL; goto reject; @@ -2434,22 +2432,22 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) if (rxmsg.ibm_u.connparams.ibcp_max_msg_size > IBNAL_MSG_SIZE) { CERROR("Can't accept %s: message size %d too big (%d max)\n", - libcfs_nid2str(rxmsg.ibm_srcnid), - rxmsg.ibm_u.connparams.ibcp_max_msg_size, + libcfs_nid2str(rxmsg.ibm_srcnid), + rxmsg.ibm_u.connparams.ibcp_max_msg_size, IBNAL_MSG_SIZE); reason = IBNAL_REJECT_FATAL; goto reject; } - + if (rxmsg.ibm_u.connparams.ibcp_max_frags > IBNAL_MAX_RDMA_FRAGS) { CERROR("Can't accept %s: max frags %d too big (%d max)\n", - libcfs_nid2str(rxmsg.ibm_srcnid), - rxmsg.ibm_u.connparams.ibcp_max_frags, + libcfs_nid2str(rxmsg.ibm_srcnid), + rxmsg.ibm_u.connparams.ibcp_max_frags, IBNAL_MAX_RDMA_FRAGS); reason = IBNAL_REJECT_FATAL; goto reject; } - + /* assume 'rxmsg.ibm_srcnid' is a new peer; create */ rc = kibnal_create_peer (&peer, rxmsg.ibm_srcnid); if (rc != 0) { @@ -2473,7 +2471,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) peer2 = kibnal_find_peer_locked(rxmsg.ibm_srcnid); if (peer2 != NULL) { - /* tie-break connection race in favour of the higher NID */ + /* tie-break connection race in favour of the higher NID */ if (peer2->ibp_connecting != 0 && rxmsg.ibm_srcnid < kibnal_data.kib_ni->ni_nid) { write_unlock_irqrestore(g_lock, flags); @@ -2502,7 +2500,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) write_unlock_irqrestore(g_lock, flags); } - + conn = kibnal_create_conn(cep); if (conn == NULL) { CERROR("Can't create conn for %s\n", @@ -2540,7 +2538,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) reason = IBNAL_REJECT_FATAL; goto reject; } - + vvrc = pkey2pkey_index(kibnal_data.kib_hca, cv->cv_port, cv->cv_path.pkey, &cv->cv_pkey_index); if (vvrc != vv_return_ok) { @@ -2559,7 +2557,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) rc = kibnal_post_receives(conn); if (rc != 0) { - CERROR("Can't post receives for %s\n", + CERROR("Can't post receives for %s\n", libcfs_nid2str(rxmsg.ibm_srcnid)); reason = IBNAL_REJECT_FATAL; goto reject; @@ -2570,7 +2568,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) reason = IBNAL_REJECT_FATAL; goto reject; } - + memset(&reply, 0, sizeof(reply)); reply.qpn = cv->cv_local_qpn; reply.qkey = IBNAL_QKEY; @@ -2580,10 +2578,10 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) reply.failover_accepted = IBNAL_FAILOVER_ACCEPTED; reply.rnr_retry_count = cv->cv_rnr_count; reply.targ_ack_delay = kibnal_data.kib_hca_attrs.ack_delay; - + /* setup txmsg... */ memset(&txmsg, 0, sizeof(txmsg)); - kibnal_init_msg(&txmsg, IBNAL_MSG_CONNACK, + kibnal_init_msg(&txmsg, IBNAL_MSG_CONNACK, sizeof(txmsg.ibm_u.connparams)); LASSERT (txmsg.ibm_nob <= cm_REP_priv_data_len); txmsg.ibm_u.connparams.ibcp_queue_depth = IBNAL_MSG_QUEUE_SIZE; @@ -2596,7 +2594,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) memcpy(&reply.priv_data, &txmsg, txmsg.ibm_nob); kibnal_set_conn_state(conn, IBNAL_CONN_PASSIVE_WAIT); - + cmrc = cm_accept(conn->ibc_cep, &reply, NULL, kibnal_cm_callback, conn); @@ -2607,7 +2605,7 @@ kibnal_recv_connreq(cm_cep_handle_t *cep, cm_request_data_t *cmreq) kibnal_set_conn_state(conn, IBNAL_CONN_INIT); rc = -EIO; reason = IBNAL_REJECT_FATAL; - + reject: CDEBUG(D_NET, "Rejecting connreq from %s\n", libcfs_nid2str(rxmsg.ibm_srcnid)); @@ -2628,7 +2626,7 @@ kibnal_listen_callback(cm_cep_handle_t cep, cm_conn_data_t *data, void *arg) cm_request_data_t *cmreq = &data->data.request; kib_pcreq_t *pcr; unsigned long flags; - + LASSERT (arg == NULL); if (data->status != cm_event_conn_request) { @@ -2648,18 +2646,17 @@ kibnal_listen_callback(cm_cep_handle_t cep, cm_conn_data_t *data, void *arg) pcr->pcr_cep = cep; pcr->pcr_cmreq = *cmreq; - + spin_lock_irqsave(&kibnal_data.kib_connd_lock, flags); list_add_tail(&pcr->pcr_list, &kibnal_data.kib_connd_pcreqs); wake_up(&kibnal_data.kib_connd_waitq); - - spin_unlock_irqrestore(&kibnal_data.kib_connd_lock, flags); +spin_unlock_irqrestore(&kibnal_data.kib_connd_lock, flags); } void -kibnal_active_connect_callback (cm_cep_handle_t cep, cm_conn_data_t *cd, +kibnal_active_connect_callback (cm_cep_handle_t cep, cm_conn_data_t *cd, void *arg) { /* CAVEAT EMPTOR: tasklet context */ @@ -2678,7 +2675,7 @@ kibnal_connect_conn (kib_conn_t *conn) { static cm_request_data_t cmreq; static kib_msg_t msg; - + kib_connvars_t *cv = conn->ibc_connvars; kib_peer_t *peer = conn->ibc_peer; cm_return_t cmrc; @@ -2689,7 +2686,7 @@ kibnal_connect_conn (kib_conn_t *conn) LASSERT (conn->ibc_state == IBNAL_CONN_ACTIVE_ARP); memset(&cmreq, 0, sizeof(cmreq)); - + cmreq.sid = (__u64)(*kibnal_tunables.kib_service_number); cmreq.cep_data.ca_guid = kibnal_data.kib_hca_attrs.guid; @@ -2704,7 +2701,7 @@ kibnal_connect_conn (kib_conn_t *conn) cmreq.path_data.subn_local = IBNAL_LOCAL_SUB; cmreq.path_data.path = cv->cv_path; - + /* setup msg... */ memset(&msg, 0, sizeof(msg)); kibnal_init_msg(&msg, IBNAL_MSG_CONNREQ, sizeof(msg.ibm_u.connparams)); @@ -2730,14 +2727,14 @@ kibnal_connect_conn (kib_conn_t *conn) /* ...and copy into cmreq to avoid alignment issues */ memcpy(&cmreq.priv_data, &msg, msg.ibm_nob); - + CDEBUG(D_NET, "Connecting %p to %s\n", conn, libcfs_nid2str(peer->ibp_nid)); kibnal_conn_addref(conn); /* ++ref for CM callback */ kibnal_set_conn_state(conn, IBNAL_CONN_ACTIVE_CONNECT); - cmrc = cm_connect(conn->ibc_cep, &cmreq, + cmrc = cm_connect(conn->ibc_cep, &cmreq, kibnal_active_connect_callback, conn); if (cmrc == cm_stat_success) { CDEBUG(D_NET, "connection REQ sent to %s\n", @@ -2758,7 +2755,7 @@ kibnal_reconnect (kib_conn_t *conn, int why) unsigned long flags; cm_return_t cmrc; cm_cep_handle_t cep; - + LASSERT (conn->ibc_state == IBNAL_CONN_ACTIVE_CONNECT); read_lock_irqsave(&kibnal_data.kib_global_lock, flags); @@ -2773,7 +2770,7 @@ kibnal_reconnect (kib_conn_t *conn, int why) retry = (!list_empty(&peer->ibp_tx_queue) && peer->ibp_connecting == 1 && peer->ibp_accepting == 0); - + read_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); if (!retry) { @@ -2848,17 +2845,17 @@ kibnal_check_connreply (kib_conn_t *conn) if (msg.ibm_u.connparams.ibcp_queue_depth != IBNAL_MSG_QUEUE_SIZE) { CERROR("%s has incompatible queue depth %d(%d wanted)\n", - libcfs_nid2str(peer->ibp_nid), + libcfs_nid2str(peer->ibp_nid), msg.ibm_u.connparams.ibcp_queue_depth, IBNAL_MSG_QUEUE_SIZE); kibnal_connreq_done(conn, 1, -EPROTO); return; } - + if (msg.ibm_u.connparams.ibcp_max_msg_size > IBNAL_MSG_SIZE) { CERROR("%s max message size %d too big (%d max)\n", - libcfs_nid2str(peer->ibp_nid), - msg.ibm_u.connparams.ibcp_max_msg_size, + libcfs_nid2str(peer->ibp_nid), + msg.ibm_u.connparams.ibcp_max_msg_size, IBNAL_MSG_SIZE); kibnal_connreq_done(conn, 1, -EPROTO); return; @@ -2867,12 +2864,12 @@ kibnal_check_connreply (kib_conn_t *conn) if (msg.ibm_u.connparams.ibcp_max_frags > IBNAL_MAX_RDMA_FRAGS) { CERROR("%s max frags %d too big (%d max)\n", libcfs_nid2str(peer->ibp_nid), - msg.ibm_u.connparams.ibcp_max_frags, + msg.ibm_u.connparams.ibcp_max_frags, IBNAL_MAX_RDMA_FRAGS); kibnal_connreq_done(conn, 1, -EPROTO); return; } - + read_lock_irqsave(&kibnal_data.kib_global_lock, flags); if (lnet_ptlcompat_matchnid(kibnal_data.kib_ni->ni_nid, msg.ibm_dstnid) && @@ -2893,7 +2890,7 @@ kibnal_check_connreply (kib_conn_t *conn) conn->ibc_reserved_credits = IBNAL_MSG_QUEUE_SIZE; LASSERT (conn->ibc_credits + conn->ibc_reserved_credits <= IBNAL_RX_MSGS); - + rc = kibnal_post_receives(conn); if (rc != 0) { CERROR("Can't post receives for %s\n", @@ -2901,22 +2898,22 @@ kibnal_check_connreply (kib_conn_t *conn) kibnal_connreq_done(conn, 1, rc); return; } - + rc = kibnal_set_qp_state(conn, vv_qp_state_rtr); if (rc != 0) { kibnal_connreq_done(conn, 1, rc); return; } - + rc = kibnal_set_qp_state(conn, vv_qp_state_rts); if (rc != 0) { kibnal_connreq_done(conn, 1, rc); return; } - + kibnal_set_conn_state(conn, IBNAL_CONN_ACTIVE_RTU); kibnal_conn_addref(conn); /* ++for CM callback */ - + memset(&rtu, 0, sizeof(rtu)); cmrc = cm_accept(conn->ibc_cep, NULL, &rtu, kibnal_cm_callback, conn); @@ -2927,7 +2924,7 @@ kibnal_check_connreply (kib_conn_t *conn) return; } - CERROR("cm_accept %s failed: %d\n", + CERROR("cm_accept %s failed: %d\n", libcfs_nid2str(peer->ibp_nid), cmrc); /* Back out of RTU: no callback coming */ kibnal_set_conn_state(conn, IBNAL_CONN_ACTIVE_CHECK_REPLY); @@ -2956,13 +2953,13 @@ kibnal_check_connreply (kib_conn_t *conn) CERROR("conn -> %s rejected: fatal error %d\n", libcfs_nid2str(peer->ibp_nid), why); - if (why == IBNAL_REJECT_CONN_RACE) + if (why == IBNAL_REJECT_CONN_RACE) kibnal_reconnect(conn, -EALREADY); else kibnal_connreq_done(conn, 1, -ECONNREFUSED); return; } - + /* Fail unless it's worth retrying with an old proto * version */ if (!(magic == IBNAL_MSG_MAGIC && @@ -2979,15 +2976,15 @@ kibnal_check_connreply (kib_conn_t *conn) conn->ibc_version = version; CWARN ("Connection to %s refused: " - "retrying with old protocol version 0x%x\n", + "retrying with old protocol version 0x%x\n", libcfs_nid2str(peer->ibp_nid), version); kibnal_reconnect(conn, -ECONNREFUSED); return; - } else if (cv->cv_conndata.data.reject.reason == + } else if (cv->cv_conndata.data.reject.reason == cm_rej_code_stale_conn) { - - CWARN ("conn -> %s stale: retrying\n", + + CWARN ("conn -> %s stale: retrying\n", libcfs_nid2str(peer->ibp_nid)); kibnal_reconnect(conn, -ESTALE); @@ -3002,7 +2999,7 @@ kibnal_check_connreply (kib_conn_t *conn) /* NOT REACHED */ } - CDEBUG(D_NETERROR, "conn -> %s failed: %d\n", + CDEBUG(D_NETERROR, "conn -> %s failed: %d\n", libcfs_nid2str(peer->ibp_nid), cv->cv_conndata.status); kibnal_connreq_done(conn, 1, -ECONNABORTED); } @@ -3022,9 +3019,9 @@ kibnal_arp_done (kib_conn_t *conn) LASSERT (current == kibnal_data.kib_connd); LASSERT (conn->ibc_state == IBNAL_CONN_ACTIVE_ARP); LASSERT (peer->ibp_arp_count > 0); - + if (cv->cv_arprc != ibat_stat_ok) { - CDEBUG(D_NETERROR, "Arp %s @ %u.%u.%u.%u failed: %d\n", + CDEBUG(D_NETERROR, "Arp %s @ %u.%u.%u.%u failed: %d\n", libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), cv->cv_arprc); goto failed; @@ -3039,7 +3036,7 @@ kibnal_arp_done (kib_conn_t *conn) vvrc = base_gid2port_num(kibnal_data.kib_hca, &path->sgid, &cv->cv_port); if (vvrc != vv_return_ok) { - CWARN("base_gid2port_num failed for %s @ %u.%u.%u.%u: %d\n", + CWARN("base_gid2port_num failed for %s @ %u.%u.%u.%u: %d\n", libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), vvrc); goto failed; @@ -3048,7 +3045,7 @@ kibnal_arp_done (kib_conn_t *conn) vvrc = gid2gid_index(kibnal_data.kib_hca, cv->cv_port, &path->sgid, &cv->cv_sgid_index); if (vvrc != vv_return_ok) { - CWARN("gid2gid_index failed for %s @ %u.%u.%u.%u: %d\n", + CWARN("gid2gid_index failed for %s @ %u.%u.%u.%u: %d\n", libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), vvrc); goto failed; @@ -3057,7 +3054,7 @@ kibnal_arp_done (kib_conn_t *conn) vvrc = pkey2pkey_index(kibnal_data.kib_hca, cv->cv_port, path->pkey, &cv->cv_pkey_index); if (vvrc != vv_return_ok) { - CWARN("pkey2pkey_index failed for %s @ %u.%u.%u.%u: %d\n", + CWARN("pkey2pkey_index failed for %s @ %u.%u.%u.%u: %d\n", libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), vvrc); goto failed; @@ -3078,7 +3075,7 @@ kibnal_arp_done (kib_conn_t *conn) vvrc = port_num2base_gid(kibnal_data.kib_hca, cv->cv_port, &path->sgid); if (vvrc != vv_return_ok) { - CWARN("port_num2base_gid failed for %s @ %u.%u.%u.%u: %d\n", + CWARN("port_num2base_gid failed for %s @ %u.%u.%u.%u: %d\n", libcfs_nid2str(peer->ibp_ip), HIPQUAD(peer->ibp_ip), vvrc); goto failed; @@ -3087,7 +3084,7 @@ kibnal_arp_done (kib_conn_t *conn) vvrc = port_num2base_lid(kibnal_data.kib_hca, cv->cv_port, &path->slid); if (vvrc != vv_return_ok) { - CWARN("port_num2base_lid failed for %s @ %u.%u.%u.%u: %d\n", + CWARN("port_num2base_lid failed for %s @ %u.%u.%u.%u: %d\n", libcfs_nid2str(peer->ibp_ip), HIPQUAD(peer->ibp_ip), vvrc); goto failed; @@ -3121,20 +3118,20 @@ kibnal_arp_done (kib_conn_t *conn) peer->ibp_arp_count--; if (peer->ibp_arp_count == 0) { /* final ARP attempt failed */ - write_unlock_irqrestore(&kibnal_data.kib_global_lock, + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); - CDEBUG(D_NETERROR, "Arp %s @ %u.%u.%u.%u failed (final attempt)\n", + CDEBUG(D_NETERROR, "Arp %s @ %u.%u.%u.%u failed (final attempt)\n", libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip)); } else { /* Retry ARP: ibp_connecting++ so terminating conn * doesn't end peer's connection attempt */ peer->ibp_connecting++; - write_unlock_irqrestore(&kibnal_data.kib_global_lock, + write_unlock_irqrestore(&kibnal_data.kib_global_lock, flags); CDEBUG(D_NETERROR, "Arp %s @ %u.%u.%u.%u failed (%d attempts left)\n", - libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), + libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), peer->ibp_arp_count); - + kibnal_schedule_peer_arp(peer); } kibnal_connreq_done(conn, 1, -ENETUNREACH); @@ -3157,14 +3154,14 @@ kibnal_arp_callback (ibat_stat_t arprc, ibat_arp_data_t *arp_data, void *arg) libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), arprc); else CDEBUG(D_NET, "Arp %s at %u.%u.%u.%u OK: LID %s PATH %s\n", - libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), + libcfs_nid2str(peer->ibp_nid), HIPQUAD(peer->ibp_ip), (arp_data->mask & IBAT_LID_VALID) == 0 ? "invalid" : "valid", (arp_data->mask & IBAT_PRI_PATH_VALID) == 0 ? "invalid" : "valid"); conn->ibc_connvars->cv_arprc = arprc; if (arprc == ibat_stat_ok) conn->ibc_connvars->cv_arp = *arp_data; - + kibnal_schedule_conn(conn); kibnal_conn_decref(conn); } @@ -3203,19 +3200,19 @@ kibnal_arp_peer (kib_peer_t *peer) kibnal_set_conn_state(conn, IBNAL_CONN_ACTIVE_ARP); - ibatrc = ibat_get_ib_data(htonl(peer->ibp_ip), INADDR_ANY, + ibatrc = ibat_get_ib_data(htonl(peer->ibp_ip), INADDR_ANY, ibat_paths_primary, - &conn->ibc_connvars->cv_arp, + &conn->ibc_connvars->cv_arp, kibnal_arp_callback, conn, 0); CDEBUG(D_NET,"ibatrc %d\n", ibatrc); switch (ibatrc) { default: LBUG(); - + case ibat_stat_pending: /* NB callback has my ref on conn */ break; - + case ibat_stat_ok: case ibat_stat_error: case ibat_stat_timeout: @@ -3302,7 +3299,7 @@ kibnal_check_conns (int idx) /* Handle timeout by closing the whole connection. We * can only be sure RDMA activity has ceased once the * QP has been modified. */ - + kibnal_conn_addref(conn); /* 1 ref for me... */ read_unlock_irqrestore(&kibnal_data.kib_global_lock, @@ -3326,13 +3323,13 @@ void kibnal_disconnect_conn (kib_conn_t *conn) { static cm_drequest_data_t dreq; /* just for the space */ - + cm_return_t cmrc; unsigned long flags; LASSERT (!in_interrupt()); LASSERT (current == kibnal_data.kib_connd); - + write_lock_irqsave(&kibnal_data.kib_global_lock, flags); if (conn->ibc_disconnect) { @@ -3342,7 +3339,7 @@ kibnal_disconnect_conn (kib_conn_t *conn) kibnal_conn_disconnected(conn); return; } - + LASSERT (conn->ibc_state == IBNAL_CONN_DISCONNECT1); /* active disconnect */ @@ -3361,7 +3358,7 @@ kibnal_disconnect_conn (kib_conn_t *conn) if (!conn->ibc_disconnect) /* CM callback will never happen now */ kibnal_conn_decref(conn); - + LASSERT (atomic_read(&conn->ibc_refcount) > 0); LASSERT (conn->ibc_state == IBNAL_CONN_DISCONNECT1); @@ -3381,7 +3378,7 @@ kibnal_connd (void *arg) int dropped_lock; int peer_index = 0; unsigned long deadline = jiffies; - + cfs_daemonize ("kibnal_connd"); cfs_block_allsigs (); @@ -3398,7 +3395,7 @@ kibnal_connd (void *arg) conn = list_entry (kibnal_data.kib_connd_zombies.next, kib_conn_t, ibc_list); list_del (&conn->ibc_list); - + spin_unlock_irqrestore (&kibnal_data.kib_connd_lock, flags); dropped_lock = 1; @@ -3411,7 +3408,7 @@ kibnal_connd (void *arg) pcr = list_entry(kibnal_data.kib_connd_pcreqs.next, kib_pcreq_t, pcr_list); list_del(&pcr->pcr_list); - + spin_unlock_irqrestore(&kibnal_data.kib_connd_lock, flags); dropped_lock = 1; @@ -3420,11 +3417,11 @@ kibnal_connd (void *arg) spin_lock_irqsave(&kibnal_data.kib_connd_lock, flags); } - + if (!list_empty (&kibnal_data.kib_connd_peers)) { peer = list_entry (kibnal_data.kib_connd_peers.next, kib_peer_t, ibp_connd_list); - + list_del_init (&peer->ibp_connd_list); spin_unlock_irqrestore (&kibnal_data.kib_connd_lock, flags); dropped_lock = 1; @@ -3439,14 +3436,14 @@ kibnal_connd (void *arg) conn = list_entry (kibnal_data.kib_connd_conns.next, kib_conn_t, ibc_list); list_del (&conn->ibc_list); - + spin_unlock_irqrestore (&kibnal_data.kib_connd_lock, flags); dropped_lock = 1; switch (conn->ibc_state) { default: LBUG(); - + case IBNAL_CONN_ACTIVE_ARP: kibnal_arp_done(conn); break; @@ -3475,7 +3472,7 @@ kibnal_connd (void *arg) const int n = 4; const int p = 1; int chunk = kibnal_data.kib_peer_hash_size; - + spin_unlock_irqrestore(&kibnal_data.kib_connd_lock, flags); dropped_lock = 1; @@ -3488,14 +3485,14 @@ kibnal_connd (void *arg) * interval. */ if (*kibnal_tunables.kib_timeout > n * p) - chunk = (chunk * n * p) / + chunk = (chunk * n * p) / *kibnal_tunables.kib_timeout; if (chunk == 0) chunk = 1; for (i = 0; i < chunk; i++) { kibnal_check_conns (peer_index); - peer_index = (peer_index + 1) % + peer_index = (peer_index + 1) % kibnal_data.kib_peer_hash_size; } @@ -3505,7 +3502,7 @@ kibnal_connd (void *arg) if (dropped_lock) continue; - + /* Nothing to do for 'timeout' */ set_current_state (TASK_INTERRUPTIBLE); add_wait_queue (&kibnal_data.kib_connd_waitq, &wait); @@ -3524,10 +3521,10 @@ kibnal_connd (void *arg) return (0); } -void +void kibnal_async_callback(vv_event_record_t ev) { - CERROR("type: %d, port: %d, data: "LPX64"\n", + CERROR("type: %d, port: %d, data: "LPX64"\n", ev.event_type, ev.port_num, ev.type.data); } @@ -3571,7 +3568,7 @@ kibnal_scheduler(void *arg) our_cond_resched(); busy_loops = 0; - + spin_lock_irqsave(&kibnal_data.kib_sched_lock, flags); } @@ -3581,15 +3578,15 @@ kibnal_scheduler(void *arg) kibnal_data.kib_checking_cq = 1; /* Assume I'll exhaust the CQ */ kibnal_data.kib_ready = 0; - spin_unlock_irqrestore(&kibnal_data.kib_sched_lock, + spin_unlock_irqrestore(&kibnal_data.kib_sched_lock, flags); - - vvrc = vv_poll_for_completion(kibnal_data.kib_hca, + + vvrc = vv_poll_for_completion(kibnal_data.kib_hca, kibnal_data.kib_cq, &wc); if (vvrc == vv_return_err_cq_empty) { vvrc2 = vv_request_completion_notification( - kibnal_data.kib_hca, - kibnal_data.kib_cq, + kibnal_data.kib_hca, + kibnal_data.kib_cq, vv_next_solicit_unsolicit_event); LASSERT (vvrc2 == vv_return_ok); } @@ -3651,14 +3648,14 @@ kibnal_scheduler(void *arg) * I give a scheduler on another CPU a chance * to get the final SEND completion, so the tx * descriptor can get freed as I inspect it. */ - CDEBUG(D_NETERROR, "RDMA failed: %d\n", + CDEBUG(D_NETERROR, "RDMA failed: %d\n", wc.completion_status); break; default: LBUG(); } - + spin_lock_irqsave(&kibnal_data.kib_sched_lock, flags); continue; } -- 1.8.3.1