Blame view

include/scsi/iscsi_if.h 13.1 KB
39e84790d   Alex Aizman   [SCSI] open-iscsi...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  /*
   * iSCSI User/Kernel Shares (Defines, Constants, Protocol definitions, etc)
   *
   * Copyright (C) 2005 Dmitry Yusupov
   * Copyright (C) 2005 Alex Aizman
   * maintained by open-iscsi@googlegroups.com
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published
   * by the Free Software Foundation; either version 2 of the License, or
   * (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful, but
   * WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * General Public License for more details.
   *
   * See the file COPYING included with this distribution for more details.
   */
  
  #ifndef ISCSI_IF_H
  #define ISCSI_IF_H
  
  #include <scsi/iscsi_proto.h>
43514774f   Michael Chan   [SCSI] iscsi clas...
25
26
27
28
29
  #include <linux/in.h>
  #include <linux/in6.h>
  
  #define ISCSI_NL_GRP_ISCSID	1
  #define ISCSI_NL_GRP_UIP	2
39e84790d   Alex Aizman   [SCSI] open-iscsi...
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  
  #define UEVENT_BASE			10
  #define KEVENT_BASE			100
  #define ISCSI_ERR_BASE			1000
  
  enum iscsi_uevent_e {
  	ISCSI_UEVENT_UNKNOWN		= 0,
  
  	/* down events */
  	ISCSI_UEVENT_CREATE_SESSION	= UEVENT_BASE + 1,
  	ISCSI_UEVENT_DESTROY_SESSION	= UEVENT_BASE + 2,
  	ISCSI_UEVENT_CREATE_CONN	= UEVENT_BASE + 3,
  	ISCSI_UEVENT_DESTROY_CONN	= UEVENT_BASE + 4,
  	ISCSI_UEVENT_BIND_CONN		= UEVENT_BASE + 5,
  	ISCSI_UEVENT_SET_PARAM		= UEVENT_BASE + 6,
  	ISCSI_UEVENT_START_CONN		= UEVENT_BASE + 7,
  	ISCSI_UEVENT_STOP_CONN		= UEVENT_BASE + 8,
  	ISCSI_UEVENT_SEND_PDU		= UEVENT_BASE + 9,
  	ISCSI_UEVENT_GET_STATS		= UEVENT_BASE + 10,
  	ISCSI_UEVENT_GET_PARAM		= UEVENT_BASE + 11,
264faaaa1   Or Gerlitz   [SCSI] iscsi: add...
50
51
52
  	ISCSI_UEVENT_TRANSPORT_EP_CONNECT	= UEVENT_BASE + 12,
  	ISCSI_UEVENT_TRANSPORT_EP_POLL		= UEVENT_BASE + 13,
  	ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT	= UEVENT_BASE + 14,
01cb225da   Mike Christie   [SCSI] iscsi: add...
53
  	ISCSI_UEVENT_TGT_DSCVR		= UEVENT_BASE + 15,
1d9bf13a9   Mike Christie   [SCSI] iscsi clas...
54
  	ISCSI_UEVENT_SET_HOST_PARAM	= UEVENT_BASE + 16,
269747890   Mike Christie   [SCSI] libiscsi: ...
55
  	ISCSI_UEVENT_UNBIND_SESSION	= UEVENT_BASE + 17,
10eb0f013   Mike Christie   [SCSI] iscsi: pas...
56
57
  	ISCSI_UEVENT_CREATE_BOUND_SESSION		= UEVENT_BASE + 18,
  	ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST	= UEVENT_BASE + 19,
01cb225da   Mike Christie   [SCSI] iscsi: add...
58

43514774f   Michael Chan   [SCSI] iscsi clas...
59
  	ISCSI_UEVENT_PATH_UPDATE	= UEVENT_BASE + 20,
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
60
  	ISCSI_UEVENT_SET_IFACE_PARAMS	= UEVENT_BASE + 21,
43514774f   Michael Chan   [SCSI] iscsi clas...
61

39e84790d   Alex Aizman   [SCSI] open-iscsi...
62
63
64
65
  	/* up events */
  	ISCSI_KEVENT_RECV_PDU		= KEVENT_BASE + 1,
  	ISCSI_KEVENT_CONN_ERROR		= KEVENT_BASE + 2,
  	ISCSI_KEVENT_IF_ERROR		= KEVENT_BASE + 3,
53cb8a1f4   Mike Christie   [SCSI] iscsi: add...
66
  	ISCSI_KEVENT_DESTROY_SESSION	= KEVENT_BASE + 4,
269747890   Mike Christie   [SCSI] libiscsi: ...
67
68
  	ISCSI_KEVENT_UNBIND_SESSION	= KEVENT_BASE + 5,
  	ISCSI_KEVENT_CREATE_SESSION	= KEVENT_BASE + 6,
43514774f   Michael Chan   [SCSI] iscsi clas...
69
70
71
  
  	ISCSI_KEVENT_PATH_REQ		= KEVENT_BASE + 7,
  	ISCSI_KEVENT_IF_DOWN		= KEVENT_BASE + 8,
17fa575ee   Manish Rangankar   [SCSI] scsi_trans...
72
  	ISCSI_KEVENT_CONN_LOGIN_STATE   = KEVENT_BASE + 9,
39e84790d   Alex Aizman   [SCSI] open-iscsi...
73
  };
