Lines Matching defs:link
57 static DEFINE_MUTEX(smc_server_lgr_pending); /* serialize link group
60 static DEFINE_MUTEX(smc_client_lgr_pending); /* serialize link group
523 static int smcr_lgr_reg_sndbufs(struct smc_link *link,
526 struct smc_link_group *lgr = link->lgr;
546 static int smcr_lgr_reg_rmbs(struct smc_link *link,
549 struct smc_link_group *lgr = link->lgr;
561 if (!rmb_desc->is_reg_mr[link->link_idx]) {
583 rc = smc_llc_do_confirm_rkey(link, rmb_desc);
597 struct smc_link *link = smc->conn.lnk;
606 qentry = smc_llc_wait(link->lgr, NULL, 2 * SMC_LLC_WAIT_TIME,
617 smc_llc_flow_qentry_del(&link->lgr->llc_flow_lcl);
621 rc = smc_ib_modify_qp_rts(link);
625 smc_wr_remember_qp_attr(link);
629 if (smcr_link_reg_buf(link, smc->conn.sndbuf_desc))
634 if (smcr_link_reg_buf(link, smc->conn.rmb_desc))
641 rc = smc_llc_send_confirm_link(link, SMC_LLC_RESP);
645 smc_llc_link_active(link);
646 smcr_lgr_set_type(link->lgr, SMC_LGR_SINGLE);
648 if (link->lgr->max_links > 1) {
649 /* optional 2nd link, receive ADD LINK request from server */
650 qentry = smc_llc_wait(link->lgr, NULL, SMC_LLC_WAIT_TIME,
658 rc = 0; /* no DECLINE received, go with one link */
661 smc_llc_flow_qentry_clr(&link->lgr->llc_flow_lcl);
662 smc_llc_cli_add_link(link, qentry);
743 static void smc_link_save_peer_info(struct smc_link *link,
747 link->peer_qpn = ntoh24(clc->r0.qpn);
748 memcpy(link->peer_gid, ini->peer_gid, SMC_GID_SIZE);
749 memcpy(link->peer_mac, ini->peer_mac, sizeof(link->peer_mac));
750 link->peer_psn = ntoh24(clc->r0.psn);
751 link->peer_mtu = clc->r0.qp_mtu;
1243 struct smc_link *link;
1269 link = smc->conn.lnk;
1271 /* set link that was assigned by server */
1272 link = NULL;
1282 link = l;
1286 if (!link) {
1290 smc_switch_link_and_count(&smc->conn, link);
1300 smc_link_save_peer_info(link, aclc, ini);
1302 if (smc_rmb_rtoken_handling(&smc->conn, link, aclc)) {
1311 if (smc_ib_ready_link(link)) {
1318 if (smcr_lgr_reg_sndbufs(link, smc->conn.sndbuf_desc)) {
1323 if (smcr_lgr_reg_rmbs(link, smc->conn.rmb_desc)) {
1335 smc_fill_gid_list(link->lgr, &ini->smcrv2.gidlist,
1336 link->smcibdev, link->gid);
1348 smc_llc_flow_initiate(link->lgr, SMC_LLC_FLOW_ADD_LINK);
1350 smc_llc_flow_stop(link->lgr, &link->lgr->llc_flow_lcl);
1857 struct smc_link *link = smc->conn.lnk;
1863 if (smcr_link_reg_buf(link, smc->conn.sndbuf_desc))
1868 if (smcr_link_reg_buf(link, smc->conn.rmb_desc))
1872 rc = smc_llc_send_confirm_link(link, SMC_LLC_REQ);
1877 qentry = smc_llc_wait(link->lgr, link, SMC_LLC_WAIT_TIME,
1888 smc_llc_flow_qentry_del(&link->lgr->llc_flow_lcl);
1895 smc_llc_link_active(link);
1896 smcr_lgr_set_type(link->lgr, SMC_LGR_SINGLE);
1898 if (link->lgr->max_links > 1) {
1899 down_write(&link->lgr->llc_conf_mutex);
1900 /* initial contact - try to establish second link */
1901 smc_llc_srv_add_link(link, NULL);
1902 up_write(&link->lgr->llc_conf_mutex);
2059 /* allocate connection / link group */
2378 struct smc_link *link = new_smc->conn.lnk;
2382 smc_link_save_peer_info(link, cclc, ini);
2384 if (smc_rmb_rtoken_handling(&new_smc->conn, link, cclc))
2388 if (smc_ib_ready_link(link))
2391 smc_llc_flow_initiate(link->lgr, SMC_LLC_FLOW_ADD_LINK);
2393 smc_llc_flow_stop(link->lgr, &link->lgr->llc_flow_lcl);