111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/**************************************************************************** 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** This header was automatically generated from a Linux kernel header 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** of the same name, to make information necessary for userspace to 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** call into the kernel available to libc. It contains only constants, 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** structures, and macros generated from the original header, and thus, 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** contains no copyrightable information. 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *** 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert **************************************************************************** 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/ 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_SUNRPC_XPRT_H 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_SUNRPC_XPRT_H 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/uio.h> 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/socket.h> 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/in.h> 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/sunrpc/sched.h> 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/sunrpc/xdr.h> 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_MIN_SLOT_TABLE (2U) 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_DEF_SLOT_TABLE (16U) 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_MAX_SLOT_TABLE (128U) 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_CALLHDRSIZE 6 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_REPHDRSIZE 4 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_MIN_RESVPORT (1U) 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_MAX_RESVPORT (65535U) 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_DEF_MIN_RESVPORT (665U) 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define RPC_DEF_MAX_RESVPORT (1023U) 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_timeout { 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long to_initval, 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert to_maxval, 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert to_increment; 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int to_retries; 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char to_exponential; 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_task; 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_xprt; 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct seq_file; 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_rqst { 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_xprt * rq_xprt; 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xdr_buf rq_snd_buf; 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xdr_buf rq_rcv_buf; 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_task * rq_task; 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rq_xid; 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rq_cong; 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rq_received; 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 rq_seqno; 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rq_enc_pages_num; 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct page **rq_enc_pages; 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*rq_release_snd_buf)(struct rpc_rqst *); 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct list_head rq_list; 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 * rq_buffer; 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t rq_bufsize; 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xdr_buf rq_private_buf; 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long rq_majortimeo; 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long rq_timeout; 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int rq_retries; 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 rq_bytes_sent; 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long rq_xtime; 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int rq_ntrans; 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define rq_svec rq_snd_buf.head 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define rq_slen rq_snd_buf.len 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_xprt_ops { 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*reserve_xprt)(struct rpc_task *task); 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*set_port)(struct rpc_xprt *xprt, unsigned short port); 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*connect)(struct rpc_task *task); 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void * (*buf_alloc)(struct rpc_task *task, size_t size); 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*buf_free)(struct rpc_task *task); 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int (*send_request)(struct rpc_task *task); 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*set_retrans_timeout)(struct rpc_task *task); 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*timer)(struct rpc_task *task); 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*release_request)(struct rpc_task *task); 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*close)(struct rpc_xprt *xprt); 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*destroy)(struct rpc_xprt *xprt); 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*print_stats)(struct rpc_xprt *xprt, struct seq_file *seq); 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rpc_xprt { 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_xprt_ops * ops; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct socket * sock; 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct sock * inet; 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_timeout timeout; 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct sockaddr_in addr; 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int prot; 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long cong; 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long cwnd; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t rcvsize, 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sndsize; 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert size_t max_payload; 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int tsh_size; 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_wait_queue sending; 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_wait_queue resend; 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_wait_queue pending; 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_wait_queue backlog; 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct list_head free; 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_rqst * slot; 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int max_reqs; 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long state; 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char shutdown : 1, 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert resvport : 1; 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 xid; 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u32 tcp_recm, 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert tcp_xid, 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert tcp_reclen, 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert tcp_offset; 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long tcp_copied, 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert tcp_flags; 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long connect_timeout, 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bind_timeout, 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert reestablish_timeout; 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct work_struct connect_worker; 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short port; 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct work_struct task_cleanup; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct timer_list timer; 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long last_used, 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert idle_timeout; 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert spinlock_t transport_lock; 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert spinlock_t reserve_lock; 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct rpc_task * snd_task; 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct list_head recv; 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct { 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long bind_count, 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert connect_count, 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert connect_start, 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert connect_time, 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert sends, 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert recvs, 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bad_xids; 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned long long req_u, 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert bklog_u; 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } stat; 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*old_data_ready)(struct sock *, int); 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*old_state_change)(struct sock *); 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void (*old_write_space)(struct sock *); 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XPRT_LAST_FRAG (1 << 0) 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XPRT_COPY_RECM (1 << 1) 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XPRT_COPY_XID (1 << 2) 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XPRT_COPY_DATA (1 << 3) 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 173