01cb225da   Mike Christie   [SCSI] iscsi: add...
74
75
76
77
78
  enum iscsi_tgt_dscvr {
  	ISCSI_TGT_DSCVR_SEND_TARGETS	= 1,
  	ISCSI_TGT_DSCVR_ISNS		= 2,
  	ISCSI_TGT_DSCVR_SLP		= 3,
  };
39e84790d   Alex Aizman   [SCSI] open-iscsi...
79
80
81
82
83
84
85
86
87
  struct iscsi_uevent {
  	uint32_t type; /* k/u events type */
  	uint32_t iferror; /* carries interface or resource errors */
  	uint64_t transport_handle;
  
  	union {
  		/* messages u -> k */
  		struct msg_create_session {
  			uint32_t	initial_cmdsn;
1548271ec   Mike Christie   [SCSI] libiscsi: ...
88
89
  			uint16_t	cmds_max;
  			uint16_t	queue_depth;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
90
  		} c_session;
40753caa3   Mike Christie   [SCSI] iscsi clas...
91
  		struct msg_create_bound_session {
d82ff9be7   Mike Christie   [SCSI] iscsi clas...
92
  			uint64_t	ep_handle;
40753caa3   Mike Christie   [SCSI] iscsi clas...
93
94
95
96
  			uint32_t	initial_cmdsn;
  			uint16_t	cmds_max;
  			uint16_t	queue_depth;
  		} c_bound_session;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
97
  		struct msg_destroy_session {
39e84790d   Alex Aizman   [SCSI] open-iscsi...
98
99
100
  			uint32_t	sid;
  		} d_session;
  		struct msg_create_conn {
39e84790d   Alex Aizman   [SCSI] open-iscsi...
101
  			uint32_t	sid;
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
102
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
103
104
  		} c_conn;
  		struct msg_bind_conn {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
105
106
  			uint32_t	sid;
  			uint32_t	cid;
264faaaa1   Or Gerlitz   [SCSI] iscsi: add...
107
  			uint64_t	transport_eph;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
108
109
110
  			uint32_t	is_leading;
  		} b_conn;
  		struct msg_destroy_conn {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
111
  			uint32_t	sid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
112
113
114
  			uint32_t	cid;
  		} d_conn;
  		struct msg_send_pdu {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
115
116
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
117
118
  			uint32_t	hdr_size;
  			uint32_t	data_size;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
119
120
  		} send_pdu;
  		struct msg_set_param {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
121
122
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
123
  			uint32_t	param; /* enum iscsi_param */
fd7255f51   Mike Christie   [SCSI] iscsi: add...
124
  			uint32_t	len;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
125
126
  		} set_param;
  		struct msg_start_conn {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
127
128
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
129
130
  		} start_conn;
  		struct msg_stop_conn {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
131
132
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
133
134
135
136
  			uint64_t	conn_handle;
  			uint32_t	flag;
  		} stop_conn;
  		struct msg_get_stats {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
137
138
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
139
  		} get_stats;
264faaaa1   Or Gerlitz   [SCSI] iscsi: add...
140
141
142
  		struct msg_transport_connect {
  			uint32_t	non_blocking;
  		} ep_connect;
10eb0f013   Mike Christie   [SCSI] iscsi: pas...
143
144
145
146
  		struct msg_transport_connect_through_host {
  			uint32_t	host_no;
  			uint32_t	non_blocking;
  		} ep_connect_through_host;
264faaaa1   Or Gerlitz   [SCSI] iscsi: add...
147
148
149
150
151
152
153
  		struct msg_transport_poll {
  			uint64_t	ep_handle;
  			uint32_t	timeout_ms;
  		} ep_poll;
  		struct msg_transport_disconnect {
  			uint64_t	ep_handle;
  		} ep_disconnect;
01cb225da   Mike Christie   [SCSI] iscsi: add...
154
155
156
157
158
159
160
161
162
163
164
  		struct msg_tgt_dscvr {
  			enum iscsi_tgt_dscvr	type;
  			uint32_t	host_no;
  			/*
   			 * enable = 1 to establish a new connection
  			 * with the server. enable = 0 to disconnect
  			 * from the server. Used primarily to switch
  			 * from one iSNS server to another.
  			 */
  			uint32_t	enable;
  		} tgt_dscvr;
1d9bf13a9   Mike Christie   [SCSI] iscsi clas...
165
166
167
168
169
  		struct msg_set_host_param {
  			uint32_t	host_no;
  			uint32_t	param; /* enum iscsi_host_param */
  			uint32_t	len;
  		} set_host_param;
43514774f   Michael Chan   [SCSI] iscsi clas...
170
171
172
  		struct msg_set_path {
  			uint32_t	host_no;
  		} set_path;
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
173
174
175
176
  		struct msg_set_iface_params {
  			uint32_t	host_no;
  			uint32_t	count;
  		} set_iface_params;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
177
178
179
  	} u;
  	union {
  		/* messages k -> u */
39e84790d   Alex Aizman   [SCSI] open-iscsi...
180
181
  		int			retcode;
  		struct msg_create_session_ret {
39e84790d   Alex Aizman   [SCSI] open-iscsi...
182
  			uint32_t	sid;
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
183
  			uint32_t	host_no;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
184
  		} c_session_ret;
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
185
186
187
188
  		struct msg_create_conn_ret {
  			uint32_t	sid;
  			uint32_t	cid;
  		} c_conn_ret;
269747890   Mike Christie   [SCSI] libiscsi: ...
189
190
191
192
  		struct msg_unbind_session {
  			uint32_t	sid;
  			uint32_t	host_no;
  		} unbind_session;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
193
  		struct msg_recv_req {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
194
195
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
196
  			uint64_t	recv_handle;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
197
  		} recv_req;
17fa575ee   Manish Rangankar   [SCSI] scsi_trans...
198
199
200
201
202
  		struct msg_conn_login {
  			uint32_t        sid;
  			uint32_t        cid;
  			uint32_t        state; /* enum iscsi_conn_state */
  		} conn_login;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
203
  		struct msg_conn_error {
b5c7a12dc   Mike Christie   [SCSI] iscsi: rm ...
204
205
  			uint32_t	sid;
  			uint32_t	cid;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
206
207
  			uint32_t	error; /* enum iscsi_err */
  		} connerror;
53cb8a1f4   Mike Christie   [SCSI] iscsi: add...
208
209
210
211
  		struct msg_session_destroyed {
  			uint32_t	host_no;
  			uint32_t	sid;
  		} d_session;
264faaaa1   Or Gerlitz   [SCSI] iscsi: add...
212
213
214
  		struct msg_transport_connect_ret {
  			uint64_t	handle;
  		} ep_connect_ret;
43514774f   Michael Chan   [SCSI] iscsi clas...
215
216
217
218
219
220
  		struct msg_req_path {
  			uint32_t	host_no;
  		} req_path;
  		struct msg_notify_if_down {
  			uint32_t	host_no;
  		} notify_if_down;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
221
222
  	} r;
  } __attribute__ ((aligned (sizeof(uint64_t))));
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
223
224
225
226
227
228
229
230
231
232
233
234
235
236
  enum iscsi_param_type {
  	ISCSI_PARAM,		/* iscsi_param (session, conn, target, LU) */
  	ISCSI_HOST_PARAM,	/* iscsi_host_param */
  	ISCSI_NET_PARAM,	/* iscsi_net_param */
  };
  
  struct iscsi_iface_param_info {
  	uint32_t iface_num;	/* iface number, 0 - n */
  	uint32_t len;		/* Actual length of the param */
  	uint16_t param;		/* iscsi param value */
  	uint8_t iface_type;	/* IPv4 or IPv6 */
  	uint8_t param_type;	/* iscsi_param_type */
  	uint8_t value[0];	/* length sized value follows */
  } __packed;
