aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/iscsi_if.h64
-rw-r--r--include/scsi/scsi_transport_iscsi.h24
2 files changed, 68 insertions, 20 deletions
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h
index 933a91b1474e..2c3a89b64e71 100644
--- a/include/scsi/iscsi_if.h
+++ b/include/scsi/iscsi_if.h
@@ -86,7 +86,7 @@ struct iscsi_uevent {
86 uint32_t sid; 86 uint32_t sid;
87 uint32_t cid; 87 uint32_t cid;
88 uint32_t param; /* enum iscsi_param */ 88 uint32_t param; /* enum iscsi_param */
89 uint32_t value; 89 uint32_t len;
90 } set_param; 90 } set_param;
91 struct msg_start_conn { 91 struct msg_start_conn {
92 uint32_t sid; 92 uint32_t sid;
@@ -155,22 +155,54 @@ enum iscsi_err {
155 * iSCSI Parameters (RFC3720) 155 * iSCSI Parameters (RFC3720)
156 */ 156 */
157enum iscsi_param { 157enum iscsi_param {
158 ISCSI_PARAM_MAX_RECV_DLENGTH = 0, 158 /* passed in using netlink set param */
159 ISCSI_PARAM_MAX_XMIT_DLENGTH = 1, 159 ISCSI_PARAM_MAX_RECV_DLENGTH,
160 ISCSI_PARAM_HDRDGST_EN = 2, 160 ISCSI_PARAM_MAX_XMIT_DLENGTH,
161 ISCSI_PARAM_DATADGST_EN = 3, 161 ISCSI_PARAM_HDRDGST_EN,
162 ISCSI_PARAM_INITIAL_R2T_EN = 4, 162 ISCSI_PARAM_DATADGST_EN,
163 ISCSI_PARAM_MAX_R2T = 5, 163 ISCSI_PARAM_INITIAL_R2T_EN,
164 ISCSI_PARAM_IMM_DATA_EN = 6, 164 ISCSI_PARAM_MAX_R2T,
165 ISCSI_PARAM_FIRST_BURST = 7, 165 ISCSI_PARAM_IMM_DATA_EN,
166 ISCSI_PARAM_MAX_BURST = 8, 166 ISCSI_PARAM_FIRST_BURST,
167 ISCSI_PARAM_PDU_INORDER_EN = 9, 167 ISCSI_PARAM_MAX_BURST,
168 ISCSI_PARAM_DATASEQ_INORDER_EN = 10, 168 ISCSI_PARAM_PDU_INORDER_EN,
169 ISCSI_PARAM_ERL = 11, 169 ISCSI_PARAM_DATASEQ_INORDER_EN,
170 ISCSI_PARAM_IFMARKER_EN = 12, 170 ISCSI_PARAM_ERL,
171 ISCSI_PARAM_OFMARKER_EN = 13, 171 ISCSI_PARAM_IFMARKER_EN,
172 ISCSI_PARAM_OFMARKER_EN,
173 ISCSI_PARAM_TARGET_NAME,
174 ISCSI_PARAM_TPGT,
175 ISCSI_PARAM_PERSISTENT_ADDRESS,
176 ISCSI_PARAM_PERSISTENT_PORT,
177
178 /* pased in through bind conn using transport_fd */
179 ISCSI_PARAM_CONN_PORT,
180 ISCSI_PARAM_CONN_ADDRESS,
181
182 /* must always be last */
183 ISCSI_PARAM_MAX,
172}; 184};
173#define ISCSI_PARAM_MAX 14 185
186#define ISCSI_MAX_RECV_DLENGTH (1 << ISCSI_PARAM_MAX_RECV_DLENGTH)
187#define ISCSI_MAX_XMIT_DLENGTH (1 << ISCSI_PARAM_MAX_XMIT_DLENGTH)
188#define ISCSI_HDRDGST_EN (1 << ISCSI_PARAM_HDRDGST_EN)
189#define ISCSI_DATADGST_EN (1 << ISCSI_PARAM_DATADGST_EN)
190#define ISCSI_INITIAL_R2T_EN (1 << ISCSI_PARAM_INITIAL_R2T_EN)
191#define ISCSI_MAX_R2T (1 << ISCSI_PARAM_MAX_R2T)
192#define ISCSI_IMM_DATA_EN (1 << ISCSI_PARAM_IMM_DATA_EN)
193#define ISCSI_FIRST_BURST (1 << ISCSI_PARAM_FIRST_BURST)
194#define ISCSI_MAX_BURST (1 << ISCSI_PARAM_MAX_BURST)
195#define ISCSI_PDU_INORDER_EN (1 << ISCSI_PARAM_PDU_INORDER_EN)
196#define ISCSI_DATASEQ_INORDER_EN (1 << ISCSI_PARAM_DATASEQ_INORDER_EN)
197#define ISCSI_ERL (1 << ISCSI_PARAM_ERL)
198#define ISCSI_IFMARKER_EN (1 << ISCSI_PARAM_IFMARKER_EN)
199#define ISCSI_OFMARKER_EN (1 << ISCSI_PARAM_OFMARKER_EN)
200#define ISCSI_TARGET_NAME (1 << ISCSI_PARAM_TARGET_NAME)
201#define ISCSI_TPGT (1 << ISCSI_PARAM_TPGT)
202#define ISCSI_PERSISTENT_ADDRESS (1 << ISCSI_PARAM_PERSISTENT_ADDRESS)
203#define ISCSI_PERSISTENT_PORT (1 << ISCSI_PARAM_PERSISTENT_PORT)
204#define ISCSI_CONN_PORT (1 << ISCSI_PARAM_CONN_PORT)
205#define ISCSI_CONN_ADDRESS (1 << ISCSI_PARAM_CONN_ADDRESS)
174 206
175#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle) 207#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle)
176#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr) 208#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr)
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h
index 631463cd4892..4b200645c84b 100644
--- a/include/scsi/scsi_transport_iscsi.h
+++ b/include/scsi/scsi_transport_iscsi.h
@@ -53,11 +53,11 @@ struct iscsi_transport {
53 struct module *owner; 53 struct module *owner;
54 char *name; 54 char *name;
55 unsigned int caps; 55 unsigned int caps;
56 /* LLD sets this to indicate what values it can export to sysfs */
57 unsigned int param_mask;
56 struct scsi_host_template *host_template; 58 struct scsi_host_template *host_template;
57 /* LLD session/scsi_host data size */ 59 /* LLD session/scsi_host data size */
58 int hostdata_size; 60 int hostdata_size;
59 /* LLD iscsi_host data size */
60 int ihostdata_size;
61 /* LLD connection data size */ 61 /* LLD connection data size */
62 int conndata_size; 62 int conndata_size;
63 /* LLD session data size */ 63 /* LLD session data size */
@@ -79,10 +79,13 @@ struct iscsi_transport {
79 int (*set_param) (struct iscsi_cls_conn *conn, enum iscsi_param param, 79 int (*set_param) (struct iscsi_cls_conn *conn, enum iscsi_param param,
80 uint32_t value); 80 uint32_t value);
81 int (*get_conn_param) (struct iscsi_cls_conn *conn, 81 int (*get_conn_param) (struct iscsi_cls_conn *conn,
82 enum iscsi_param param, 82 enum iscsi_param param, uint32_t *value);
83 uint32_t *value);
84 int (*get_session_param) (struct iscsi_cls_session *session, 83 int (*get_session_param) (struct iscsi_cls_session *session,
85 enum iscsi_param param, uint32_t *value); 84 enum iscsi_param param, uint32_t *value);
85 int (*get_conn_str_param) (struct iscsi_cls_conn *conn,
86 enum iscsi_param param, char *buf);
87 int (*get_session_str_param) (struct iscsi_cls_session *session,
88 enum iscsi_param param, char *buf);
86 int (*send_pdu) (struct iscsi_cls_conn *conn, struct iscsi_hdr *hdr, 89 int (*send_pdu) (struct iscsi_cls_conn *conn, struct iscsi_hdr *hdr,
87 char *data, uint32_t data_size); 90 char *data, uint32_t data_size);
88 void (*get_stats) (struct iscsi_cls_conn *conn, 91 void (*get_stats) (struct iscsi_cls_conn *conn,
@@ -107,6 +110,14 @@ struct iscsi_cls_conn {
107 void *dd_data; /* LLD private data */ 110 void *dd_data; /* LLD private data */
108 struct iscsi_transport *transport; 111 struct iscsi_transport *transport;
109 uint32_t cid; /* connection id */ 112 uint32_t cid; /* connection id */
113
114 /* portal/group values we got during discovery */
115 char *persistent_address;
116 int persistent_port;
117 /* portal/group values we are currently using */
118 char *address;
119 int port;
120
110 int active; /* must be accessed with the connlock */ 121 int active; /* must be accessed with the connlock */
111 struct device dev; /* sysfs transport/container device */ 122 struct device dev; /* sysfs transport/container device */
112 struct mempool_zone *z_error; 123 struct mempool_zone *z_error;
@@ -120,6 +131,11 @@ struct iscsi_cls_conn {
120struct iscsi_cls_session { 131struct iscsi_cls_session {
121 struct list_head sess_list; /* item in session_list */ 132 struct list_head sess_list; /* item in session_list */
122 struct iscsi_transport *transport; 133 struct iscsi_transport *transport;
134
135 /* iSCSI values used as unique id by userspace. */
136 char *targetname;
137 int tpgt;
138
123 int sid; /* session id */ 139 int sid; /* session id */
124 void *dd_data; /* LLD private data */ 140 void *dd_data; /* LLD private data */
125 struct device dev; /* sysfs transport/container device */ 141 struct device dev; /* sysfs transport/container device */