Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_common.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2015, Emulex
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its contributors
16  * may be used to endorse or promote products derived from this software
17  * without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  */
32 
33 /**
34  * @file
35  * Contains declarations shared between the alex layer and HAL/SLI4
36  */
37 
38 #if !defined(__OCS_COMMON_H__)
39 #define __OCS_COMMON_H__
40 
41 #include "ocs_common_shared.h"
42 #include "ocs_os.h"
43 #include "ocs_sm.h"
44 
46 
47 #define OCS_CHAP_CHALLENGE_SIZE 16
48 
49 #define OCS_DISPLAY_NAME_LENGTH 32
50 /* scsi_stub decls */
51 typedef struct ocs_domain_s ocs_domain_t;
52 typedef struct ocs_sli_port_s ocs_sli_port_t;
53 typedef struct ocs_sli_port_s ocs_sport_t;
54 typedef struct ocs_xport_s ocs_xport_t;
55 typedef struct ocs_session_s ocs_session_t;
56 typedef struct ocs_cxn_q_cbit_s ocs_cxn_q_cbit_t;
57 
58 /* Use the cxn structure for the ramdisk node */
59 typedef struct ocs_cxn_s ocs_node_t;
60 typedef struct ocs_io_s ocs_io_t;
61 typedef struct ocs_cxn_s ocs_cxn_t;
62 
63 struct ocs_hal_rq_buffer_s;
64 
65 #include "ocs_scsi_ini.h"
66 #include "ocs_scsi_tgt.h"
67 
68 /***************************************************************************
69  * Shared HAL/SLI objects
70  *
71  * Several objects used by the HAL/SLI layers are communal; part of the
72  * object is for the sole use of the lower layers, but implementations
73  * are free to add their own fields if desired.
74  */
75 
76 /**
77  * @brief SLI Port object
78  *
79  * The SLI Port object represents the connection between the driver and the
80  * FC/FCoE domain. In some topologies / hardware, it is possible to have
81  * multiple connections to the domain via different WWN. Each would require
82  * a separate SLI port object.
83  */
85  ocs_t *ocs; /**< pointer to ocs */
86  uint32_t tgt_id; /**< target id */
87  uint32_t index; /**< ??? */
88  uint32_t instance_index;
89  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< sport display name */
90  ocs_domain_t *domain; /**< current fabric domain */
91  uint32_t is_vport:1; /**< this SPORT is a virtual port */
92  uint64_t wwpn; /**< WWPN from HAL (host endian) */
93  uint64_t wwnn; /**< WWNN from HAL (host endian) */
94  ocs_list_t node_list; /**< list of nodes */
95  ocs_scsi_ini_sport_t ini_sport; /**< initiator backend private sport data */
96  ocs_scsi_tgt_sport_t tgt_sport; /**< target backend private sport data */
97  void *tgt_data; /**< target backend private pointer */
98  void *ini_data; /**< initiator backend private pointer */
100 
101  /*
102  * Implementation specific fields allowed here
103  */
104 
105  /* Declarations shared with back-ends */
107  ocs_rlock_t lock; /**< node wide lock */
108 
109  uint8_t mac[6];
110  uint8_t mac_str[13];
111 
112  /* SPORT object state to associate for a new target. */
113  bool created;
114 };
115 
116 static inline void ocs_sport_lock_init(ocs_sport_t *sport)
117 {
118  ocs_rlock_init(sport->ocs, &sport->lock, "sport rlock");
119 }
120 
121 static inline void ocs_sport_lock_free(ocs_sport_t *sport)
122 {
123  ocs_rlock_free(&sport->lock);
124 }
125 
126 static inline int32_t ocs_sport_lock_try(ocs_sport_t *sport)
127 {
128  return ocs_rlock_try(&sport->lock);
129 }
130 
131 static inline void ocs_sport_lock(ocs_sport_t *sport)
132 {
133  ocs_rlock_acquire(&sport->lock);
134 }
135 
136 static inline void ocs_sport_unlock(ocs_sport_t *sport)
137 {
138  ocs_rlock_release(&sport->lock);
139 }
140 
141 
142 
143 /**
144  * @brief iSCSI domain object
145  *
146  * This object is a container for the various SLI components needed
147  * to connect to the domain of a FC or FCoE switch
148  */
149 struct ocs_domain_s {
150 
151  ocs_t *ocs; /**< pointer back to ocs */
152  uint32_t instance_index; /**< unique instance index value */
153  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< Node display name */
154  ocs_list_t sport_list; /**< linked list of SLI ports */
155  ocs_scsi_ini_domain_t ini_domain; /**< initiator backend private domain data */
156  ocs_scsi_tgt_domain_t tgt_domain; /**< target backend private domain data */
158 
159  /*
160  * Members private to HAL/SLI
161  */
162  uint32_t sport_instance_count; /**< count of sport instances */
163  uint32_t node_instance_count; /**< count of node instances */
164 
165  /* Declarations shared with back-ends */
166  ocs_rlock_t lock; /**< node wide lock */
168  ocs_sli_port_t *sport; /**< Pointer to associated SLI port object */
169 };
170 
171 static inline void ocs_domain_lock_init(ocs_domain_t *domain)
172 {
173  ocs_rlock_init(domain->ocs, &domain->lock, "domain rlock");
174 }
175 
176 static inline void ocs_domain_lock_free(ocs_domain_t *domain)
177 {
178  ocs_rlock_free(&domain->lock);
179 }
180 
181 static inline int32_t ocs_domain_lock_try(ocs_domain_t *domain)
182 {
183  return ocs_rlock_try(&domain->lock);
184 }
185 
186 static inline void ocs_domain_lock(ocs_domain_t *domain)
187 {
188  ocs_rlock_acquire(&domain->lock);
189 }
190 
191 static inline void ocs_domain_unlock(ocs_domain_t *domain)
192 {
193  ocs_rlock_release(&domain->lock);
194 
195 }
196 
197 /***************************************************************************
198  * Shared HAL/SLI objects
199  *
200  * Several objects used by the HAL/SLI layers are communal; part of the
201  * object is for the sole use of the lower layers, but implementations
202  * are free to add their own fields if desired.
203  */
204 typedef uint32_t ocs_hal_portal_t;
205 
206 /**
207  * @brief SESSION_LOGIN_OPTIONS
208  *
209  * Structure to represent an iSCSI login parameters shared in a session.
210  */
211 typedef struct ocs_session_login_options_s {
212  uint8_t initial_r2t:1;
213  uint8_t immediate_data:1;
214  uint8_t data_pdu_in_order:1;
215  uint8_t data_sequence_in_order:1;
217  uint32_t first_burst;
218  uint32_t max_burst;
219  uint16_t max_connections;
220  uint16_t max_r2t;
224 
225 /**
226  * @brief Defines the parameters passed to the target unsolicted PDU handler.
227  */
228 typedef struct ocs_session_q_unsol_s{
229  ocs_list_link_t link; //OCS_DECL_LIST_LINK(ocs_session_q_unsol_s) link;
230  struct ocs_cxn_s *cxn;
231  struct ocs_hal_rq_buffer_s *hdr;
232  struct ocs_hal_rq_buffer_s *data;
233  uint32_t cmd_sn;
234  uint32_t hdr_len;
235  uint32_t data_len;
236  uint8_t code;
237  uint8_t aborted; /* Aborted via TM, kept for cmdsn processing */
239 
240 #define OCS_MAX_ISCSI_NAME 256
241 #define OCS_IQN_SUFFIX_DEFAULT "default"
242 /**
243  * @brief iSCSI Session object
244  *
245  * The session object represents the IT Nexus between the initiator and the
246  * target. It is possible to have multiple connections in the same session.
247  */
250 
251  ocs_t *ocs; /* pointer back to ocs */
252  void *iscsi; /* Pointer back to the driver iscsi object */
253  uint32_t instance_index;
255  uint8_t is_removed;
256 
257 
258  /* Used to store the remote iscsi name */
261 
262  uint64_t isid;
263  uint16_t tsih;
265  uint32_t cmd_sn;
266  uint32_t cmd_window;
267  uint32_t exp_cmd_sn;
268  uint32_t max_cmd_sn;
269 
270  ocs_list_t cxn_list;
271 
272  /* Fields to queue out of order cmd_sns */
273  ocs_lock_t cmd_q_lock;
275  ocs_list_t cmd_q_waiting;
276  ocs_list_t cmd_q_free;
278  ocs_timer_t cmd_q_timer;
279 };
280 
281 typedef int32_t (*ocs_unsol_cb_t)(void*, ocs_cxn_t*, struct ocs_hal_rq_buffer_s*, uint32_t, struct ocs_hal_rq_buffer_s*, uint32_t, uint8_t);
282 
283 /**
284  * @brief List object to hold PDUs with continue bit set during login and
285  * text negotiation.
286  *
287  * This structure is used to store the intermediate buffers until the entire
288  * message is received.
289  */
292  struct ocs_hal_rq_buffer_s *hdr;
293  struct ocs_hal_rq_buffer_s *data;
294  uint16_t data_len;
295 };
296 
297 /**
298  * @brief Connection object
299  *
300  * The connection object represents the connection between the driver and the
301  * remote port. It is possible to have multiple connections to the same remote
302  * port.
303  */
304 struct ocs_cxn_s {
305 
306  ocs_t *ocs; /**< pointer back to ocs structure */
307  uint32_t instance_index; /**< unique instance index value */
308  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< Node display name */
309  ocs_sport_t *sport;
310  uint32_t hold_frames:1; /**< hold incoming frames if true */
311  ocs_rlock_t lock; /**< node wide lock */
312  ocs_lock_t active_ios_lock; /**< active SCSI and XPORT I/O's for this node */
313  ocs_list_t active_ios; /**< active I/O's for this node */
314  uint32_t max_wr_xfer_size; /**< Max write IO size per phase for the transport */
315  ocs_scsi_ini_node_t ini_node; /**< backend initiator private node data */
316  ocs_scsi_tgt_node_t tgt_node; /**< backend target private node data */
318 
319  /*
320  * Members private to HAL/SLI
321  */
324  ocs_sm_ctx_t sm;
325  ocs_timer_t sm_retry_timer;
326  uint32_t conn_hdl;
327  uint16_t wq_id;
328  uint16_t wq_index;
329  uint16_t cq_index;
330  ocs_dma_t dataout_tmpl;
331  uint16_t cid;
332  uint16_t rqindex;
333 
334  uint32_t hdr_digest:1,
335  data_digest:1;
336  uint32_t max_rcv_dsl;
337  uint32_t max_xmit_dsl;
338 
339  /* Used to cache the header buffer until the data buffer is posted. */
341  struct ocs_hal_rq_buffer_s *hdr_buf;
342  uint16_t hdr_length;
343 
344  /*
345  * Members Filled in by ocs_hal_cxn_get_info()
346  */
347  uint8_t source_ip_type;
348  uint8_t source_ip[16];
349  uint16_t source_port;
350  uint8_t dest_ip_type;
351  uint8_t dest_ip[16];
352  uint16_t dest_port;
353  uint32_t tcp_mss;
354  uint8_t tcp_wscale;
355 
356  /*
357  * Members shared by the HAL/SLI with the host
358  */
359 
360  /* Declarations shared with back-ends */
361  ocs_session_t *session;
362  uint8_t is_ini_cxn;
363 
364  /*
365  * Implementation specific fields allowed here
366  */
367  void *iscsi; /* Pointer back to the driver iscsi object */
368  ocs_dma_t login_hdr_mem;
369  ocs_dma_t login_data_mem;
370  ocs_atomic_t login_mem_in_use;
371  uint8_t cxn_state;
375  uint8_t logout_rsp;
376  uint32_t logout_itt;
377  uint8_t sendRst; /* Used when closing the connection */
378  uint8_t idle_count; /* Used to send NOPs */
379  uint64_t lgn_parms_sent; /* Bit mask for tracking keys */
380  uint64_t lgn_parms_recv;
381  uint32_t stat_sn;
382  uint8_t no_idle_timer;
383 
384  /* Used to cleanup aborted commands */
385  ocs_list_t aborted_ios; /**< aborted I/O's for this node */
386  ocs_atomic_t nop_abort_counter;
388 
389  /* Fields used for Continue bit processing */
390  ocs_list_t cbit_list; /* use ocs_node_lock */
391  char *cbit_recv;
392  uint32_t cbit_recv_len;
393  char *cbit_rsp;
395  uint32_t cbit_rsp_len;
396  uint32_t cbit_rsp_offset;
397 
398  /* Chap Login Fields */
399  uint8_t use_chap;
400  uint32_t chap_state;
408 
409  /* FFP Text Negotiation */
411  uint32_t ffp_itt;
412  ocs_timer_t ffp_timer;
413  uint8_t text_hdr[48]; /* Used to send reject on negotiation timeout */
414 
415 };
416 
417 static inline void ocs_node_lock_init(ocs_node_t *node)
418 {
419  ocs_rlock_init(node->ocs, &node->lock, "node rlock");
420 }
421 
422 static inline void ocs_node_lock_free(ocs_node_t *node)
423 {
424  ocs_rlock_free(&node->lock);
425 }
426 
427 static inline int32_t ocs_node_lock_try(ocs_node_t *node)
428 {
429  return ocs_rlock_try(&node->lock);
430 }
431 
432 static inline void ocs_node_lock(ocs_node_t *node)
433 {
434  ocs_rlock_acquire(&node->lock);
435 }
436 
437 static inline void ocs_node_unlock(ocs_node_t *node)
438 {
439  ocs_rlock_release(&node->lock);
440 }
441 
442 
443 #endif // __OCS_COMMON_H__
uint32_t cbit_rsp_alloc_size
Definition: ocs_common.h:394
uint8_t data_digest_error
Definition: ocs_common.h:340
static int32_t ocs_sport_lock_try(ocs_sport_t *sport)
Definition: ocs_common.h:126
uint16_t hdr_length
Definition: ocs_common.h:342
void * ini_data
Definition: ocs_common.h:98
void * iscsi
Definition: ocs_common.h:252
uint32_t data_digest
Definition: ocs_common.h:334
static void ocs_sport_unlock(ocs_sport_t *sport)
Definition: ocs_common.h:136
ocs_list_t cmd_q_free
Definition: ocs_common.h:276
uint64_t lgn_parms_sent
Definition: ocs_common.h:379
uint8_t use_chap
Definition: ocs_common.h:399
static int32_t ocs_domain_lock_try(ocs_domain_t *domain)
Definition: ocs_common.h:181
ocs_scsi_ini_sport_t ini_sport
Definition: ocs_common.h:95
ocs_list_link_t link
Definition: ocs_common.h:249
ocs_list_t ocs_list_link_t
Definition: ocs_list.h:84
ocs_list_link_t link
Definition: ocs_common.h:106
struct ocs_hal_rq_buffer_s * hdr
Definition: ocs_common.h:292
uint16_t cid
Definition: ocs_common.h:331
iSCSI domain object
Definition: ocs_common.h:149
ocs_list_t cxn_list
Definition: ocs_common.h:270
uint8_t source_ip_type
Definition: ocs_common.h:347
uint32_t exp_cmd_sn
Definition: ocs_common.h:267
uint32_t hdr_digest
Definition: ocs_common.h:334
ocs_dma_t login_data_mem
Definition: ocs_common.h:369
static void ocs_sport_lock(ocs_sport_t *sport)
Definition: ocs_common.h:131
uint32_t max_xmit_dsl
Definition: ocs_common.h:337
List object to hold PDUs with continue bit set during login and text negotiation. ...
Definition: ocs_common.h:290
uint32_t cmd_window
Definition: ocs_common.h:266
uint32_t is_vport
Definition: ocs_common.h:91
uint32_t instance_index
Definition: ocs_common.h:88
uint16_t data_len
Definition: ocs_common.h:294
char * chap_name_send
Definition: ocs_common.h:407
uint32_t stat_sn
Definition: ocs_common.h:381
target private node structure
Definition: ocs_scsi_tgt.h:130
uint32_t logout_itt
Definition: ocs_common.h:376
ocs_atomic_t nop_abort_counter
Definition: ocs_common.h:386
uint8_t idle_count
Definition: ocs_common.h:378
uint8_t text_hdr[48]
Definition: ocs_common.h:413
uint32_t max_wr_xfer_size
Definition: ocs_common.h:314
char * cbit_recv
Definition: ocs_common.h:391
target private domain structure
Definition: ocs_scsi_tgt.h:80
char * chap_response
Definition: ocs_common.h:405
uint8_t mac_str[13]
Definition: ocs_common.h:110
uint8_t chap_challenge_sent[OCS_CHAP_CHALLENGE_SIZE]
Definition: ocs_common.h:402
ocs_list_link_t sess_link
Definition: ocs_common.h:323
target private sport structure
Definition: ocs_scsi_tgt.h:89
uint16_t dest_port
Definition: ocs_common.h:352
uint8_t cxn_state
Definition: ocs_common.h:371
ocs_scsi_tgt_domain_t tgt_domain
Definition: ocs_common.h:156
uint8_t is_removed
Definition: ocs_common.h:255
struct ocs_hal_rq_buffer_s * hdr_buf
Definition: ocs_common.h:341
ocs_session_t * session
Definition: ocs_common.h:361
ocs_dma_t login_hdr_mem
Definition: ocs_common.h:368
ocs_t * ocs
Definition: ocs_common.h:85
ocs_sm_ctx_t sm
Definition: ocs_common.h:324
ocs_session_login_options_t login_options
Definition: ocs_common.h:264
uint32_t ocs_hal_portal_t
Definition: ocs_common.h:204
uint32_t instance_index
Definition: ocs_common.h:152
uint32_t cmd_sn
Definition: ocs_common.h:265
uint32_t conn_hdl
Definition: ocs_common.h:326
ocs_domain_t * domain
Definition: ocs_common.h:90
ocs_dma_t dataout_tmpl
Definition: ocs_common.h:330
uint64_t isid
Definition: ocs_common.h:262
uint64_t wwnn
Definition: ocs_common.h:93
uint16_t wq_index
Definition: ocs_common.h:328
ocs_session_q_unsol_t * cmd_q
Definition: ocs_common.h:274
struct ocs_hal_rq_buffer_s * hdr
Definition: ocs_common.h:231
ocs_list_t active_ios
Definition: ocs_common.h:313
ocs_scsi_tgt_sport_t tgt_sport
Definition: ocs_common.h:96
uint8_t source_ip[16]
Definition: ocs_common.h:348
uint32_t max_cmd_sn
Definition: ocs_common.h:268
char * chap_challenge_recv
Definition: ocs_common.h:404
uint64_t lgn_parms_recv
Definition: ocs_common.h:380
uint8_t mac[6]
Definition: ocs_common.h:109
char ini_name[OCS_MAX_ISCSI_NAME]
Definition: ocs_common.h:260
uint8_t dest_ip_type
Definition: ocs_common.h:350
uint8_t is_first_login_rsp
Definition: ocs_common.h:373
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:99
ocs_t * ocs
Definition: ocs_common.h:151
static void ocs_sport_lock_init(ocs_sport_t *sport)
Definition: ocs_common.h:116
uint16_t source_port
Definition: ocs_common.h:349
uint8_t chap_ident_recv
Definition: ocs_common.h:403
uint32_t cbit_rsp_offset
Definition: ocs_common.h:396
iSCSI Session object
Definition: ocs_common.h:248
ocs_sport_t * sport
Definition: ocs_common.h:309
char * cbit_rsp
Definition: ocs_common.h:393
uint32_t instance_index
Definition: ocs_common.h:253
SLI Port object.
Definition: ocs_common.h:84
ocs_timer_t ffp_timer
Definition: ocs_common.h:412
Defines the parameters passed to the target unsolicted PDU handler.
Definition: ocs_common.h:228
uint8_t ffp_is_neg_active
Definition: ocs_common.h:410
ocs_list_t node_list
Definition: ocs_common.h:94
ocs_scsi_ini_domain_t ini_domain
Definition: ocs_common.h:155
ocs_t * ocs
Definition: ocs_common.h:306
uint8_t tcp_wscale
Definition: ocs_common.h:354
uint16_t tsih
Definition: ocs_common.h:263
uint8_t is_leading_login
Definition: ocs_common.h:372
static void ocs_node_lock_init(ocs_node_t *node)
Definition: ocs_common.h:417
uint32_t tcp_mss
Definition: ocs_common.h:353
ocs_list_t sport_list
Definition: ocs_common.h:154
uint16_t rqindex
Definition: ocs_common.h:332
uint32_t ffp_itt
Definition: ocs_common.h:411
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:308
static void ocs_domain_lock_init(ocs_domain_t *domain)
Definition: ocs_common.h:171
uint32_t chap_state
Definition: ocs_common.h:400
ocs_list_t aborted_ios
Definition: ocs_common.h:385
ocs_list_link_t link
Definition: ocs_common.h:322
static int32_t ocs_node_lock_try(ocs_node_t *node)
Definition: ocs_common.h:427
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:89
uint32_t node_instance_count
Definition: ocs_common.h:163
uint16_t cq_index
Definition: ocs_common.h:329
struct ocs_hal_rq_buffer_s * data
Definition: ocs_common.h:293
uint32_t sport_instance_count
Definition: ocs_common.h:162
ocs_rlock_t lock
Definition: ocs_common.h:107
ocs_sli_port_t * sport
Definition: ocs_common.h:168
void * iscsi
Definition: ocs_common.h:367
static void ocs_domain_lock_free(ocs_domain_t *domain)
Definition: ocs_common.h:176
ocs_scsi_tgt_node_t tgt_node
Definition: ocs_common.h:316
static void ocs_node_lock_free(ocs_node_t *node)
Definition: ocs_common.h:422
SESSION_LOGIN_OPTIONS.
Definition: ocs_common.h:211
uint32_t cbit_recv_len
Definition: ocs_common.h:392
uint32_t hold_frames
Definition: ocs_common.h:310
Connection object.
Definition: ocs_common.h:304
ocs_list_t cmd_q_waiting
Definition: ocs_common.h:275
static void ocs_sport_lock_free(ocs_sport_t *sport)
Definition: ocs_common.h:121
ocs_list_link_t link
Definition: ocs_common.h:229
static void ocs_node_lock(ocs_node_t *node)
Definition: ocs_common.h:432
uint8_t is_discovery_session
Definition: ocs_common.h:254
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:153
char * chap_name_recv
Definition: ocs_common.h:406
ocs_t * ocs
Definition: ocs_common.h:251
ocs_atomic_t login_mem_in_use
Definition: ocs_common.h:370
struct ocs_hal_rq_buffer_s * data
Definition: ocs_common.h:232
static void ocs_node_unlock(ocs_node_t *node)
Definition: ocs_common.h:437
uint8_t dest_ip[16]
Definition: ocs_common.h:351
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:157
ocs_list_link_t link
Definition: ocs_common.h:167
uint32_t instance_index
Definition: ocs_common.h:307
struct ocs_cxn_s * cxn
Definition: ocs_common.h:230
int32_t(* ocs_unsol_cb_t)(void *, ocs_cxn_t *, struct ocs_hal_rq_buffer_s *, uint32_t, struct ocs_hal_rq_buffer_s *, uint32_t, uint8_t)
Definition: ocs_common.h:281
static void ocs_domain_lock(ocs_domain_t *domain)
Definition: ocs_common.h:186
ocs_scsi_ini_node_t ini_node
Definition: ocs_common.h:315
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:317
ocs_rlock_t lock
Definition: ocs_common.h:166
uint8_t chap_ident_sent
Definition: ocs_common.h:401
uint32_t tgt_id
Definition: ocs_common.h:86
uint32_t cmd_q_num_queued
Definition: ocs_common.h:277
ocs_lock_t active_ios_lock
Definition: ocs_common.h:312
uint8_t send_logout_rsp
Definition: ocs_common.h:374
initiator private node structure
Definition: ocs_scsi_ini.h:100
#define OCS_MAX_ISCSI_NAME
Definition: ocs_common.h:240
uint64_t wwpn
Definition: ocs_common.h:92
ocs_xport_e
Definition: ocs_common.h:45
ocs_timer_t cmd_q_timer
Definition: ocs_common.h:278
ocs_lock_t cmd_q_lock
Definition: ocs_common.h:273
uint32_t max_rcv_dsl
Definition: ocs_common.h:336
uint16_t wq_id
Definition: ocs_common.h:327
ocs_rlock_t lock
Definition: ocs_common.h:311
void * tgt_data
Definition: ocs_common.h:97
uint8_t sendRst
Definition: ocs_common.h:377
char tgt_name[OCS_MAX_ISCSI_NAME]
Definition: ocs_common.h:259
uint32_t index
Definition: ocs_common.h:87
uint8_t is_ini_cxn
Definition: ocs_common.h:362
ocs_list_t cbit_list
Definition: ocs_common.h:390
ocs_list_link_t link
Definition: ocs_common.h:291
#define OCS_CHAP_CHALLENGE_SIZE
Definition: ocs_common.h:47
uint32_t cbit_rsp_len
Definition: ocs_common.h:395
static void ocs_domain_unlock(ocs_domain_t *domain)
Definition: ocs_common.h:191
ocs_timer_t sm_retry_timer
Definition: ocs_common.h:325
uint8_t no_idle_timer
Definition: ocs_common.h:382
uint8_t logout_rsp
Definition: ocs_common.h:375
uint8_t nop_sent_for_tm
Definition: ocs_common.h:387
#define OCS_DISPLAY_NAME_LENGTH
Definition: ocs_common.h:49