39e84790d   Alex Aizman   [SCSI] open-iscsi...
237
  /*
43514774f   Michael Chan   [SCSI] iscsi clas...
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
   * To keep the struct iscsi_uevent size the same for userspace code
   * compatibility, the main structure for ISCSI_UEVENT_PATH_UPDATE and
   * ISCSI_KEVENT_PATH_REQ is defined separately and comes after the
   * struct iscsi_uevent in the NETLINK_ISCSI message.
   */
  struct iscsi_path {
  	uint64_t	handle;
  	uint8_t		mac_addr[6];
  	uint8_t		mac_addr_old[6];
  	uint32_t	ip_addr_len;	/* 4 or 16 */
  	union {
  		struct in_addr	v4_addr;
  		struct in6_addr	v6_addr;
  	} src;
  	union {
  		struct in_addr	v4_addr;
  		struct in6_addr	v6_addr;
  	} dst;
  	uint16_t	vlan_id;
  	uint16_t	pmtu;
  } __attribute__ ((aligned (sizeof(uint64_t))));
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
  /* iscsi iface enabled/disabled setting */
  #define ISCSI_IFACE_DISABLE	0x01
  #define ISCSI_IFACE_ENABLE	0x02
  
  /* ipv4 bootproto */
  #define ISCSI_BOOTPROTO_STATIC		0x01
  #define ISCSI_BOOTPROTO_DHCP		0x02
  
  /* ipv6 addr autoconfig type */
  #define ISCSI_IPV6_AUTOCFG_DISABLE		0x01
  #define ISCSI_IPV6_AUTOCFG_ND_ENABLE		0x02
  #define ISCSI_IPV6_AUTOCFG_DHCPV6_ENABLE	0x03
  
  /* ipv6 link local addr type */
  #define ISCSI_IPV6_LINKLOCAL_AUTOCFG_ENABLE	0x01
  #define ISCSI_IPV6_LINKLOCAL_AUTOCFG_DISABLE	0x02
  
  /* ipv6 router addr type */
  #define ISCSI_IPV6_ROUTER_AUTOCFG_ENABLE	0x01
  #define ISCSI_IPV6_ROUTER_AUTOCFG_DISABLE	0x02
  
  #define ISCSI_IFACE_TYPE_IPV4		0x01
  #define ISCSI_IFACE_TYPE_IPV6		0x02
