diff options
Diffstat (limited to 'drivers/scsi/iscsi_tcp.h')
-rw-r--r-- | drivers/scsi/iscsi_tcp.h | 71 |
1 files changed, 10 insertions, 61 deletions
diff --git a/drivers/scsi/iscsi_tcp.h b/drivers/scsi/iscsi_tcp.h index 0ed47733c75f..ca6b7bc64de0 100644 --- a/drivers/scsi/iscsi_tcp.h +++ b/drivers/scsi/iscsi_tcp.h | |||
@@ -19,67 +19,27 @@ | |||
19 | * See the file COPYING included with this distribution for more details. | 19 | * See the file COPYING included with this distribution for more details. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #ifndef ISCSI_TCP_H | 22 | #ifndef ISCSI_SW_TCP_H |
23 | #define ISCSI_TCP_H | 23 | #define ISCSI_SW_TCP_H |
24 | 24 | ||
25 | #include <scsi/libiscsi.h> | 25 | #include <scsi/libiscsi.h> |
26 | #include <scsi/libiscsi_tcp.h> | ||
26 | 27 | ||
27 | struct crypto_hash; | ||
28 | struct socket; | 28 | struct socket; |
29 | struct iscsi_tcp_conn; | 29 | struct iscsi_tcp_conn; |
30 | struct iscsi_segment; | ||
31 | |||
32 | typedef int iscsi_segment_done_fn_t(struct iscsi_tcp_conn *, | ||
33 | struct iscsi_segment *); | ||
34 | |||
35 | struct iscsi_segment { | ||
36 | unsigned char *data; | ||
37 | unsigned int size; | ||
38 | unsigned int copied; | ||
39 | unsigned int total_size; | ||
40 | unsigned int total_copied; | ||
41 | |||
42 | struct hash_desc *hash; | ||
43 | unsigned char recv_digest[ISCSI_DIGEST_SIZE]; | ||
44 | unsigned char digest[ISCSI_DIGEST_SIZE]; | ||
45 | unsigned int digest_len; | ||
46 | |||
47 | struct scatterlist *sg; | ||
48 | void *sg_mapped; | ||
49 | unsigned int sg_offset; | ||
50 | |||
51 | iscsi_segment_done_fn_t *done; | ||
52 | }; | ||
53 | |||
54 | /* Socket connection recieve helper */ | ||
55 | struct iscsi_tcp_recv { | ||
56 | struct iscsi_hdr *hdr; | ||
57 | struct iscsi_segment segment; | ||
58 | |||
59 | /* Allocate buffer for BHS + AHS */ | ||
60 | uint32_t hdr_buf[64]; | ||
61 | |||
62 | /* copied and flipped values */ | ||
63 | int datalen; | ||
64 | }; | ||
65 | 30 | ||
66 | /* Socket connection send helper */ | 31 | /* Socket connection send helper */ |
67 | struct iscsi_tcp_send { | 32 | struct iscsi_sw_tcp_send { |
68 | struct iscsi_hdr *hdr; | 33 | struct iscsi_hdr *hdr; |
69 | struct iscsi_segment segment; | 34 | struct iscsi_segment segment; |
70 | struct iscsi_segment data_segment; | 35 | struct iscsi_segment data_segment; |
71 | }; | 36 | }; |
72 | 37 | ||
73 | struct iscsi_tcp_conn { | 38 | struct iscsi_sw_tcp_conn { |
74 | struct iscsi_conn *iscsi_conn; | 39 | struct iscsi_conn *iscsi_conn; |
75 | struct socket *sock; | 40 | struct socket *sock; |
76 | int stop_stage; /* conn_stop() flag: * | ||
77 | * stop to recover, * | ||
78 | * stop to terminate */ | ||
79 | /* control data */ | ||
80 | struct iscsi_tcp_recv in; /* TCP receive context */ | ||
81 | struct iscsi_tcp_send out; /* TCP send context */ | ||
82 | 41 | ||
42 | struct iscsi_sw_tcp_send out; | ||
83 | /* old values for socket callbacks */ | 43 | /* old values for socket callbacks */ |
84 | void (*old_data_ready)(struct sock *, int); | 44 | void (*old_data_ready)(struct sock *, int); |
85 | void (*old_state_change)(struct sock *); | 45 | void (*old_state_change)(struct sock *); |
@@ -93,24 +53,13 @@ struct iscsi_tcp_conn { | |||
93 | uint32_t sendpage_failures_cnt; | 53 | uint32_t sendpage_failures_cnt; |
94 | uint32_t discontiguous_hdr_cnt; | 54 | uint32_t discontiguous_hdr_cnt; |
95 | 55 | ||
96 | int error; | ||
97 | |||
98 | ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int); | 56 | ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int); |
99 | }; | 57 | }; |
100 | 58 | ||
101 | struct iscsi_tcp_task { | 59 | struct iscsi_sw_tcp_hdrbuf { |
102 | struct iscsi_hdr_buff { | 60 | struct iscsi_hdr hdrbuf; |
103 | struct iscsi_hdr hdrbuf; | 61 | char hdrextbuf[ISCSI_MAX_AHS_SIZE + |
104 | char hdrextbuf[ISCSI_MAX_AHS_SIZE + | ||
105 | ISCSI_DIGEST_SIZE]; | 62 | ISCSI_DIGEST_SIZE]; |
106 | } hdr; | ||
107 | |||
108 | int sent; | ||
109 | uint32_t exp_datasn; /* expected target's R2TSN/DataSN */ | ||
110 | int data_offset; | ||
111 | struct iscsi_r2t_info *r2t; /* in progress solict R2T */ | ||
112 | struct iscsi_pool r2tpool; | ||
113 | struct kfifo *r2tqueue; | ||
114 | }; | 63 | }; |
115 | 64 | ||
116 | #endif /* ISCSI_H */ | 65 | #endif /* ISCSI_SW_TCP_H */ |