1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /****************************************************************************** 3 4 (c) 2008 NetApp. All Rights Reserved. 5 6 7 ******************************************************************************/ 8 9 /* 10 * Functions to create and manage the backchannel 11 */ 12 13 #ifndef _LINUX_SUNRPC_BC_XPRT_H 14 #define _LINUX_SUNRPC_BC_XPRT_H 15 16 #include <linux/sunrpc/svcsock.h> 17 #include <linux/sunrpc/xprt.h> 18 #include <linux/sunrpc/sched.h> 19 20 #ifdef CONFIG_SUNRPC_BACKCHANNEL 21 struct rpc_rqst *xprt_lookup_bc_request(struct rpc_xprt *xprt, __be32 xid); 22 void xprt_complete_bc_request(struct rpc_rqst *req, uint32_t copied); 23 void xprt_init_bc_request(struct rpc_rqst *req, struct rpc_task *task, 24 const struct rpc_timeout *to); 25 void xprt_free_bc_request(struct rpc_rqst *req); 26 int xprt_setup_backchannel(struct rpc_xprt *, unsigned int min_reqs); 27 void xprt_destroy_backchannel(struct rpc_xprt *, unsigned int max_reqs); 28 29 /* Socket backchannel transport methods */ 30 int xprt_setup_bc(struct rpc_xprt *xprt, unsigned int min_reqs); 31 void xprt_destroy_bc(struct rpc_xprt *xprt, unsigned int max_reqs); 32 void xprt_free_bc_rqst(struct rpc_rqst *req); 33 unsigned int xprt_bc_max_slots(struct rpc_xprt *xprt); 34 35 /* 36 * Determine if a shared backchannel is in use 37 */ 38 static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) 39 { 40 return rqstp->rq_server->sv_bc_enabled; 41 } 42 43 static inline void set_bc_enabled(struct svc_serv *serv) 44 { 45 serv->sv_bc_enabled = true; 46 } 47 #else /* CONFIG_SUNRPC_BACKCHANNEL */ 48 static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, 49 unsigned int min_reqs) 50 { 51 return 0; 52 } 53 54 static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt, 55 unsigned int max_reqs) 56 { 57 } 58 59 static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) 60 { 61 return false; 62 } 63 64 static inline void set_bc_enabled(struct svc_serv *serv) 65 { 66 } 67 68 static inline void xprt_free_bc_request(struct rpc_rqst *req) 69 { 70 } 71 #endif /* CONFIG_SUNRPC_BACKCHANNEL */ 72 #endif /* _LINUX_SUNRPC_BC_XPRT_H */ 73