4223b9e91   Mike Christie   [SCSI] iscsi clas...
282
283
284
285
286
287
  #define ISCSI_MAX_VLAN_ID		4095
  #define ISCSI_MAX_VLAN_PRIORITY		7
  
  /* iscsi vlan enable/disabled setting */
  #define ISCSI_VLAN_DISABLE	0x01
  #define ISCSI_VLAN_ENABLE	0x02
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
  /* iSCSI network params */
  enum iscsi_net_param {
  	ISCSI_NET_PARAM_IPV4_ADDR		= 1,
  	ISCSI_NET_PARAM_IPV4_SUBNET		= 2,
  	ISCSI_NET_PARAM_IPV4_GW			= 3,
  	ISCSI_NET_PARAM_IPV4_BOOTPROTO		= 4,
  	ISCSI_NET_PARAM_MAC			= 5,
  	ISCSI_NET_PARAM_IPV6_LINKLOCAL		= 6,
  	ISCSI_NET_PARAM_IPV6_ADDR		= 7,
  	ISCSI_NET_PARAM_IPV6_ROUTER		= 8,
  	ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG	= 9,
  	ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG	= 10,
  	ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG	= 11,
  	ISCSI_NET_PARAM_IFACE_ENABLE		= 12,
  	ISCSI_NET_PARAM_VLAN_ID			= 13,
4223b9e91   Mike Christie   [SCSI] iscsi clas...
303
304
  	ISCSI_NET_PARAM_VLAN_PRIORITY		= 14,
  	ISCSI_NET_PARAM_VLAN_ENABLED		= 15,
2d63673b4   Mike Christie   [SCSI] iscsi clas...
305
306
307
308
309
  	ISCSI_NET_PARAM_VLAN_TAG		= 16,
  	ISCSI_NET_PARAM_IFACE_TYPE		= 17,
  	ISCSI_NET_PARAM_IFACE_NAME		= 18,
  	ISCSI_NET_PARAM_MTU			= 19,
  	ISCSI_NET_PARAM_PORT			= 20,
56c155b5c   Mike Christie   [SCSI] iscsi_tran...
310
  };
