Lines Matching refs:newxprt

161 svc_rdma_parse_connect_private(struct svcxprt_rdma *newxprt,  in svc_rdma_parse_connect_private()  argument
169 newxprt->sc_snd_w_inv = pmsg->cp_flags & in svc_rdma_parse_connect_private()
176 newxprt->sc_snd_w_inv ? "" : "un"); in svc_rdma_parse_connect_private()
195 struct svcxprt_rdma *newxprt; in handle_connect_req() local
199 newxprt = svc_rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, in handle_connect_req()
201 if (!newxprt) in handle_connect_req()
203 newxprt->sc_cm_id = new_cma_id; in handle_connect_req()
204 new_cma_id->context = newxprt; in handle_connect_req()
205 svc_rdma_parse_connect_private(newxprt, param); in handle_connect_req()
208 newxprt->sc_ord = param->initiator_depth; in handle_connect_req()
210 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in handle_connect_req()
211 newxprt->sc_xprt.xpt_remotelen = svc_addr_len(sa); in handle_connect_req()
212 memcpy(&newxprt->sc_xprt.xpt_remote, sa, in handle_connect_req()
213 newxprt->sc_xprt.xpt_remotelen); in handle_connect_req()
214 snprintf(newxprt->sc_xprt.xpt_remotebuf, in handle_connect_req()
215 sizeof(newxprt->sc_xprt.xpt_remotebuf) - 1, "%pISc", sa); in handle_connect_req()
221 rpc_set_port((struct sockaddr *)&newxprt->sc_xprt.xpt_remote, 0); in handle_connect_req()
223 sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in handle_connect_req()
224 svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); in handle_connect_req()
231 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 newxprt->sc_recv_batch = RPCRDMA_MAX_RECV_BATCH; in svc_rdma_accept()
408 rq_depth = newxprt->sc_max_requests + newxprt->sc_max_bc_requests + in svc_rdma_accept()
409 newxprt->sc_recv_batch; in svc_rdma_accept()
414 newxprt->sc_recv_batch = 1; in svc_rdma_accept()
415 newxprt->sc_max_requests = rq_depth - 2; in svc_rdma_accept()
416 newxprt->sc_max_bc_requests = 2; in svc_rdma_accept()
418 newxprt->sc_fc_credits = cpu_to_be32(newxprt->sc_max_requests); in svc_rdma_accept()
419 ctxts = rdma_rw_mr_factor(dev, newxprt->sc_port_num, RPCSVC_MAXPAGES); in svc_rdma_accept()
420 ctxts *= newxprt->sc_max_requests; in svc_rdma_accept()
421 newxprt->sc_sq_depth = rq_depth + ctxts; in svc_rdma_accept()
422 if (newxprt->sc_sq_depth > dev->attrs.max_qp_wr) { in svc_rdma_accept()
425 newxprt->sc_sq_depth = dev->attrs.max_qp_wr; in svc_rdma_accept()
427 atomic_set(&newxprt->sc_sq_avail, newxprt->sc_sq_depth); in svc_rdma_accept()
429 newxprt->sc_pd = ib_alloc_pd(dev, 0); in svc_rdma_accept()
430 if (IS_ERR(newxprt->sc_pd)) { in svc_rdma_accept()
431 trace_svcrdma_pd_err(newxprt, PTR_ERR(newxprt->sc_pd)); in svc_rdma_accept()
434 newxprt->sc_sq_cq = ib_alloc_cq_any(dev, newxprt, newxprt->sc_sq_depth, in svc_rdma_accept()
436 if (IS_ERR(newxprt->sc_sq_cq)) in svc_rdma_accept()
438 newxprt->sc_rq_cq = in svc_rdma_accept()
439 ib_alloc_cq_any(dev, newxprt, rq_depth, IB_POLL_WORKQUEUE); in svc_rdma_accept()
440 if (IS_ERR(newxprt->sc_rq_cq)) in svc_rdma_accept()
445 qp_attr.qp_context = &newxprt->sc_xprt; in svc_rdma_accept()
446 qp_attr.port_num = newxprt->sc_port_num; in svc_rdma_accept()
448 qp_attr.cap.max_send_wr = newxprt->sc_sq_depth - ctxts; in svc_rdma_accept()
450 qp_attr.cap.max_send_sge = newxprt->sc_max_send_sges; in svc_rdma_accept()
454 qp_attr.send_cq = newxprt->sc_sq_cq; in svc_rdma_accept()
455 qp_attr.recv_cq = newxprt->sc_rq_cq; in svc_rdma_accept()
457 newxprt->sc_cm_id, newxprt->sc_pd); in svc_rdma_accept()
463 ret = rdma_create_qp(newxprt->sc_cm_id, newxprt->sc_pd, &qp_attr); in svc_rdma_accept()
465 trace_svcrdma_qp_err(newxprt, ret); in svc_rdma_accept()
468 newxprt->sc_qp = newxprt->sc_cm_id->qp; in svc_rdma_accept()
471 newxprt->sc_snd_w_inv = false; in svc_rdma_accept()
472 if (!rdma_protocol_iwarp(dev, newxprt->sc_port_num) && in svc_rdma_accept()
473 !rdma_ib_or_roce(dev, newxprt->sc_port_num)) { in svc_rdma_accept()
474 trace_svcrdma_fabric_err(newxprt, -EINVAL); in svc_rdma_accept()
478 if (!svc_rdma_post_recvs(newxprt)) 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 rdma_lock_handler(newxprt->sc_cm_id); in svc_rdma_accept()
502 newxprt->sc_cm_id->event_handler = svc_rdma_cma_handler; in svc_rdma_accept()
503 ret = rdma_accept(newxprt->sc_cm_id, &conn_param); in svc_rdma_accept()
504 rdma_unlock_handler(newxprt->sc_cm_id); in svc_rdma_accept()
506 trace_svcrdma_accept_err(newxprt, ret); in svc_rdma_accept()
511 dprintk("svcrdma: new connection %p accepted:\n", newxprt); in svc_rdma_accept()
512 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; in svc_rdma_accept()
514 sap = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; in svc_rdma_accept()
516 dprintk(" max_sge : %d\n", newxprt->sc_max_send_sges); in svc_rdma_accept()
517 dprintk(" sq_depth : %d\n", newxprt->sc_sq_depth); in svc_rdma_accept()
519 dprintk(" max_requests : %d\n", newxprt->sc_max_requests); in svc_rdma_accept()
523 return &newxprt->sc_xprt; in svc_rdma_accept()
527 svc_xprt_get(&newxprt->sc_xprt); in svc_rdma_accept()
528 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) in svc_rdma_accept()
529 ib_destroy_qp(newxprt->sc_qp); in svc_rdma_accept()
530 rdma_destroy_id(newxprt->sc_cm_id); in svc_rdma_accept()
532 svc_xprt_put(&newxprt->sc_xprt); in svc_rdma_accept()