Lines Matching refs:newxprt

159 svc_rdma_parse_connect_private(struct svcxprt_rdma *newxprt,  in svc_rdma_parse_connect_private()  argument
167 newxprt->sc_snd_w_inv = pmsg->cp_flags & in svc_rdma_parse_connect_private()
174 newxprt->sc_snd_w_inv ? "" : "un"); in svc_rdma_parse_connect_private()
193 struct svcxprt_rdma *newxprt; in handle_connect_req() local
197 newxprt = svc_rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, in handle_connect_req()
199 if (!newxprt) in handle_connect_req()
201 newxprt->sc_cm_id = new_cma_id; in handle_connect_req()
202 new_cma_id->context = newxprt; in handle_connect_req()
203 svc_rdma_parse_connect_private(newxprt, param); in handle_connect_req()
206 newxprt->sc_ord = param->initiator_depth; in handle_connect_req()
208 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in handle_connect_req()
209 newxprt->sc_xprt.xpt_remotelen = svc_addr_len(sa); in handle_connect_req()
210 memcpy(&newxprt->sc_xprt.xpt_remote, sa, in handle_connect_req()
211 newxprt->sc_xprt.xpt_remotelen); in handle_connect_req()
212 snprintf(newxprt->sc_xprt.xpt_remotebuf, in handle_connect_req()
213 sizeof(newxprt->sc_xprt.xpt_remotebuf) - 1, "%pISc", sa); in handle_connect_req()
219 rpc_set_port((struct sockaddr *)&newxprt->sc_xprt.xpt_remote, 0); in handle_connect_req()
221 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in handle_connect_req()
222 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); in handle_connect_req()
229 list_add_tail(&newxprt->sc_accept_q, &listen_xprt->sc_accept_q); in handle_connect_req()
367 struct svcxprt_rdma *newxprt = NULL; in svc_rdma_accept() local
381 newxprt = list_entry(listen_rdma->sc_accept_q.next, in svc_rdma_accept()
383 list_del_init(&newxprt->sc_accept_q); in svc_rdma_accept()
388 if (!newxprt) in svc_rdma_accept()
391 dev = newxprt->sc_cm_id->device; in svc_rdma_accept()
392 newxprt->sc_port_num = newxprt->sc_cm_id->port_num; in svc_rdma_accept()
397 newxprt->sc_max_send_sges = 3; in svc_rdma_accept()
399 newxprt->sc_max_send_sges += (svcrdma_max_req_size / PAGE_SIZE) + 1; in svc_rdma_accept()
400 if (newxprt->sc_max_send_sges > dev->attrs.max_send_sge) in svc_rdma_accept()
401 newxprt->sc_max_send_sges = dev->attrs.max_send_sge; in svc_rdma_accept()
402 newxprt->sc_max_req_size = svcrdma_max_req_size; in svc_rdma_accept()
403 newxprt->sc_max_requests = svcrdma_max_requests; in svc_rdma_accept()
404 newxprt->sc_max_bc_requests = svcrdma_max_bc_requests; in svc_rdma_accept()
405 newxprt->sc_recv_batch = RPCRDMA_MAX_RECV_BATCH; in svc_rdma_accept()
406 rq_depth = newxprt->sc_max_requests + newxprt->sc_max_bc_requests + in svc_rdma_accept()
407 newxprt->sc_recv_batch; in svc_rdma_accept()
412 newxprt->sc_recv_batch = 1; in svc_rdma_accept()
413 newxprt->sc_max_requests = rq_depth - 2; in svc_rdma_accept()
414 newxprt->sc_max_bc_requests = 2; in svc_rdma_accept()
416 newxprt->sc_fc_credits = cpu_to_be32(newxprt->sc_max_requests); in svc_rdma_accept()
417 ctxts = rdma_rw_mr_factor(dev, newxprt->sc_port_num, RPCSVC_MAXPAGES); in svc_rdma_accept()
418 ctxts *= newxprt->sc_max_requests; in svc_rdma_accept()
419 newxprt->sc_sq_depth = rq_depth + ctxts; in svc_rdma_accept()
420 if (newxprt->sc_sq_depth > dev->attrs.max_qp_wr) { in svc_rdma_accept()
423 newxprt->sc_sq_depth = dev->attrs.max_qp_wr; in svc_rdma_accept()
425 atomic_set(&newxprt->sc_sq_avail, newxprt->sc_sq_depth); in svc_rdma_accept()
427 newxprt->sc_pd = ib_alloc_pd(dev, 0); in svc_rdma_accept()
428 if (IS_ERR(newxprt->sc_pd)) { in svc_rdma_accept()
429 trace_svcrdma_pd_err(newxprt, PTR_ERR(newxprt->sc_pd)); in svc_rdma_accept()
432 newxprt->sc_sq_cq = ib_alloc_cq_any(dev, newxprt, newxprt->sc_sq_depth, in svc_rdma_accept()
434 if (IS_ERR(newxprt->sc_sq_cq)) in svc_rdma_accept()
436 newxprt->sc_rq_cq = in svc_rdma_accept()
437 ib_alloc_cq_any(dev, newxprt, rq_depth, IB_POLL_WORKQUEUE); in svc_rdma_accept()
438 if (IS_ERR(newxprt->sc_rq_cq)) in svc_rdma_accept()
443 qp_attr.qp_context = &newxprt->sc_xprt; in svc_rdma_accept()
444 qp_attr.port_num = newxprt->sc_port_num; in svc_rdma_accept()
446 qp_attr.cap.max_send_wr = newxprt->sc_sq_depth - ctxts; in svc_rdma_accept()
448 qp_attr.cap.max_send_sge = newxprt->sc_max_send_sges; in svc_rdma_accept()
452 qp_attr.send_cq = newxprt->sc_sq_cq; in svc_rdma_accept()
453 qp_attr.recv_cq = newxprt->sc_rq_cq; in svc_rdma_accept()
455 newxprt->sc_cm_id, newxprt->sc_pd); in svc_rdma_accept()
461 ret = rdma_create_qp(newxprt->sc_cm_id, newxprt->sc_pd, &qp_attr); in svc_rdma_accept()
463 trace_svcrdma_qp_err(newxprt, ret); in svc_rdma_accept()
466 newxprt->sc_qp = newxprt->sc_cm_id->qp; in svc_rdma_accept()
469 newxprt->sc_snd_w_inv = false; in svc_rdma_accept()
470 if (!rdma_protocol_iwarp(dev, newxprt->sc_port_num) && in svc_rdma_accept()
471 !rdma_ib_or_roce(dev, newxprt->sc_port_num)) { in svc_rdma_accept()
472 trace_svcrdma_fabric_err(newxprt, -EINVAL); in svc_rdma_accept()
476 if (!svc_rdma_post_recvs(newxprt)) in svc_rdma_accept()
484 rpcrdma_encode_buffer_size(newxprt->sc_max_req_size); in svc_rdma_accept()
487 set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); in svc_rdma_accept()
490 conn_param.initiator_depth = min_t(int, newxprt->sc_ord, in svc_rdma_accept()
494 trace_svcrdma_initdepth_err(newxprt, ret); in svc_rdma_accept()
499 rdma_lock_handler(newxprt->sc_cm_id); in svc_rdma_accept()
500 newxprt->sc_cm_id->event_handler = svc_rdma_cma_handler; in svc_rdma_accept()
501 ret = rdma_accept(newxprt->sc_cm_id, &conn_param); in svc_rdma_accept()
502 rdma_unlock_handler(newxprt->sc_cm_id); in svc_rdma_accept()
504 trace_svcrdma_accept_err(newxprt, ret); in svc_rdma_accept()
509 dprintk("svcrdma: new connection %p accepted:\n", newxprt); in svc_rdma_accept()
510 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in svc_rdma_accept()
512 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in svc_rdma_accept()
514 dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); in svc_rdma_accept()
515 dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); in svc_rdma_accept()
517 dprintk(" max_requests : %d\n", newxprt->sc_max_requests); in svc_rdma_accept()
521 return &newxprt->sc_xprt; in svc_rdma_accept()
525 svc_xprt_get(&newxprt->sc_xprt); in svc_rdma_accept()
526 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) in svc_rdma_accept()
527 ib_destroy_qp(newxprt->sc_qp); in svc_rdma_accept()
528 rdma_destroy_id(newxprt->sc_cm_id); in svc_rdma_accept()
530 svc_xprt_put(&newxprt->sc_xprt); in svc_rdma_accept()