17fa575ee   Manish Rangankar   [SCSI] scsi_trans...
311
312
313
314
315
316
317
318
319
  enum iscsi_conn_state {
  	ISCSI_CONN_STATE_FREE,
  	ISCSI_CONN_STATE_XPT_WAIT,
  	ISCSI_CONN_STATE_IN_LOGIN,
  	ISCSI_CONN_STATE_LOGGED_IN,
  	ISCSI_CONN_STATE_IN_LOGOUT,
  	ISCSI_CONN_STATE_LOGOUT_REQUESTED,
  	ISCSI_CONN_STATE_CLEANUP_WAIT,
  };
43514774f   Michael Chan   [SCSI] iscsi clas...
320
  /*
39e84790d   Alex Aizman   [SCSI] open-iscsi...
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
   * Common error codes
   */
  enum iscsi_err {
  	ISCSI_OK			= 0,
  
  	ISCSI_ERR_DATASN		= ISCSI_ERR_BASE + 1,
  	ISCSI_ERR_DATA_OFFSET		= ISCSI_ERR_BASE + 2,
  	ISCSI_ERR_MAX_CMDSN		= ISCSI_ERR_BASE + 3,
  	ISCSI_ERR_EXP_CMDSN		= ISCSI_ERR_BASE + 4,
  	ISCSI_ERR_BAD_OPCODE		= ISCSI_ERR_BASE + 5,
  	ISCSI_ERR_DATALEN		= ISCSI_ERR_BASE + 6,
  	ISCSI_ERR_AHSLEN		= ISCSI_ERR_BASE + 7,
  	ISCSI_ERR_PROTO			= ISCSI_ERR_BASE + 8,
  	ISCSI_ERR_LUN			= ISCSI_ERR_BASE + 9,
  	ISCSI_ERR_BAD_ITT		= ISCSI_ERR_BASE + 10,
  	ISCSI_ERR_CONN_FAILED		= ISCSI_ERR_BASE + 11,
  	ISCSI_ERR_R2TSN			= ISCSI_ERR_BASE + 12,
  	ISCSI_ERR_SESSION_FAILED	= ISCSI_ERR_BASE + 13,
  	ISCSI_ERR_HDR_DGST		= ISCSI_ERR_BASE + 14,
  	ISCSI_ERR_DATA_DGST		= ISCSI_ERR_BASE + 15,
7996a778f   Mike Christie   [SCSI] iscsi: add...
341
342
  	ISCSI_ERR_PARAM_NOT_FOUND	= ISCSI_ERR_BASE + 16,
  	ISCSI_ERR_NO_SCSI_CMD		= ISCSI_ERR_BASE + 17,
e5bd7b54e   Mike Christie   [SCSI] libiscsi: ...
343
  	ISCSI_ERR_INVALID_HOST		= ISCSI_ERR_BASE + 18,
6f481e3ce   Mike Christie   [SCSI] iscsi_tcp:...
344
  	ISCSI_ERR_XMIT_FAILED		= ISCSI_ERR_BASE + 19,
d1af8a328   Mike Christie   [SCSI] iscsi_tcp:...
345
  	ISCSI_ERR_TCP_CONN_CLOSE	= ISCSI_ERR_BASE + 20,
df4da5cdf   Mike Christie   [SCSI] libiscsi: ...
346
  	ISCSI_ERR_SCSI_EH_SESSION_RST	= ISCSI_ERR_BASE + 21,
39e84790d   Alex Aizman   [SCSI] open-iscsi...
347
348
349
350
351
352
  };
  
  /*
   * iSCSI Parameters (RFC3720)
   */
  enum iscsi_param {
fd7255f51   Mike Christie   [SCSI] iscsi: add...
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
  	/* passed in using netlink set param */
  	ISCSI_PARAM_MAX_RECV_DLENGTH,
  	ISCSI_PARAM_MAX_XMIT_DLENGTH,
  	ISCSI_PARAM_HDRDGST_EN,
  	ISCSI_PARAM_DATADGST_EN,
  	ISCSI_PARAM_INITIAL_R2T_EN,
  	ISCSI_PARAM_MAX_R2T,
  	ISCSI_PARAM_IMM_DATA_EN,
  	ISCSI_PARAM_FIRST_BURST,
  	ISCSI_PARAM_MAX_BURST,
  	ISCSI_PARAM_PDU_INORDER_EN,
  	ISCSI_PARAM_DATASEQ_INORDER_EN,
  	ISCSI_PARAM_ERL,
  	ISCSI_PARAM_IFMARKER_EN,
  	ISCSI_PARAM_OFMARKER_EN,
8d2860b3c   Mike Christie   [SCSI] iscsi: inc...
368
  	ISCSI_PARAM_EXP_STATSN,
fd7255f51   Mike Christie   [SCSI] iscsi: add...
369
370
371
372
  	ISCSI_PARAM_TARGET_NAME,
  	ISCSI_PARAM_TPGT,
  	ISCSI_PARAM_PERSISTENT_ADDRESS,
  	ISCSI_PARAM_PERSISTENT_PORT,
30a6c6523   Mike Christie   [SCSI] iscsi: fix...
373
  	ISCSI_PARAM_SESS_RECOVERY_TMO,
fd7255f51   Mike Christie   [SCSI] iscsi: add...
374

25985edce   Lucas De Marchi   Fix common misspe...
375
  	/* passed in through bind conn using transport_fd */
fd7255f51   Mike Christie   [SCSI] iscsi: add...
376
377
  	ISCSI_PARAM_CONN_PORT,
  	ISCSI_PARAM_CONN_ADDRESS,
b2c641673   Mike Christie   [SCSI] iscsi clas...
378
379
380
381
  	ISCSI_PARAM_USERNAME,
  	ISCSI_PARAM_USERNAME_IN,
  	ISCSI_PARAM_PASSWORD,
  	ISCSI_PARAM_PASSWORD_IN,
843c0a8a7   Mike Christie   [SCSI] libiscsi, ...
382
  	ISCSI_PARAM_FAST_ABORT,
f6d5180c7   Mike Christie   [SCSI] libiscsi: ...
383
384
385
386
387
388
  	ISCSI_PARAM_ABORT_TMO,
  	ISCSI_PARAM_LU_RESET_TMO,
  	ISCSI_PARAM_HOST_RESET_TMO,
  
  	ISCSI_PARAM_PING_TMO,
  	ISCSI_PARAM_RECV_TMO,
88dfd340b   Mike Christie   [SCSI] iscsi clas...
389
390
391
392
  
  	ISCSI_PARAM_IFACE_NAME,
  	ISCSI_PARAM_ISID,
  	ISCSI_PARAM_INITIATOR_NAME,
3fe5ae8b4   Mike Christie   [SCSI] libiscsi: ...
393
394
  
  	ISCSI_PARAM_TGT_RESET_TMO,
3b2bef1fc   Vikas Chaudhary   [SCSI] iscsi_tran...
395
  	ISCSI_PARAM_TARGET_ALIAS,
fd7255f51   Mike Christie   [SCSI] iscsi: add...
396
397
  	/* must always be last */
  	ISCSI_PARAM_MAX,
39e84790d   Alex Aizman   [SCSI] open-iscsi...
398
  };
