Lines Matching refs:xprt

160 xprt_rdma_format_addresses4(struct rpc_xprt *xprt, struct sockaddr *sap)
166 xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL);
168 xprt->address_strings[RPC_DISPLAY_NETID] = RPCBIND_NETID_RDMA;
172 xprt_rdma_format_addresses6(struct rpc_xprt *xprt, struct sockaddr *sap)
178 xprt->address_strings[RPC_DISPLAY_HEX_ADDR] = kstrdup(buf, GFP_KERNEL);
180 xprt->address_strings[RPC_DISPLAY_NETID] = RPCBIND_NETID_RDMA6;
184 xprt_rdma_format_addresses(struct rpc_xprt *xprt, struct sockaddr *sap)
190 xprt_rdma_format_addresses4(xprt, sap);
193 xprt_rdma_format_addresses6(xprt, sap);
201 xprt->address_strings[RPC_DISPLAY_ADDR] = kstrdup(buf, GFP_KERNEL);
204 xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL);
207 xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
209 xprt->address_strings[RPC_DISPLAY_PROTO] = "rdma";
213 xprt_rdma_free_addresses(struct rpc_xprt *xprt)
223 kfree(xprt->address_strings[i]);
231 * Requester holds the xprt's send lock to prevent activity on this
233 * sleep on the xprt's pending queue waiting for connect to complete.
240 struct rpc_xprt *xprt = &r_xprt->rx_xprt;
244 xprt_clear_connecting(xprt);
246 xprt->connect_cookie++;
247 xprt->stat.connect_count++;
248 xprt->stat.connect_time += (long)jiffies -
249 xprt->stat.connect_start;
250 xprt_set_connected(xprt);
254 xprt_unlock_connect(xprt, r_xprt);
255 xprt_wake_pending_tasks(xprt, rc);
260 * @xprt: transport context
262 * If @xprt is connected, disconnect it to simulate spurious
263 * connection loss. Caller must hold @xprt's send lock to
268 xprt_rdma_inject_disconnect(struct rpc_xprt *xprt)
270 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
278 * @xprt: doomed transport context
281 * this @xprt.
284 xprt_rdma_destroy(struct rpc_xprt *xprt)
286 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
293 xprt_rdma_free_addresses(xprt);
294 xprt_free(xprt);
313 struct rpc_xprt *xprt;
318 if (args->addrlen > sizeof(xprt->addr))
324 xprt = xprt_alloc(args->net, sizeof(struct rpcrdma_xprt), 0,
326 if (!xprt) {
331 xprt->timeout = &xprt_rdma_default_timeout;
332 xprt->connect_timeout = xprt->timeout->to_initval;
333 xprt->max_reconnect_timeout = xprt->timeout->to_maxval;
334 xprt->bind_timeout = RPCRDMA_BIND_TO;
335 xprt->reestablish_timeout = RPCRDMA_INIT_REEST_TO;
336 xprt->idle_timeout = RPCRDMA_IDLE_DISC_TO;
338 xprt->resvport = 0; /* privileged port not needed */
339 xprt->ops = &xprt_rdma_procs;
346 /* Ensure xprt->addr holds valid server TCP (not RDMA)
348 xprt->prot = IPPROTO_TCP;
349 xprt->addrlen = args->addrlen;
350 memcpy(&xprt->addr, sap, xprt->addrlen);
353 xprt_set_bound(xprt);
354 xprt_rdma_format_addresses(xprt, sap);
356 new_xprt = rpcx_to_rdmax(xprt);
359 xprt_rdma_free_addresses(xprt);
360 xprt_free(xprt);
368 xprt->max_payload = RPCRDMA_MAX_DATA_SEGS << PAGE_SHIFT;
370 return xprt;
375 * @xprt: transport context
379 * Caller holds @xprt's send lock to prevent activity on this
382 void xprt_rdma_close(struct rpc_xprt *xprt)
384 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
388 xprt->reestablish_timeout = 0;
389 ++xprt->connect_cookie;
390 xprt_disconnect_done(xprt);
395 * @xprt: controlling RPC transport
401 xprt_rdma_set_port(struct rpc_xprt *xprt, u16 port)
403 struct sockaddr *sap = (struct sockaddr *)&xprt->addr;
408 kfree(xprt->address_strings[RPC_DISPLAY_PORT]);
410 xprt->address_strings[RPC_DISPLAY_PORT] = kstrdup(buf, GFP_KERNEL);
412 kfree(xprt->address_strings[RPC_DISPLAY_HEX_PORT]);
414 xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
419 * @xprt: controlling RPC transport
431 xprt_rdma_timer(struct rpc_xprt *xprt, struct rpc_task *task)
433 xprt_force_disconnect(xprt);
438 * @xprt: controlling transport instance
443 static void xprt_rdma_set_connect_timeout(struct rpc_xprt *xprt,
447 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
451 spin_lock(&xprt->transport_lock);
453 if (connect_timeout < xprt->connect_timeout) {
457 to = *xprt->timeout;
464 xprt->timeout = &r_xprt->rx_timeout;
465 xprt->connect_timeout = connect_timeout;
468 if (reconnect_timeout < xprt->max_reconnect_timeout)
469 xprt->max_reconnect_timeout = reconnect_timeout;
471 spin_unlock(&xprt->transport_lock);
476 * @xprt: transport state
481 xprt_rdma_connect(struct rpc_xprt *xprt, struct rpc_task *task)
483 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
487 WARN_ON_ONCE(!xprt_lock_connect(xprt, task, r_xprt));
491 delay = xprt_reconnect_delay(xprt);
492 xprt_reconnect_backoff(xprt, RPCRDMA_INIT_REEST_TO);
501 * @xprt: controlling RPC transport
509 xprt_rdma_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task)
511 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
523 xprt_add_backlog(xprt, task);
528 * @xprt: controlling RPC transport
533 xprt_rdma_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *rqst)
536 container_of(xprt, struct rpcrdma_xprt, rx_xprt);
539 if (!xprt_wake_up_backlog(xprt, rqst)) {
637 struct rpc_xprt *xprt = rqst->rq_xprt;
639 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
647 if (!xprt_connected(xprt))
650 if (!xprt_request_get_cong(xprt, rqst))
658 if (rqst->rq_connect_cookie == xprt->connect_cookie)
678 xprt_rdma_close(xprt);
682 void xprt_rdma_print_stats(struct rpc_xprt *xprt, struct seq_file *seq)
684 struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
687 if (xprt_connected(xprt))
688 idle_time = (long)(jiffies - xprt->last_used) / HZ;
693 xprt->stat.bind_count,
694 xprt->stat.connect_count,
695 xprt->stat.connect_time / HZ,
697 xprt->stat.sends,
698 xprt->stat.recvs,
699 xprt->stat.bad_xids,
700 xprt->stat.req_u,
701 xprt->stat.bklog_u);
724 xprt_rdma_enable_swap(struct rpc_xprt *xprt)
730 xprt_rdma_disable_swap(struct rpc_xprt *xprt)
740 .release_xprt = xprt_release_xprt_cong, /* sunrpc/xprt.c */