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 
39 #if !defined(__OCS_COMMON_H__)
40 #define __OCS_COMMON_H__
41 
42 #include "ocs_common_shared.h"
43 #include "ocs_sm.h"
44 #include "spv.h"
45 
47 
48 #define OCS_SERVICE_PARMS_LENGTH 0x74
49 #define OCS_DISPLAY_NAME_LENGTH 32
50 #define OCS_DISPLAY_BUS_INFO_LENGTH 16
51 
52 #define OCS_WWN_LENGTH 32
53 
54 typedef struct ocs_hal_s ocs_hal_t;
55 typedef struct ocs_domain_s ocs_domain_t;
56 typedef struct ocs_sli_port_s ocs_sli_port_t;
57 typedef struct ocs_sli_port_s ocs_sport_t;
58 typedef struct ocs_remote_node_s ocs_remote_node_t;
59 typedef struct ocs_remote_node_group_s ocs_remote_node_group_t;
60 typedef struct ocs_node_s ocs_node_t;
61 typedef struct ocs_io_s ocs_io_t;
62 typedef struct ocs_xport_s ocs_xport_t;
63 typedef struct ocs_node_cb_s ocs_node_cb_t;
64 typedef struct ocs_ns_s ocs_ns_t;
65 
66 /* Node group data structure */
67 typedef struct ocs_node_group_dir_s ocs_node_group_dir_t;
68 
69 #include "ocs_scsi_ini.h"
70 #include "ocs_scsi_tgt.h"
71 
72 /*--------------------------------------------------
73  * Shared HAL/SLI objects
74  *
75  * Several objects used by the HAL/SLI layers are communal; part of the
76  * object is for the sole use of the lower layers, but implementations
77  * are free to add their own fields if desired.
78  */
79 
80 /**
81  * @brief Description of discovered Fabric Domain
82  *
83  * @note Not all fields are valid for all mediums (FC/ethernet).
84  */
85 typedef struct ocs_domain_record_s {
86  uint32_t index; /**< FCF table index (used in REG_FCFI) */
87  uint32_t priority; /**< FCF reported priority */
88  uint8_t address[6]; /**< Switch MAC/FC address */
89  uint8_t wwn[8]; /**< Switch WWN */
90  union {
91  uint8_t vlan[512]; /**< bitmap of valid VLAN IDs */
92  uint8_t loop[128]; /**< FC-AL position map */
93  } map;
94  uint32_t speed; /**< link speed */
95  uint32_t fc_id; /**< our ports fc_id */
96  uint32_t is_fc:1, /**< Connection medium is native FC */
97  is_ethernet:1, /**< Connection medium is ethernet (FCoE) */
98  is_loop:1, /**< Topology is FC-AL */
99  is_nport:1, /**< Topology is N-PORT */
100  :28;
102 
103 /**
104  * @brief Node group directory entry
105  */
107  uint32_t instance_index; /*<< instance index */
108  ocs_sport_t *sport; /*<< pointer to sport */
109  uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]; /**< Login parameters */
110  ocs_list_link_t link; /**< linked list link */
111  ocs_list_t node_group_list; /**< linked list of node groups */
112  uint32_t node_group_list_count; /**< current number of elements on the node group list */
113  uint32_t next_idx; /*<< index of the next node group in list */
114 };
115 
116 typedef enum {
122 
123 /**
124  * @brief SLI Port object
125  *
126  * The SLI Port object represents the connection between the driver and the
127  * FC/FCoE domain. In some topologies / hardware, it is possible to have
128  * multiple connections to the domain via different WWN. Each would require
129  * a separate SLI port object.
130  */
132 
133  ocs_t *ocs; /**< pointer to ocs */
134  uint32_t tgt_id; /**< target id */
135  uint32_t index; /**< ??? */
136  uint32_t instance_index;
137  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< sport display name */
138  ocs_domain_t *domain; /**< current fabric domain */
139  uint32_t is_vport:1; /**< this SPORT is a virtual port */
140  uint64_t wwpn; /**< WWPN from HAL (host endian) */
141  uint64_t wwnn; /**< WWNN from HAL (host endian) */
142  ocs_list_t node_list; /**< list of nodes */
143  ocs_scsi_ini_sport_t ini_sport; /**< initiator backend private sport data */
144  ocs_scsi_tgt_sport_t tgt_sport; /**< target backend private sport data */
145  void *tgt_data; /**< target backend private pointer */
146  void *ini_data; /**< initiator backend private pointer */
148 
149  /*
150  * Members private to HAL/SLI
151  */
152  ocs_sm_ctx_t ctx; /**< state machine context */
153  ocs_hal_t *hal; /**< pointer to HAL */
154  uint32_t indicator; /**< VPI */
155  uint32_t fc_id; /**< FC address */
156  ocs_dma_t dma; /**< memory for Service Parameters */
157 
158  uint8_t wwnn_str[OCS_WWN_LENGTH]; /**< WWN (ASCII) */
159  uint64_t sli_wwpn; /**< WWPN (wire endian) */
160  uint64_t sli_wwnn; /**< WWNN (wire endian) */
161  uint32_t sm_free_req_pending:1; /**< Free request received while waiting for attach response */
162 
163  /*
164  * Implementation specific fields allowed here
165  */
166  ocs_sm_ctx_t sm; /**< sport context state machine */
167  sparse_vector_t lookup; /**< fc_id to node lookup object */
169  ocs_ref_t ref; /**< refcount object */
170  uint32_t enable_ini:1, /**< SCSI initiator enabled for this node */
171  enable_tgt:1, /**< SCSI target enabled for this node */
172  enable_rscn:1, /**< This SPORT will be expecting RSCN */
173  shutting_down:1, /**< sport in process of shutting down */
174  p2p_winner:1, /**< TRUE if we're the point-to-point winner */
175  unreg_rpi_all:1; /**< unreg all RPIs for a given VPI */
176  ocs_sport_topology_e topology; /**< topology: fabric/p2p/unknown */
177  uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]; /**< Login parameters */
178  uint32_t p2p_remote_port_id; /**< Remote node's port id for p2p */
179  uint32_t p2p_port_id; /**< our port's id */
180 
181  /* List of remote node group directory entries (used by high login mode) */
182  ocs_lock_t node_group_lock;
183  uint32_t node_group_dir_next_instance; /**< HLM next node group directory instance value */
184  uint32_t node_group_next_instance; /**< HLM next node group instance value */
186  uint32_t fdmi_hba_mask;
187  uint32_t fdmi_port_mask;
188 };
189 
190 /**
191  * @brief Fibre Channel domain object
192  *
193  * This object is a container for the various SLI components needed
194  * to connect to the domain of a FC or FCoE switch
195  */
196 struct ocs_domain_s {
197 
198  ocs_t *ocs; /**< pointer back to ocs */
199  uint32_t instance_index; /**< unique instance index value */
200  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< Node display name */
201  ocs_list_t sport_list; /**< linked list of SLI ports */
202  ocs_scsi_ini_domain_t ini_domain; /**< initiator backend private domain data */
203  ocs_scsi_tgt_domain_t tgt_domain; /**< target backend private domain data */
205 
206  /* Declarations private to HAL/SLI */
207  ocs_hal_t *hal; /**< pointer to HAL */
208  ocs_sm_ctx_t sm; /**< state machine context */
209  uint32_t fcf; /**< FC Forwarder table index */
210  uint32_t fcf_indicator; /**< FCFI */
211  uint32_t vlan_id; /**< VLAN tag for this domain */
212  uint32_t indicator; /**< VFI */
213  ocs_dma_t dma; /**< memory for Service Parameters */
214  uint32_t req_rediscover_fcf:1; /**< TRUE if fcf rediscover is needed (in response
215  * to Vlink Clear async event */
216 
217  /* Declarations private to FC transport */
218  uint64_t fcf_wwn; /**< WWN for FCF/switch */
220  ocs_sm_ctx_t drvsm; /**< driver domain sm context */
221  ocs_rlock_t drvsm_lock; /**< driver domain sm lock */
222  uint32_t attached:1, /**< set true after attach completes */
223  is_fc:1, /**< is FC */
224  is_loop:1, /**< is loop topology */
225  is_nlport:1, /**< is public loop */
226  domain_found_pending:1, /**< A domain found is pending, drec is updated */
227  req_domain_free:1, /**< True if domain object should be free'd */
228  req_accept_frames:1, /**< set in domain state machine to enable frames */
229  domain_notify_pend:1; /** Set in domain SM to avoid duplicate node event post */
230  ocs_domain_record_t pending_drec; /**< Pending drec if a domain found is pending */
231  uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]; /**< any sports service parameters */
232  uint8_t flogi_service_params[OCS_SERVICE_PARMS_LENGTH]; /**< Fabric/P2p service parameters from FLOGI */
233  uint8_t femul_enable; /**< TRUE if Fabric Emulation mode is enabled */
234 #if defined(ENABLE_FABRIC_EMULATION)
235  uint8_t femul_vports_started; /**< TRUE if fabric vports are started */
236  ocs_atomic_t femul_count; /**< count of fabric emulation nodes in the process of being created */
237  uint16_t femul_oxid; /**< ox_id for FLOGI response */
238  uint64_t femul_port_name;/**< used to populate nameserver db */
239 #endif
240 
241  /* Declarations shared with back-ends */
242  sparse_vector_t lookup; /**< d_id to node lookup object */
243  ocs_lock_t lookup_lock;
244 
245  ocs_sli_port_t *sport; /**< Pointer to first (physical) SLI port (also at the head of sport_list) */
246  uint32_t sport_instance_count; /**< count of sport instances */
247 
248  /* Fabric Emulation */
249  ocs_bitmap_t *portid_pool;
250  ocs_ns_t *ocs_ns; /*>> Directory(Name) services data */
251 };
252 
253 typedef struct ocs_domain_exec_arg_s {
254  uint32_t arg_in_length;
255  void *arg_in;
256  uint32_t arg_out_length;
257  void *arg_out;
258  ocs_sem_t sem;
259  ocs_atomic_t ref_cnt;
260  void (*exec_cb)(ocs_domain_t *, void *arg);
262 
263 
264 typedef struct ocs_sport_exec_arg_s {
265  uint32_t arg_in_length;
266  void *arg_in;
267  uint32_t arg_out_length;
268  void *arg_out;
270  void (*exec_cb)(ocs_sport_t *sport, void *arg);
272 
273 /**
274  * @brief Remote Node object
275  *
276  * This object represents a connection between the SLI port and another
277  * Nx_Port on the fabric. Note this can be either a well known port such
278  * as a F_Port (i.e. ff:ff:fe) or another N_Port.
279  */
281  /*
282  * Members private to HAL/SLI
283  */
284  uint32_t indicator; /**< RPI */
285  uint32_t index;
286  uint32_t fc_id; /**< FC address */
287 
288  uint32_t attached:1, /**< true if attached */
289  node_group:1, /**< true if in node group */
290  free_group:1; /**< true if the node group should be free'd */
291 
292  ocs_sli_port_t *sport; /**< associated SLI port */
293 
294  /*
295  * Implementation specific fields allowed here
296  */
297  void *node; /**< associated node */
298 };
299 
301  /*
302  * Members private to HAL/SLI
303  */
304  uint32_t indicator; /**< RPI */
305  uint32_t index;
306 
307  /*
308  * Implementation specific fields allowed here
309  */
310 
311 
312  uint32_t instance_index; /*<< instance index */
313  ocs_node_group_dir_t *node_group_dir; /*<< pointer to the node group directory */
314  ocs_list_link_t link; /*<< linked list link */
315 };
316 
317 typedef enum {
322 
323 typedef enum {
328 
329 /**
330  * @brief FC Node object
331  *
332  */
333 struct ocs_node_s {
334 
335  ocs_t *ocs; /**< pointer back to ocs structure */
336  uint32_t instance_index; /**< unique instance index value */
337  char display_name[OCS_DISPLAY_NAME_LENGTH]; /**< Node display name */
338  ocs_sport_t *sport;
339  uint32_t hold_frames:1; /**< hold incoming frames if true */
340  ocs_rlock_t lock; /**< node wide lock */
341  ocs_lock_t active_ios_lock; /**< active SCSI and XPORT I/O's for this node */
342  ocs_list_t active_ios; /**< active I/O's for this node */
343  uint64_t max_wr_xfer_size; /**< Max write IO size per phase for the transport */
344  ocs_scsi_ini_node_t ini_node; /**< backend initiator private node data */
345  ocs_scsi_tgt_node_t tgt_node; /**< backend target private node data */
347 
348  /* Declarations private to HAL/SLI */
349  ocs_remote_node_t rnode; /**< Remote node */
350 
351  /* Declarations private to FC transport */
352  ocs_sm_ctx_t sm; /**< state machine context */
353  uint32_t evtdepth; /**< current event posting nesting depth */
354  uint32_t req_free:1, /**< this node is to be free'd */
355  attached:1, /**< node is attached (REGLOGIN complete) */
356  fcp_enabled:1, /**< node is enabled to handle FCP */
357  rscn_pending:1, /**< for name server node RSCN is pending */
358  send_plogi:1, /**< if initiator, send PLOGI at node initialization */
359  send_plogi_acc:1,/**< send PLOGI accept, upon completion of node attach */
360  io_alloc_enabled:1, /**< TRUE if ocs_scsi_io_alloc() and ocs_els_io_alloc() are enabled */
361  sent_prli:1; /**< if initiator, sent prli. */
362  ocs_node_send_ls_acc_e send_ls_acc; /**< type of LS acc to send */
363  ocs_io_t *ls_acc_io; /**< SCSI IO for LS acc */
364  uint32_t ls_acc_oxid; /**< OX_ID for pending accept */
365  uint32_t ls_acc_did; /**< D_ID for pending accept */
366  ocs_node_shutd_rsn_e shutdown_reason;/**< reason for node shutdown */
367  ocs_dma_t sparm_dma_buf; /**< service parameters buffer */
368  uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]; /**< plogi/acc frame from remote device */
369  int32_t suppress_rsp; /**< Suppress Response requested */
370  ocs_lock_t pend_frames_lock; /**< lock for inbound pending frames list */
371  ocs_list_t pend_frames; /**< inbound pending frames list */
372  uint32_t pend_frames_processed; /**< count of frames processed in hold frames interval */
373  uint32_t ox_id_in_use; /**< used to verify one at a time us of ox_id */
374  uint32_t els_retries_remaining; /**< for ELS, number of retries remaining */
375  uint32_t els_req_cnt; /**< number of outstanding ELS requests */
376  uint32_t els_cmpl_cnt; /**< number of outstanding ELS completions */
377  uint32_t abort_cnt; /**< Abort counter for debugging purpose */
378 
379  char current_state_name[OCS_DISPLAY_NAME_LENGTH]; /**< current node state */
380  char prev_state_name[OCS_DISPLAY_NAME_LENGTH]; /**< previous node state */
381  ocs_sm_event_t current_evt; /**< current event */
382  ocs_sm_event_t prev_evt; /**< current event */
383  uint32_t targ:1, /**< node is target capable */
384  init:1, /**< node is init capable */
385  nvme_init:1, /**< node is NVME tgt capable */
386  refound:1, /**< Handle node refound case when node is being deleted */
387  nvme_tgt:1, /**< node is NVME tgt capable */
388  unreg_rpi:1, /**< Used for synchronizing unreg_rpi / unreg_rpi_all */
389  first_burst:1,
390  :1,
391  fc_type:8,
392  :16;
393 
394  uint32_t nvme_prli_service_params;
395 
396  ocs_list_t els_io_pend_list; /**< list of pending (not yet processed) ELS IOs */
397  ocs_list_t els_io_active_list; /**< list of active (processed) ELS IOs */
398 
399  ocs_sm_function_t nodedb_state; /**< Node debugging, saved state */
400 
401  ocs_timer_t gidpt_delay_timer; /**< GIDPT delay timer */
402  time_t time_last_gidpt_msec; /**< Start time of last target RSCN GIDPT */
403 
404  /* WWN */
405  char wwnn[OCS_WWN_LENGTH]; /**< remote port WWN (uses iSCSI naming) */
406  char wwpn[OCS_WWN_LENGTH]; /**< remote port WWN (uses iSCSI naming) */
407 
408  /* Statistics */
409  uint32_t chained_io_count; /**< count of IOs with chained SGL's */
410 
411  ocs_list_link_t link; /**< node list link */
412 
413  ocs_remote_node_group_t *node_group; /**< pointer to node group (if HLM enabled) */
414 };
415 
416 /**
417  * @brief Virtual port specification
418  *
419  * Collection of the information required to restore a virtual port across
420  * link events
421  */
422 
423 typedef struct ocs_vport_spec_s ocs_vport_spec_t;
425  uint32_t domain_instance; /*>> instance index of this domain for the sport */
426  uint64_t wwnn; /*>> node name */
427  uint64_t wwpn; /*>> port name */
428  uint32_t fc_id; /*>> port id */
429  uint32_t enable_tgt:1, /*>> port is a target */
430  enable_ini:1, /*>> port is an initiator */
431  enable_nvme_tgt:1; /*>> NVME target functionality */
432  ocs_list_link_t link; /*>> link */
433  void *tgt_data; /**< target backend pointer */
434  void *ini_data; /**< initiator backend pointer */
435  ocs_sport_t *sport; /**< Used to match record after attaching for update */
436 };
437 
438 extern void ocs_mgmt_domain_exec_cb(ocs_domain_t *domain, void *);
439 extern void ocs_mgmt_sport_exec_cb(ocs_sport_t *sport, void *);
440 
441 #endif // __OCS_COMMON_H__
ocs_sm_ctx_t sm
Definition: ocs_common.h:208
uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]
Definition: ocs_common.h:177
ocs_lock_t lookup_lock
Definition: ocs_common.h:243
void * ini_data
Definition: ocs_common.h:146
ocs_sm_function_t nodedb_state
Definition: ocs_common.h:399
uint32_t req_domain_free
Definition: ocs_common.h:222
ocs_t * ocs
Definition: ocs_common.h:335
uint32_t unreg_rpi
Definition: ocs_common.h:383
ocs_ref_t ref
Definition: ocs_common.h:169
ocs_scsi_ini_sport_t ini_sport
Definition: ocs_common.h:143
uint32_t pend_frames_processed
Definition: ocs_common.h:372
ocs_rlock_t lock
Definition: ocs_common.h:340
ocs_list_t ocs_list_link_t
Definition: ocs_list.h:84
ocs_list_link_t link
Definition: ocs_common.h:168
ocs_sport_t * sport
Definition: ocs_common.h:108
#define OCS_WWN_LENGTH
Definition: ocs_common.h:52
uint32_t chained_io_count
Definition: ocs_common.h:409
HAL object.
Definition: ocs_hal.h:902
Fibre Channel domain object.
Definition: ocs_common.h:196
uint32_t enable_rscn
Definition: ocs_common.h:170
uint32_t node_group_dir_next_instance
Definition: ocs_common.h:183
ocs_sm_ctx_t drvsm
Definition: ocs_common.h:220
uint32_t refound
Definition: ocs_common.h:383
ocs_io_t * ls_acc_io
Definition: ocs_common.h:363
void ocs_mgmt_sport_exec_cb(ocs_sport_t *sport, void *)
Definition: ocs_sport.c:1608
uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]
Definition: ocs_common.h:109
ocs_sm_ctx_t ctx
Definition: ocs_common.h:152
ocs_node_send_ls_acc_e send_ls_acc
Definition: ocs_common.h:362
uint32_t domain_found_pending
Definition: ocs_common.h:222
uint8_t flogi_service_params[OCS_SERVICE_PARMS_LENGTH]
Definition: ocs_common.h:232
char prev_state_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:380
ocs_sm_ctx_t sm
Definition: ocs_common.h:352
uint32_t fc_id
Definition: ocs_common.h:428
uint32_t uint32_t nvme_prli_service_params
Definition: ocs_common.h:383
uint32_t is_vport
Definition: ocs_common.h:139
uint32_t instance_index
Definition: ocs_common.h:136
ocs_hal_t * hal
Definition: ocs_common.h:153
uint32_t free_group
Definition: ocs_common.h:288
uint32_t indicator
Definition: ocs_common.h:154
target private node structure
Definition: ocs_scsi_tgt.h:130
uint32_t instance_index
Definition: ocs_common.h:336
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:346
ocs_list_link_t link
Definition: ocs_common.h:314
uint32_t send_plogi_acc
Definition: ocs_common.h:354
uint32_t fcp_enabled
Definition: ocs_common.h:354
target private domain structure
Definition: ocs_scsi_tgt.h:80
ocs_dma_t dma
Definition: ocs_common.h:213
uint32_t fc_type
Definition: ocs_common.h:383
ocs_lock_t active_ios_lock
Definition: ocs_common.h:341
ocs_atomic_t ref_cnt
Definition: ocs_common.h:259
target private sport structure
Definition: ocs_scsi_tgt.h:89
uint64_t sli_wwpn
Definition: ocs_common.h:159
ocs_sm_event_t prev_evt
Definition: ocs_common.h:382
ocs_list_link_t link
Definition: ocs_common.h:432
ocs_list_t node_group_dir_list
Definition: ocs_common.h:185
ocs_node_shutd_rsn_e
Definition: ocs_common.h:317
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:337
ocs_scsi_tgt_domain_t tgt_domain
Definition: ocs_common.h:203
ocs_sm_event_t current_evt
Definition: ocs_common.h:381
uint32_t is_nlport
Definition: ocs_common.h:222
FC Node object.
Definition: ocs_common.h:333
char current_state_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:379
uint32_t instance_index
Definition: ocs_common.h:199
uint32_t indicator
Definition: ocs_common.h:212
uint32_t req_accept_frames
Definition: ocs_common.h:222
uint32_t vlan_id
Definition: ocs_common.h:211
Transport private values.
Definition: ocs_xport.h:176
ocs_node_group_dir_t * node_group_dir
Definition: ocs_common.h:313
ocs_domain_t * domain
Definition: ocs_common.h:138
uint64_t wwnn
Definition: ocs_common.h:141
ocs_list_t els_io_pend_list
Definition: ocs_common.h:396
ocs_domain_record_t pending_drec
Definition: ocs_common.h:230
ocs_scsi_tgt_sport_t tgt_sport
Definition: ocs_common.h:144
uint32_t io_alloc_enabled
Definition: ocs_common.h:354
sparse_vector_t lookup
Definition: ocs_common.h:242
#define OCS_SERVICE_PARMS_LENGTH
Definition: ocs_common.h:48
uint32_t p2p_port_id
Definition: ocs_common.h:179
uint32_t node_group_list_count
Definition: ocs_common.h:112
uint32_t attached
Definition: ocs_common.h:288
uint64_t max_wr_xfer_size
Definition: ocs_common.h:343
uint32_t fcf_indicator
Definition: ocs_common.h:210
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:147
ocs_t * ocs
Definition: ocs_common.h:198
ocs_lock_t node_group_lock
Definition: ocs_common.h:182
ocs_ns_t * ocs_ns
Definition: ocs_common.h:250
uint32_t ls_acc_oxid
Definition: ocs_common.h:364
sparse_vector_t lookup
Definition: ocs_common.h:167
ocs_dma_t dma
Definition: ocs_common.h:156
uint32_t rscn_pending
Definition: ocs_common.h:354
ocs_list_t active_ios
Definition: ocs_common.h:342
uint32_t node_group_next_instance
Definition: ocs_common.h:184
void *(* ocs_sm_function_t)(ocs_sm_ctx_t *, ocs_sm_event_t, void *)
Definition: ocs_sm.h:188
uint32_t fdmi_port_mask
Definition: ocs_common.h:187
uint32_t evtdepth
Definition: ocs_common.h:353
ocs_scsi_ini_node_t ini_node
Definition: ocs_common.h:344
SLI Port object.
Definition: ocs_common.h:131
ocs_scsi_tgt_node_t tgt_node
Definition: ocs_common.h:345
ocs_list_t node_list
Definition: ocs_common.h:142
ocs_scsi_ini_domain_t ini_domain
Definition: ocs_common.h:202
uint32_t els_retries_remaining
Definition: ocs_common.h:374
Node group directory entry.
Definition: ocs_common.h:106
uint32_t nvme_init
Definition: ocs_common.h:383
ocs_list_t sport_list
Definition: ocs_common.h:201
int32_t suppress_rsp
Definition: ocs_common.h:369
uint32_t p2p_winner
Definition: ocs_common.h:170
uint32_t node_group
Definition: ocs_common.h:288
uint32_t fcf
Definition: ocs_common.h:209
uint32_t instance_index
Definition: ocs_common.h:107
ocs_remote_node_group_t * node_group
Definition: ocs_common.h:413
uint32_t req_rediscover_fcf
Definition: ocs_common.h:214
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:137
ocs_sm_ctx_t sm
Definition: ocs_common.h:166
uint32_t first_burst
Definition: ocs_common.h:383
uint32_t nvme_tgt
Definition: ocs_common.h:383
uint64_t fcf_wwn
Definition: ocs_common.h:218
uint32_t hold_frames
Definition: ocs_common.h:339
Remote Node object.
Definition: ocs_common.h:280
uint32_t sport_instance_count
Definition: ocs_common.h:246
uint32_t indicator
Definition: ocs_common.h:284
ocs_node_send_ls_acc_e
Definition: ocs_common.h:323
ocs_sli_port_t * sport
Definition: ocs_common.h:245
uint32_t arg_out_length
Definition: ocs_common.h:267
ocs_list_link_t link
Definition: ocs_common.h:110
uint32_t fc_id
Definition: ocs_common.h:155
Description of discovered Fabric Domain.
Definition: ocs_common.h:85
uint32_t enable_tgt
Definition: ocs_common.h:170
uint32_t sent_prli
Definition: ocs_common.h:354
ocs_sport_t * sport
Definition: ocs_common.h:338
ocs_lock_t pend_frames_lock
Definition: ocs_common.h:370
uint32_t unreg_rpi_all
Definition: ocs_common.h:170
uint32_t enable_ini
Definition: ocs_common.h:429
uint8_t femul_enable
Definition: ocs_common.h:233
uint32_t abort_cnt
Definition: ocs_common.h:377
uint32_t init
Definition: ocs_common.h:383
char display_name[OCS_DISPLAY_NAME_LENGTH]
Definition: ocs_common.h:200
uint32_t enable_tgt
Definition: ocs_common.h:429
uint32_t attached
Definition: ocs_common.h:354
uint32_t ls_acc_did
Definition: ocs_common.h:365
ocs_sport_topology_e
Definition: ocs_common.h:116
ocs_dma_t sparm_dma_buf
Definition: ocs_common.h:367
ocs_list_t els_io_active_list
Definition: ocs_common.h:397
uint64_t sli_wwnn
Definition: ocs_common.h:160
ocs_rlock_t drvsm_lock
Definition: ocs_common.h:221
uint32_t send_plogi
Definition: ocs_common.h:354
uint32_t is_fc
Definition: ocs_common.h:222
uint32_t p2p_remote_port_id
Definition: ocs_common.h:178
uint32_t els_cmpl_cnt
Definition: ocs_common.h:376
uint32_t domain_instance
Definition: ocs_common.h:425
uint32_t attached
Definition: ocs_common.h:222
uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]
Definition: ocs_common.h:231
ocs_mgmt_functions_t * mgmt_functions
Definition: ocs_common.h:204
time_t time_last_gidpt_msec
Definition: ocs_common.h:402
ocs_list_link_t link
Definition: ocs_common.h:219
uint32_t els_req_cnt
Definition: ocs_common.h:375
uint32_t domain_notify_pend
Definition: ocs_common.h:222
ocs_sport_t * sport
Definition: ocs_common.h:435
Node SM IO Context Callback structure.
Definition: ocs_node.h:81
uint32_t req_free
Definition: ocs_common.h:354
ocs_sli_port_t * sport
Definition: ocs_common.h:292
ocs_list_t node_group_list
Definition: ocs_common.h:111
uint32_t ox_id_in_use
Definition: ocs_common.h:373
ocs_bitmap_t * portid_pool
Definition: ocs_common.h:249
uint32_t tgt_id
Definition: ocs_common.h:134
uint32_t targ
Definition: ocs_common.h:383
uint64_t wwpn
Definition: ocs_common.h:140
ocs_xport_e
Definition: ocs_common.h:46
uint32_t fdmi_hba_mask
Definition: ocs_common.h:186
uint32_t shutting_down
Definition: ocs_common.h:170
uint32_t enable_ini
Definition: ocs_common.h:170
ocs_list_t pend_frames
Definition: ocs_common.h:371
void * tgt_data
Definition: ocs_common.h:145
ocs_sm_event_t
Definition: ocs_sm.h:60
ocs_domain_exec_arg_t * domain_exec_args
Definition: ocs_common.h:269
void ocs_mgmt_domain_exec_cb(ocs_domain_t *domain, void *)
Definition: ocs_domain.c:1603
struct ocs_ns_s ocs_ns_t
Definition: ocs_common.h:64
char wwpn[OCS_WWN_LENGTH]
Definition: ocs_common.h:406
uint32_t index
Definition: ocs_common.h:135
ocs_node_shutd_rsn_e shutdown_reason
Definition: ocs_common.h:366
Virtual port specification.
Definition: ocs_common.h:424
uint8_t service_params[OCS_SERVICE_PARMS_LENGTH]
Definition: ocs_common.h:368
uint8_t wwnn_str[OCS_WWN_LENGTH]
Definition: ocs_common.h:158
uint32_t sm_free_req_pending
Definition: ocs_common.h:161
uint32_t arg_in_length
Definition: ocs_common.h:265
ocs_list_link_t link
Definition: ocs_common.h:411
uint32_t enable_nvme_tgt
Definition: ocs_common.h:429
ocs_hal_t * hal
Definition: ocs_common.h:207
ocs_timer_t gidpt_delay_timer
Definition: ocs_common.h:401
uint32_t is_loop
Definition: ocs_common.h:222
Sparse Vector API.
ocs_sport_topology_e topology
Definition: ocs_common.h:176
ocs_remote_node_t rnode
Definition: ocs_common.h:349
char wwnn[OCS_WWN_LENGTH]
Definition: ocs_common.h:405
#define OCS_DISPLAY_NAME_LENGTH
Definition: ocs_common.h:49