fd7255f51   Mike Christie   [SCSI] iscsi: add...
399

1819dc814   Mike Christie   [SCSI] iscsi_tran...
400
401
402
  /* iSCSI HBA params */
  enum iscsi_host_param {
  	ISCSI_HOST_PARAM_HWADDRESS,
8ad5781ae   Mike Christie   [SCSI] iscsi clas...
403
  	ISCSI_HOST_PARAM_INITIATOR_NAME,
d8196ed21   Mike Christie   [SCSI] iscsi clas...
404
  	ISCSI_HOST_PARAM_NETDEV_NAME,
222369619   Mike Christie   [SCSI] iscsi clas...
405
  	ISCSI_HOST_PARAM_IPADDRESS,
1819dc814   Mike Christie   [SCSI] iscsi_tran...
406
407
  	ISCSI_HOST_PARAM_MAX,
  };
39e84790d   Alex Aizman   [SCSI] open-iscsi...
408
409
  #define iscsi_ptr(_handle) ((void*)(unsigned long)_handle)
  #define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr)
39e84790d   Alex Aizman   [SCSI] open-iscsi...
410
411
412
413
414
415
416
417
418
419
420
421
422
  
  /*
   * These flags presents iSCSI Data-Path capabilities.
   */
  #define CAP_RECOVERY_L0		0x1
  #define CAP_RECOVERY_L1		0x2
  #define CAP_RECOVERY_L2		0x4
  #define CAP_MULTI_R2T		0x8
  #define CAP_HDRDGST		0x10
  #define CAP_DATADGST		0x20
  #define CAP_MULTI_CONN		0x40
  #define CAP_TEXT_NEGO		0x80
  #define CAP_MARKERS		0x100
