Lines Matching refs:newxprt

612 	struct svcxprt_rdma *newxprt;  in handle_connect_req()  local
616 newxprt = rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, 0); in handle_connect_req()
617 if (!newxprt) { in handle_connect_req()
621 newxprt->sc_cm_id = new_cma_id; in handle_connect_req()
622 new_cma_id->context = newxprt; in handle_connect_req()
624 newxprt, newxprt->sc_cm_id, listen_xprt); in handle_connect_req()
627 newxprt->sc_ord = client_ird; in handle_connect_req()
630 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in handle_connect_req()
631 svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa)); in handle_connect_req()
632 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in handle_connect_req()
633 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); in handle_connect_req()
640 list_add_tail(&newxprt->sc_accept_q, &listen_xprt->sc_accept_q); in handle_connect_req()
885 struct svcxprt_rdma *newxprt = NULL; in svc_rdma_accept() local
900 newxprt = list_entry(listen_rdma->sc_accept_q.next, in svc_rdma_accept()
902 list_del_init(&newxprt->sc_accept_q); in svc_rdma_accept()
907 if (!newxprt) in svc_rdma_accept()
911 newxprt, newxprt->sc_cm_id); in svc_rdma_accept()
913 ret = ib_query_device(newxprt->sc_cm_id->device, &devattr); in svc_rdma_accept()
916 "device %p, rc=%d\n", newxprt->sc_cm_id->device, ret); in svc_rdma_accept()
922 newxprt->sc_max_sge = min((size_t)devattr.max_sge, in svc_rdma_accept()
924 newxprt->sc_max_sge_rd = min_t(size_t, devattr.max_sge_rd, in svc_rdma_accept()
926 newxprt->sc_max_requests = min((size_t)devattr.max_qp_wr, in svc_rdma_accept()
928 newxprt->sc_sq_depth = RPCRDMA_SQ_DEPTH_MULT * newxprt->sc_max_requests; in svc_rdma_accept()
934 newxprt->sc_ord = min_t(size_t, devattr.max_qp_rd_atom, newxprt->sc_ord); in svc_rdma_accept()
935 newxprt->sc_ord = min_t(size_t, svcrdma_ord, newxprt->sc_ord); in svc_rdma_accept()
937 newxprt->sc_pd = ib_alloc_pd(newxprt->sc_cm_id->device); in svc_rdma_accept()
938 if (IS_ERR(newxprt->sc_pd)) { in svc_rdma_accept()
942 cq_attr.cqe = newxprt->sc_sq_depth; in svc_rdma_accept()
943 newxprt->sc_sq_cq = ib_create_cq(newxprt->sc_cm_id->device, in svc_rdma_accept()
946 newxprt, in svc_rdma_accept()
948 if (IS_ERR(newxprt->sc_sq_cq)) { in svc_rdma_accept()
952 cq_attr.cqe = newxprt->sc_max_requests; in svc_rdma_accept()
953 newxprt->sc_rq_cq = ib_create_cq(newxprt->sc_cm_id->device, in svc_rdma_accept()
956 newxprt, in svc_rdma_accept()
958 if (IS_ERR(newxprt->sc_rq_cq)) { in svc_rdma_accept()
965 qp_attr.qp_context = &newxprt->sc_xprt; in svc_rdma_accept()
966 qp_attr.cap.max_send_wr = newxprt->sc_sq_depth; in svc_rdma_accept()
967 qp_attr.cap.max_recv_wr = newxprt->sc_max_requests; in svc_rdma_accept()
968 qp_attr.cap.max_send_sge = newxprt->sc_max_sge; in svc_rdma_accept()
969 qp_attr.cap.max_recv_sge = newxprt->sc_max_sge; in svc_rdma_accept()
972 qp_attr.send_cq = newxprt->sc_sq_cq; in svc_rdma_accept()
973 qp_attr.recv_cq = newxprt->sc_rq_cq; in svc_rdma_accept()
980 newxprt->sc_cm_id, newxprt->sc_pd, in svc_rdma_accept()
981 newxprt->sc_cm_id->device, newxprt->sc_pd->device, in svc_rdma_accept()
987 ret = rdma_create_qp(newxprt->sc_cm_id, newxprt->sc_pd, &qp_attr); in svc_rdma_accept()
992 newxprt->sc_qp = newxprt->sc_cm_id->qp; in svc_rdma_accept()
1016 newxprt->sc_reader = rdma_read_chunk_lcl; in svc_rdma_accept()
1018 newxprt->sc_frmr_pg_list_len = in svc_rdma_accept()
1020 newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_FAST_REG; in svc_rdma_accept()
1021 newxprt->sc_reader = rdma_read_chunk_frmr; in svc_rdma_accept()
1027 if (!rdma_protocol_iwarp(newxprt->sc_cm_id->device, in svc_rdma_accept()
1028 newxprt->sc_cm_id->port_num) && in svc_rdma_accept()
1029 !rdma_ib_or_roce(newxprt->sc_cm_id->device, in svc_rdma_accept()
1030 newxprt->sc_cm_id->port_num)) in svc_rdma_accept()
1033 if (!(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG) || in svc_rdma_accept()
1037 if (rdma_protocol_iwarp(newxprt->sc_cm_id->device, in svc_rdma_accept()
1038 newxprt->sc_cm_id->port_num) && in svc_rdma_accept()
1039 !(newxprt->sc_dev_caps & SVCRDMA_DEVCAP_FAST_REG)) in svc_rdma_accept()
1043 if (rdma_protocol_iwarp(newxprt->sc_cm_id->device, in svc_rdma_accept()
1044 newxprt->sc_cm_id->port_num)) in svc_rdma_accept()
1045 newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV; in svc_rdma_accept()
1050 newxprt->sc_phys_mr = in svc_rdma_accept()
1051 ib_get_dma_mr(newxprt->sc_pd, dma_mr_acc); in svc_rdma_accept()
1052 if (IS_ERR(newxprt->sc_phys_mr)) { in svc_rdma_accept()
1057 newxprt->sc_dma_lkey = newxprt->sc_phys_mr->lkey; in svc_rdma_accept()
1059 newxprt->sc_dma_lkey = in svc_rdma_accept()
1060 newxprt->sc_cm_id->device->local_dma_lkey; in svc_rdma_accept()
1063 for (i = 0; i < newxprt->sc_max_requests; i++) { in svc_rdma_accept()
1064 ret = svc_rdma_post_recv(newxprt); in svc_rdma_accept()
1072 newxprt->sc_cm_id->event_handler = rdma_cma_handler; in svc_rdma_accept()
1078 ib_req_notify_cq(newxprt->sc_sq_cq, IB_CQ_NEXT_COMP); in svc_rdma_accept()
1079 ib_req_notify_cq(newxprt->sc_rq_cq, IB_CQ_NEXT_COMP); in svc_rdma_accept()
1082 set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); in svc_rdma_accept()
1085 conn_param.initiator_depth = newxprt->sc_ord; in svc_rdma_accept()
1086 ret = rdma_accept(newxprt->sc_cm_id, &conn_param); in svc_rdma_accept()
1104 newxprt, in svc_rdma_accept()
1105 &((struct sockaddr_in *)&newxprt->sc_cm_id-> in svc_rdma_accept()
1107 ntohs(((struct sockaddr_in *)&newxprt->sc_cm_id-> in svc_rdma_accept()
1109 &((struct sockaddr_in *)&newxprt->sc_cm_id-> in svc_rdma_accept()
1111 ntohs(((struct sockaddr_in *)&newxprt->sc_cm_id-> in svc_rdma_accept()
1113 newxprt->sc_max_sge, in svc_rdma_accept()
1114 newxprt->sc_max_sge_rd, in svc_rdma_accept()
1115 newxprt->sc_sq_depth, in svc_rdma_accept()
1116 newxprt->sc_max_requests, in svc_rdma_accept()
1117 newxprt->sc_ord); in svc_rdma_accept()
1119 return &newxprt->sc_xprt; in svc_rdma_accept()
1124 svc_xprt_get(&newxprt->sc_xprt); in svc_rdma_accept()
1125 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) in svc_rdma_accept()
1126 ib_destroy_qp(newxprt->sc_qp); in svc_rdma_accept()
1127 rdma_destroy_id(newxprt->sc_cm_id); in svc_rdma_accept()
1129 svc_xprt_put(&newxprt->sc_xprt); in svc_rdma_accept()