• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <linux/list.h>
2 #include <linux/types.h>
3 #include <linux/uio.h>
4 #include <linux/wait.h>
5 
6 struct smb_request {
7 	struct list_head rq_queue;	/* recvq or xmitq for the server */
8 
9 	atomic_t rq_count;
10 
11 	wait_queue_head_t rq_wait;
12 	int rq_flags;
13 	int rq_mid;	/* multiplex ID, set by request.c */
14 
15 	struct smb_sb_info *rq_server;
16 
17 	/* header + word count + parameter words + byte count */
18 	unsigned char rq_header[SMB_HEADER_LEN + 20*2 + 2];
19 
20 	int rq_bufsize;
21 	unsigned char *rq_buffer;
22 
23 	/* FIXME: this is not good enough for merging IO requests. */
24 	unsigned char *rq_page;
25 	int rq_rsize;
26 
27 	int rq_resp_wct;
28 	int rq_resp_bcc;
29 
30 	int rq_rlen;
31 	int rq_bytes_recvd;
32 
33 	int rq_slen;
34 	int rq_bytes_sent;
35 
36 	int rq_iovlen;
37 	struct kvec rq_iov[4];
38 
39 	int (*rq_setup_read) (struct smb_request *);
40 	void (*rq_callback) (struct smb_request *);
41 
42 	/* ------ trans2 stuff ------ */
43 
44 	u16 rq_trans2_command;	/* 0 if not a trans2 request */
45 	unsigned int rq_ldata;
46 	unsigned char *rq_data;
47 	unsigned int rq_lparm;
48 	unsigned char *rq_parm;
49 
50 	int rq_fragment;
51 	u32 rq_total_data;
52 	u32 rq_total_parm;
53 	int rq_trans2bufsize;
54 	unsigned char *rq_trans2buffer;
55 
56 	/* ------ response ------ */
57 
58 	unsigned short rq_rcls;
59 	unsigned short rq_err;
60 	int rq_errno;
61 };
62 
63 #define SMB_REQ_STATIC		0x0001	/* rq_buffer is static */
64 #define SMB_REQ_NORETRY		0x0002	/* request is invalid after retry */
65 
66 #define SMB_REQ_TRANSMITTED	0x4000	/* all data has been sent */
67 #define SMB_REQ_RECEIVED	0x8000	/* reply received, smbiod is done */
68 
69 #define xSMB_REQ_NOREPLY	0x0004	/* we don't want the reply (if any) */
70 #define xSMB_REQ_NORECEIVER	0x0008	/* caller doesn't wait for response */
71