0ab823db8   Mike Christie   [SCSI] qla4xxx: a...
423
  #define CAP_FW_DB		0x200
63c62f1cb   Mike Christie   [SCSI] iscsi_tcp:...
424
425
426
  #define CAP_SENDTARGETS_OFFLOAD	0x400	/* offload discovery process */
  #define CAP_DATA_PATH_OFFLOAD	0x800	/* offload entire IO path */
  #define CAP_DIGEST_OFFLOAD	0x1000	/* offload hdr and data digests */
6df19a791   Mike Christie   [SCSI] libiscsi_t...
427
428
  #define CAP_PADDING_OFFLOAD	0x2000	/* offload padding insertion, removal,
  					 and verification */
17fa575ee   Manish Rangankar   [SCSI] scsi_trans...
429
  #define CAP_LOGIN_OFFLOAD	0x4000  /* offload session login */
39e84790d   Alex Aizman   [SCSI] open-iscsi...
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
  
  /*
   * These flags describes reason of stop_conn() call
   */
  #define STOP_CONN_TERM		0x1
  #define STOP_CONN_SUSPEND	0x2
  #define STOP_CONN_RECOVER	0x3
  
  #define ISCSI_STATS_CUSTOM_MAX		32
  #define ISCSI_STATS_CUSTOM_DESC_MAX	64
  struct iscsi_stats_custom {
  	char desc[ISCSI_STATS_CUSTOM_DESC_MAX];
  	uint64_t value;
  };
  
  /*
   * struct iscsi_stats - iSCSI Statistics (iSCSI MIB)
   *
   * Note: this structure contains counters collected on per-connection basis.
   */
  struct iscsi_stats {
  	/* octets */
  	uint64_t txdata_octets;
  	uint64_t rxdata_octets;
  
  	/* xmit pdus */
  	uint32_t noptx_pdus;
  	uint32_t scsicmd_pdus;
  	uint32_t tmfcmd_pdus;
  	uint32_t login_pdus;
  	uint32_t text_pdus;
  	uint32_t dataout_pdus;
  	uint32_t logout_pdus;
  	uint32_t snack_pdus;
  
  	/* recv pdus */
  	uint32_t noprx_pdus;
  	uint32_t scsirsp_pdus;
  	uint32_t tmfrsp_pdus;
  	uint32_t textrsp_pdus;
  	uint32_t datain_pdus;
  	uint32_t logoutrsp_pdus;
  	uint32_t r2t_pdus;
  	uint32_t async_pdus;
  	uint32_t rjt_pdus;
  
  	/* errors */
  	uint32_t digest_err;
  	uint32_t timeout_err;
  
  	/*
  	 * iSCSI Custom Statistics support, i.e. Transport could
  	 * extend existing MIB statistics with its own specific statistics
  	 * up to ISCSI_STATS_CUSTOM_MAX
  	 */
  	uint32_t custom_length;
  	struct iscsi_stats_custom custom[0]
  		__attribute__ ((aligned (sizeof(uint64_t))));
  };
  
  #endif