Lines Matching refs:newxprt

163 svc_rdma_parse_connect_private(struct svcxprt_rdma *newxprt,  in svc_rdma_parse_connect_private()  argument
171 newxprt->sc_snd_w_inv = pmsg->cp_flags & in svc_rdma_parse_connect_private()
178 newxprt->sc_snd_w_inv ? "" : "un"); in svc_rdma_parse_connect_private()
197 struct svcxprt_rdma *newxprt; in handle_connect_req() local
201 newxprt = svc_rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, in handle_connect_req()
203 if (!newxprt) in handle_connect_req()
205 newxprt->sc_cm_id = new_cma_id; in handle_connect_req()
206 new_cma_id->context = newxprt; in handle_connect_req()
207 svc_rdma_parse_connect_private(newxprt, param); in handle_connect_req()
210 newxprt->sc_ord = param->initiator_depth; in handle_connect_req()
212 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in handle_connect_req()
213 newxprt->sc_xprt.xpt_remotelen = svc_addr_len(sa); in handle_connect_req()
214 memcpy(&newxprt->sc_xprt.xpt_remote, sa, in handle_connect_req()
215 newxprt->sc_xprt.xpt_remotelen); in handle_connect_req()
216 snprintf(newxprt->sc_xprt.xpt_remotebuf, in handle_connect_req()
217 sizeof(newxprt->sc_xprt.xpt_remotebuf) - 1, "%pISc", sa); in handle_connect_req()
223 rpc_set_port((struct sockaddr *)&newxprt->sc_xprt.xpt_remote, 0); in handle_connect_req()
225 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in handle_connect_req()
226 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); in handle_connect_req()
233 list_add_tail(&newxprt->sc_accept_q, &listen_xprt->sc_accept_q); in handle_connect_req()
369 struct svcxprt_rdma *newxprt = NULL; in svc_rdma_accept() local
383 newxprt = list_entry(listen_rdma->sc_accept_q.next, in svc_rdma_accept()
385 list_del_init(&newxprt->sc_accept_q); in svc_rdma_accept()
390 if (!newxprt) in svc_rdma_accept()
393 dev = newxprt->sc_cm_id->device; in svc_rdma_accept()
394 newxprt->sc_port_num = newxprt->sc_cm_id->port_num; in svc_rdma_accept()
399 newxprt->sc_max_send_sges = 3; in svc_rdma_accept()
401 newxprt->sc_max_send_sges += (svcrdma_max_req_size / PAGE_SIZE) + 1; in svc_rdma_accept()
402 if (newxprt->sc_max_send_sges > dev->attrs.max_send_sge) in svc_rdma_accept()
403 newxprt->sc_max_send_sges = dev->attrs.max_send_sge; in svc_rdma_accept()
404 newxprt->sc_max_req_size = svcrdma_max_req_size; in svc_rdma_accept()
405 newxprt->sc_max_requests = svcrdma_max_requests; in svc_rdma_accept()
406 newxprt->sc_max_bc_requests = svcrdma_max_bc_requests; in svc_rdma_accept()
407 rq_depth = newxprt->sc_max_requests + newxprt->sc_max_bc_requests; in svc_rdma_accept()
412 newxprt->sc_max_requests = rq_depth - 2; in svc_rdma_accept()
413 newxprt->sc_max_bc_requests = 2; in svc_rdma_accept()
415 newxprt->sc_fc_credits = cpu_to_be32(newxprt->sc_max_requests); in svc_rdma_accept()
416 ctxts = rdma_rw_mr_factor(dev, newxprt->sc_port_num, RPCSVC_MAXPAGES); in svc_rdma_accept()
417 ctxts *= newxprt->sc_max_requests; in svc_rdma_accept()
418 newxprt->sc_sq_depth = rq_depth + ctxts; in svc_rdma_accept()
419 if (newxprt->sc_sq_depth > dev->attrs.max_qp_wr) { in svc_rdma_accept()
422 newxprt->sc_sq_depth = dev->attrs.max_qp_wr; in svc_rdma_accept()
424 atomic_set(&newxprt->sc_sq_avail, newxprt->sc_sq_depth); in svc_rdma_accept()
426 newxprt->sc_pd = ib_alloc_pd(dev, 0); in svc_rdma_accept()
427 if (IS_ERR(newxprt->sc_pd)) { in svc_rdma_accept()
428 trace_svcrdma_pd_err(newxprt, PTR_ERR(newxprt->sc_pd)); in svc_rdma_accept()
431 newxprt->sc_sq_cq = ib_alloc_cq_any(dev, newxprt, newxprt->sc_sq_depth, in svc_rdma_accept()
433 if (IS_ERR(newxprt->sc_sq_cq)) in svc_rdma_accept()
435 newxprt->sc_rq_cq = in svc_rdma_accept()
436 ib_alloc_cq_any(dev, newxprt, rq_depth, IB_POLL_WORKQUEUE); in svc_rdma_accept()
437 if (IS_ERR(newxprt->sc_rq_cq)) in svc_rdma_accept()
442 qp_attr.qp_context = &newxprt->sc_xprt; in svc_rdma_accept()
443 qp_attr.port_num = newxprt->sc_port_num; in svc_rdma_accept()
445 qp_attr.cap.max_send_wr = newxprt->sc_sq_depth - ctxts; in svc_rdma_accept()
447 qp_attr.cap.max_send_sge = newxprt->sc_max_send_sges; in svc_rdma_accept()
451 qp_attr.send_cq = newxprt->sc_sq_cq; in svc_rdma_accept()
452 qp_attr.recv_cq = newxprt->sc_rq_cq; in svc_rdma_accept()
454 newxprt->sc_cm_id, newxprt->sc_pd); in svc_rdma_accept()
460 ret = rdma_create_qp(newxprt->sc_cm_id, newxprt->sc_pd, &qp_attr); in svc_rdma_accept()
462 trace_svcrdma_qp_err(newxprt, ret); in svc_rdma_accept()
465 newxprt->sc_qp = newxprt->sc_cm_id->qp; in svc_rdma_accept()
468 newxprt->sc_snd_w_inv = false; in svc_rdma_accept()
469 if (!rdma_protocol_iwarp(dev, newxprt->sc_port_num) && in svc_rdma_accept()
470 !rdma_ib_or_roce(dev, newxprt->sc_port_num)) { in svc_rdma_accept()
471 trace_svcrdma_fabric_err(newxprt, -EINVAL); in svc_rdma_accept()
475 if (!svc_rdma_post_recvs(newxprt)) in svc_rdma_accept()
479 newxprt->sc_cm_id->event_handler = svc_rdma_cma_handler; in svc_rdma_accept()
486 rpcrdma_encode_buffer_size(newxprt->sc_max_req_size); in svc_rdma_accept()
489 set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); in svc_rdma_accept()
492 conn_param.initiator_depth = min_t(int, newxprt->sc_ord, in svc_rdma_accept()
496 trace_svcrdma_initdepth_err(newxprt, ret); in svc_rdma_accept()
501 ret = rdma_accept(newxprt->sc_cm_id, &conn_param); in svc_rdma_accept()
503 trace_svcrdma_accept_err(newxprt, ret); in svc_rdma_accept()
508 dprintk("svcrdma: new connection %p accepted:\n", newxprt); in svc_rdma_accept()
509 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in svc_rdma_accept()
511 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in svc_rdma_accept()
513 dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); in svc_rdma_accept()
514 dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); in svc_rdma_accept()
516 dprintk(" max_requests : %d\n", newxprt->sc_max_requests); in svc_rdma_accept()
520 return &newxprt->sc_xprt; in svc_rdma_accept()
524 svc_xprt_get(&newxprt->sc_xprt); in svc_rdma_accept()
525 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) in svc_rdma_accept()
526 ib_destroy_qp(newxprt->sc_qp); in svc_rdma_accept()
527 rdma_destroy_id(newxprt->sc_cm_id); in svc_rdma_accept()
529 svc_xprt_put(&newxprt->sc_xprt); in svc_rdma_accept()