aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/iscsi_tcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/iscsi_tcp.h')
-rw-r--r--drivers/scsi/iscsi_tcp.h71
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
27struct crypto_hash;
28struct socket; 28struct socket;
29struct iscsi_tcp_conn; 29struct iscsi_tcp_conn;
30struct iscsi_segment;
31
32typedef int iscsi_segment_done_fn_t(struct iscsi_tcp_conn *,
33 struct iscsi_segment *);
34
35struct 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 */
55struct 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 */
67struct iscsi_tcp_send { 32struct 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
73struct iscsi_tcp_conn { 38struct 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
101struct iscsi_tcp_task { 59struct 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 */