Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_ioctl.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  * Common declartaions for the driver's IOCTL interface
36  */
37 
38 #if !defined(__OCS_IOCTL_H__)
39 #define __OCS_IOCTL_H__
40 
41 #define MAX_FDMI_HBA_COUNT 2048 /*Enough for 2K remote initiator nodes */
42 #define MAX_FDMI_PORT_COUNT 256 /*Enough for 2K remote initiator nodes */
43 
44 /**
45  * @brief OCS test ioctl
46  *
47  * Simple structure for testing the IOCTL interface
48  */
49 
50 typedef struct {
51  char string[32]; /**< fixed string buffer */
53 
54 /**
55  * @brief DRIVER_INFO ioctl structure
56  *
57  * Structure is returned whtn the OCS_IOCTL_CMD_DRIVER_INFO is issued by a user space program.
58  */
59 
60 typedef struct {
61  uint16_t pci_vendor; /**< PCI vender ID value (binary) */
62  uint16_t pci_device; /**< PCI device ID value (binary) */
63  char businfo[16]; /**< Bus information (text) */
64  uint32_t sli_intf; /**< SLI_INTF register value (binary) */
65  char desc[64]; /**< description (text) */
66  char fw_rev[32]; /**< firmware revision (text) */
67  union {
68  struct {
69  uint8_t wwnn[8]; /**< WWNN (binary) */
70  uint8_t wwpn[8]; /**< WWPN (binary) */
71  } fc;
72  struct {
73  uint8_t mac_addr[6]; /**< MAC address (binary) */
74  uint8_t reserved[10];
75  } iscsi;
76  } hw_addr;
77  char serialnum[32]; /**< board serial number (text) */
79 
80 #define ELXU_BSD_MAGIC 0x30584c45
81 
82 /**
83  * @brief IOCTL_CMD_IOCTL_ELXU_MBOX ioctl structure
84  *
85  * Structure used to submit elxsdkutil mailbox requests for firmware download and
86  * dump file retrieveal.
87  */
88 
89 typedef struct {
90  uint32_t magic; /**< magic number */
91  uint32_t size; /**< size of MBX command */
92  uint8_t payload[256]; /**< MBX command in/out payload buffer */
93  uint64_t in_addr; /**< user space address of input buffer */
94  uint64_t in_bytes; /**< length of user space input buffer in bytes */
95  uint64_t out_addr; /**< user space address of output buffer */
96  uint64_t out_bytes; /**< length of user space output buffer in bytes */
98 
99 enum {
100  ocs_ioctl_scsi_cmd_loop, /**< Start command loop */
101  ocs_ioctl_scsi_cmd_loop_wait, /**< Start command loop and wait for completion */
102  ocs_ioctl_scsi_cmd_stop, /**< Stop command loop */
103  ocs_ioctl_scsi_cmd, /**< Start one command */
104  ocs_ioctl_scsi_cmd_wait, /**< Wait for a command to complete */
105  ocs_ioctl_scsi_cmd_abort, /**< Start an abort */
106  ocs_ioctl_scsi_cmd_tmf, /**< Start a tmf */
107  ocs_ioctl_els_send, /**< Start an ELS */
108  ocs_ioctl_tgt_logout, /**< logout of a target */
109  ocs_ioctl_scsi_cmd_wait_any, /**< Wait for any command to complete */
110 };
111 
112 enum {
113  ocs_ioctl_scsi_cmd_rd = (1U << 0), /**< direction is read */
114  ocs_ioctl_scsi_cmd_wr = (1U << 1), /**< direction is write */
115 };
116 
117 /**
118  * @brief OCS_IOCTL_CMD_SCSI_CMD ioctl command structure
119  */
120 
121 typedef enum {
132  } dif_op_t;
133 
134 #define DIF_OP_PASS_THRU DIF_OP_IN_CRC_OUT_CRC
135 #define DIF_OP_STRIP DIF_OP_IN_CRC_OUT_NODIF
136 #define DIF_OP_INSERT DIF_OP_IN_NODIF_OUT_CRC
137 
138 typedef struct {
140  uint32_t
141  check_ref_tag:1, /* check reference tag on initiator writes */
142  check_app_tag:1, /* check application tag on initiator writes */
143  check_guard:1, /* check CRC on initiator writes */
144  dif_separate:1; /* use DIF separate transfers */
145  uint32_t ref_tag; /* DIF reference tag */
146  uint16_t app_tag; /* DIF application tag */
147  uint32_t blocksize; /* DIF blocksize */
148 } dif_info_t;
149 
150 typedef struct {
151  int command; /**< SCSI command request command */
152  uint32_t target_idx; /**< Target device index */
153  uint32_t dir; /**< rd or wr */
154  uint32_t lun; /**< lun value */
155  int32_t tmf; /**< TMF */
156  uint8_t cdb[32]; /**< SCSI CDB */
157  uint32_t cdb_len; /**< SCSI CDB length in bytes */
158  uint32_t els_cmd; /**< ELS command */
159  uint32_t flags; /**< command flags */
160  uint32_t queue_depth; /**< queue depth for command looping */
161  uint32_t payload_length; /**< payload length for command */
162  uint32_t dif_payload_length; /**< DIF payload length for command if separate */
163  uint32_t io_count; /**< command count for looping */
164  uint32_t io_timeout; /**< IO timeout in seconds (0 = no timeout) */
165 
166  uint32_t directio; /**< If set, DMA to and from user buffers */
167 
168  uint32_t first_burst:1; /**< If true send IO writes with first burst */
169  uint32_t first_burst_size; /**< If first burst is enabled, then this size */
170 
171  int32_t wait_timeout_usec; /**< Wait timeout (usec) for wait, wait_any */
172 
173  /* T10-PI */
174  dif_info_t dif; /* DIF info */
175 
176  /* user space buffers */
177  void *payload; /**< pointer to user space payload buffer */
178  void *dif_payload; /**< pointer to DIF block data if separate */
179  uint8_t scsi_status; /**< SCSI status */
180  uint16_t scsi_status_qualifier; /**< SCSI status qualifier */
181  void *sense_data; /**< pointer to sense data buffer */
182  uint32_t sense_data_length; /**< length of sense data buffer (call=buffer leng, return=data written) */
183  int32_t residual; /**< residual */
184  uint32_t tag_to_abort; /**< tag to abort for an abort task request */
185 
186  /* return value */
187  int32_t status; /**< returned status */
188  uint32_t data_transferred; /**< updated with data transferred */
189  uint32_t tag; /**< returned unique I/O context tag */
190 
191  /* for scsi loop */
192  uint32_t submit_count; /**< count of submitted IOs */
193  uint32_t complete_count; /**< count of completed IOs */
195 
196 /**
197  * @brief coredump helper function command values
198  */
199 
200 typedef enum {
214 
215 /**
216  * @brief OCS_IOCTL_CMD_ECD_HELPER ioctl structure
217  */
218 
219 typedef struct {
220  ocs_ecd_helper_cmd_t cmd; /*<< coredump helper function command */
221  uint32_t bar; /*<< BAR value to use */
222  uint32_t offset; /*<< offset value to use */
223  uint32_t data; /*<< 32 bit data value to write or return read data in */
224  int status; /*<< status of helper function request */
226 
227 /**
228  * @brief OCS_IOCTL_CMD_VPORT ioctl structure
229  */
230 
231 typedef struct {
232  uint32_t domain_index; /*<< domain instance index */
233  uint32_t req_create:1, /*<< 1 = create vport, zero = remove vport */
234  enable_ini:1, /*<< 1 = enable vport as an initiator */
235  enable_tgt:1, /*<< 1 = enable vport as a target */
236  enable_nvme_tgt:1; /*<< 1 = enable vport to support nvme-fc tgt functionality */
237  uint64_t wwpn; /*<< wwpn to create or delete */
238  uint64_t wwnn; /*<< wwnn to create or delete */
239  int status; /*<< status of helper function request */
241 
242 /**
243  * @brief connection info ioctl structure
244  *
245  * Structure is returned when the OCS_IOCTL_CMD_CONNECTION_INFO is issued by a user space program.
246  */
247 typedef struct {
249  uint16_t connection_id;
250  uint8_t source_ip_type;
251  uint8_t source_ip[16];
252  uint16_t source_port;
253  uint8_t dest_ip_type;
254  uint8_t dest_ip[16];
255  uint16_t dest_port;
257 
258 typedef struct {
259  uint32_t max_connections;
260  uint32_t num_connections;
263 
264 /*
265  * boardtemp (DUMP_TYPE4_WKI_TAG_SAT_TEM) response buffer length.
266  */
267 #define OCS_DUMP_TYPE4_WKI_TAG_SAT_TEM_RESP_LEN (6 * 4)
268 
269 #define OCS_CHAP_INCOMING "incoming"
270 #define OCS_CHAP_OUTGOING "outgoing"
271 #define OCS_CHAP_TARGET "target"
272 #define OCS_CHAP_INITIATOR "initiator"
273 #define OCS_CHAP_TYPE_INCOMING 1
274 #define OCS_CHAP_TYPE_OUTGOING 2
275 #define OCS_CHAP_MODE_TARGET 1
276 #define OCS_CHAP_MODE_INITIATOR 2
277 
278 typedef struct ocs_chap_user_buffer_s {
279  char username[32];
280  char secret[32];
281  uint32_t type;
282  uint32_t mode;
284 
285 #define OCS_ISCSI_ROUTE_TABLE_ENTRIES_MAX 1024
286 
287 typedef struct {
288  int32_t ip_type;
289  uint8_t ip_addr[64];
290  uint8_t subnet[64];
291  uint8_t gateway[64];
293 
294 typedef struct {
295  uint32_t entry_count;
298 
299 /**
300  * @brief driver-dump actions
301  */
302 
303 typedef enum {
308 
309 #define OCS_IOCTL_DDUMP_FLAGS_WQES (1U << 0)
310 #define OCS_IOCTL_DDUMP_FLAGS_CQES (1U << 1)
311 #define OCS_IOCTL_DDUMP_FLAGS_MQES (1U << 2)
312 #define OCS_IOCTL_DDUMP_FLAGS_RQES (1U << 3)
313 #define OCS_IOCTL_DDUMP_FLAGS_EQES (1U << 4)
314 
315 typedef struct {
317  uint32_t flags;
318  uint32_t q_entries;
320 
321 /**
322  * @brief OCS_CTL_CMD_GET_DDUMP ioctl structure
323  */
324 
325 typedef struct {
326  ocs_ioctl_ddump_arg_t args; /*<< arguments for ddump */
327  uint8_t *user_buffer; /*<< pointer to user space buffer */
328  uint32_t user_buffer_len; /*<< length in bytes of user space buffer */
329  uint32_t bytes_written; /*<< number of bytes written */
331 
332 /**
333  * @brief OCS_CTL_CMD_GET_STATUS, OCS_CTL_CMD_GET_CONFIG
334  */
335 
336 typedef struct {
337  uint8_t *user_buffer; /*<< pointer to user space buffer */
338  uint32_t user_buffer_len; /*<< length in bytes of user space buffer */
339  uint32_t bytes_written; /*<< number of bytes written */
341 
342 typedef struct {
343  uint8_t *name; /*<< Input: name of property to retrieve */
344  uint8_t *value; /*<< Output: user space buffer in which to place the response */
345  uint32_t value_length; /*<< Input: size of the user space buffer */
346  int status; /*<< Output: command execution status */
348 
349 typedef struct {
350  uint8_t *name; /*<< Input: name of property to set */
351  uint8_t *value; /*<< Input: user space buffer which contains the new value */
352  int32_t result; /*<< Output: result */
354 
355 typedef struct {
356  uint8_t *name; /*<< Input: name of action to execute */
357  void *arg_in; /*<< Input: pointer to argument in user space */
358  uint32_t arg_in_length; /*<< Input: size of arg_in in bytes */
359  void *arg_out; /*<< Output: pointer to argument from kernel to user */
360  uint32_t arg_out_length; /*<< Input: size of arg_out in bytes */
361  int32_t result; /*<< Output: result */
363 
364 #define FC_HEADER_LEN 24
365 typedef struct {
366  uint8_t fc_header[FC_HEADER_LEN]; /*<< FC Header to send */
367  uint8_t *payload; /*<< payload */
368  uint32_t payload_len; /*<< payload length (bytes) */
369  uint8_t sof; /*<< SOF value */
370  uint8_t eof; /*<< EOF Value */
372 
373 typedef struct ocs_fdmi_hba_list_info_s {
374  uint32_t entry_count;
375  uint64_t hba_identifier[MAX_FDMI_HBA_COUNT];
377 
378 typedef struct ocs_fdmi_port_list_info_s {
379  uint32_t entry_count;
380  uint64_t port_identifier[MAX_FDMI_PORT_COUNT];
382 
383 typedef struct ocs_fdmi_hba_attr_info_s {
385  uint64_t port_identifier[MAX_FDMI_PORT_COUNT];
386  uint32_t node_name_valid:1,
387  manufacturer_valid:1,
388  serial_num_valid:1,
389  model_name_valid:1,
390  model_desc_valid:1,
391  hw_ver_valid:1,
392  driver_ver_valid:1,
393  opt_rom_ver_valid:1,
394  fw_ver_valid:1,
395  os_name_ver_valid:1,
396  max_ct_payload_valid:1,
397  node_symb_name_valid:1,
398  vendor_info_valid:1,
399  num_ports_valid:1,
400  fabric_name_valid:1,
401  bios_ver_valid:1,
402  boot_state_valid:1,
403  vendor_id_valid:1,
404  reserved:14;
405  uint64_t node_name;
406  uint8_t manufacturer[64];
407  uint8_t serial_num[64];
408  uint8_t model_name[256];
409  uint8_t model_desc[256];
410  uint8_t hw_ver[256];
411  uint8_t driver_ver[256];
412  uint8_t opt_rom_ver[256];
413  uint8_t fw_ver[256];
414  uint8_t os_name_ver[256];
416  uint8_t node_symb_name[256];
417  uint32_t vendor_info;
418  uint32_t num_ports;
419  uint64_t fabric_name;
420  uint8_t bios_ver[256];
421  uint32_t boot_state;
422  char vendor_id[8];
424 
425 typedef struct ocs_fdmi_port_attr_info_s {
427  uint32_t supported_fc_types_valid:1,
428  supported_speed_valid:1,
429  current_speed_valid:1,
430  max_frame_size_valid:1,
431  os_dev_name_valid:1,
432  host_name_valid:1,
433  node_name_valid:1,
434  port_name_valid:1,
435  port_symb_name_valid:1,
436  port_type_valid:1,
437  supported_cos_valid:1,
438  port_fabric_name_valid:1,
439  active_fc_types_valid:1,
440  port_state_valid:1,
441  num_disc_ports_valid:1,
442  port_id_valid:1,
443  reserved:16;
444  uint8_t supported_fc4_types[32];
445  uint32_t supported_speed;
447  uint32_t max_frame_size;
448  uint8_t os_dev_name[256];
449  uint8_t host_name[256];
450  uint64_t node_name;
451  uint64_t port_name;
452  uint8_t port_symb_name[256];
453  uint32_t port_type;
456  uint8_t active_fc4_types[32];
457  uint32_t port_state;
458  uint32_t num_disc_ports;
459  uint32_t port_identifier;
461 
462 #define OCS_MAX_SLI4_ULP 8
463 
464 typedef struct ocs_parity_err_count_s {
465  uint32_t pbec:16,
466  tpec:16;
468 
469 /**
470  * @brief linkcfg strings
471  */
472 #define OCS_CONFIG_LINKCFG_4X10G "ETH_4x10G"
473 #define OCS_CONFIG_LINKCFG_1X40G "ETH_1x40G"
474 #define OCS_CONFIG_LINKCFG_2X16G "FC_2x16G"
475 #define OCS_CONFIG_LINKCFG_4X8G "FC_4x8G"
476 #define OCS_CONFIG_LINKCFG_4X1G "FC_4x1G"
477 #define OCS_CONFIG_LINKCFG_2X10G "ETH_2x10G"
478 #define OCS_CONFIG_LINKCFG_2X10G_2X8G "ETH_2x10G_FC_2x8G"
479 #define OCS_CONFIG_LINKCFG_UNKNOWN "UNKNOWN"
480 
481 #define OCS_IOCTL_CMD_BASE 'o'
482 #define OCS_IOCTL_CMD_TEST _IOWR(OCS_IOCTL_CMD_BASE, 1, ocs_ioctl_test_t)
483 #define OCS_IOCTL_CMD_ELXU_MBOX _IOWR(OCS_IOCTL_CMD_BASE, 2, ocs_ioctl_elxu_mbox_t)
484 #define OCS_IOCTL_CMD_SCSI_CMD _IOWR(OCS_IOCTL_CMD_BASE, 3, ocs_ioctl_scsi_cmd_t)
485 #define OCS_IOCTL_CMD_DRIVER_INFO _IOWR(OCS_IOCTL_CMD_BASE, 4, ocs_ioctl_driver_info_t)
486 #define OCS_IOCTL_CMD_ECD_HELPER _IOWR(OCS_IOCTL_CMD_BASE, 5, ocs_ioctl_ecd_helper_t)
487 #define OCS_IOCTL_CMD_CONNECTION_INFO _IOWR(OCS_IOCTL_CMD_BASE, 6, ocs_ioctl_connection_info_t)
488 #define OCS_IOCTL_CMD_VPORT _IOWR(OCS_IOCTL_CMD_BASE, 7, ocs_ioctl_vport_t)
489 #define OCS_IOCTL_CMD_GET_DDUMP _IOWR(OCS_IOCTL_CMD_BASE, 8, ocs_ioctl_ddump_t)
490 #define OCS_IOCTL_CMD_MGMT_GET _IOWR(OCS_IOCTL_CMD_BASE, 9, ocs_ioctl_cmd_get_t)
491 #define OCS_IOCTL_CMD_MGMT_GET_ALL _IOWR(OCS_IOCTL_CMD_BASE, 10, ocs_ioctl_mgmt_buffer_t)
492 #define OCS_IOCTL_CMD_MGMT_SET _IOWR(OCS_IOCTL_CMD_BASE, 11, ocs_ioctl_cmd_set_t)
493 #define OCS_IOCTL_CMD_MGMT_LIST _IOWR(OCS_IOCTL_CMD_BASE, 12, ocs_ioctl_mgmt_buffer_t)
494 #define OCS_IOCTL_CMD_MGMT_EXEC _IOWR(OCS_IOCTL_CMD_BASE, 13, ocs_ioctl_action_t)
495 #define OCS_IOCTL_CMD_LINK_ONLINE _IOWR(OCS_IOCTL_CMD_BASE, 16, int)
496 #define OCS_IOCTL_CMD_GEN_DUMP _IOWR(OCS_IOCTL_CMD_BASE, 17, int)
497 #define OCS_IOCTL_CMD_UNLOAD _IO(OCS_IOCTL_CMD_BASE, 18)
498 #define OCS_IOCTL_CMD_SEND_FRAME _IOWR(OCS_IOCTL_CMD_BASE, 19, ocs_ioctl_send_frame_t)
499 
500 #endif // __OCS_IOCTL_H__
#define OCS_ISCSI_ROUTE_TABLE_ENTRIES_MAX
Definition: ocs_ioctl.h:285
ocs_ecd_helper_cmd_t cmd
Definition: ocs_ioctl.h:220
uint32_t arg_in_length
Definition: ocs_ioctl.h:358
uint32_t blocksize
Definition: ocs_ioctl.h:147
uint32_t entry_count
Definition: ocs_ioctl.h:295
uint32_t supported_class_of_service
Definition: ocs_ioctl.h:454
ocs_ioctl_ddump_arg_t args
Definition: ocs_ioctl.h:326
uint32_t data_transferred
Definition: ocs_ioctl.h:188
connection info ioctl structure
Definition: ocs_ioctl.h:247
ocs_ecd_helper_cmd_t
coredump helper function command values
Definition: ocs_ioctl.h:200
int32_t wait_timeout_usec
Definition: ocs_ioctl.h:171
uint32_t ref_tag
Definition: ocs_ioctl.h:145
uint32_t submit_count
Definition: ocs_ioctl.h:192
ocs_ddump_action_t
driver-dump actions
Definition: ocs_ioctl.h:303
dif_op_t dif_op
Definition: ocs_ioctl.h:139
IOCTL_CMD_IOCTL_ELXU_MBOX ioctl structure.
Definition: ocs_ioctl.h:89
OCS test ioctl.
Definition: ocs_ioctl.h:50
dif_op_t
OCS_IOCTL_CMD_SCSI_CMD ioctl command structure.
Definition: ocs_ioctl.h:121
uint32_t dif_payload_length
Definition: ocs_ioctl.h:162
uint8_t * name
Definition: ocs_ioctl.h:356
uint32_t bytes_written
Definition: ocs_ioctl.h:329
uint32_t tag_to_abort
Definition: ocs_ioctl.h:184
uint8_t * user_buffer
Definition: ocs_ioctl.h:327
uint32_t num_port_attr_entries
Definition: ocs_ioctl.h:426
int32_t ip_type
Definition: ocs_ioctl.h:288
uint32_t complete_count
Definition: ocs_ioctl.h:193
#define MAX_FDMI_HBA_COUNT
Definition: ocs_ioctl.h:41
uint32_t first_burst_size
Definition: ocs_ioctl.h:169
uint32_t sense_data_length
Definition: ocs_ioctl.h:182
#define FC_HEADER_LEN
Definition: ocs_ioctl.h:364
OCS_CTL_CMD_GET_DDUMP ioctl structure.
Definition: ocs_ioctl.h:325
uint16_t app_tag
Definition: ocs_ioctl.h:146
uint16_t scsi_status_qualifier
Definition: ocs_ioctl.h:180
uint32_t queue_depth
Definition: ocs_ioctl.h:160
Definition: ocs_ioctl.h:287
OCS_IOCTL_CMD_VPORT ioctl structure.
Definition: ocs_ioctl.h:231
ocs_ioctl_connection_info_t * connections
Definition: ocs_ioctl.h:261
uint32_t payload_length
Definition: ocs_ioctl.h:161
DRIVER_INFO ioctl structure.
Definition: ocs_ioctl.h:60
ocs_ddump_action_t action
Definition: ocs_ioctl.h:316
OCS_CTL_CMD_GET_STATUS, OCS_CTL_CMD_GET_CONFIG.
Definition: ocs_ioctl.h:336
uint32_t domain_index
Definition: ocs_ioctl.h:232
OCS_IOCTL_CMD_ECD_HELPER ioctl structure.
Definition: ocs_ioctl.h:219
uint32_t user_buffer_len
Definition: ocs_ioctl.h:328
#define MAX_FDMI_PORT_COUNT
Definition: ocs_ioctl.h:42
uint32_t value_length
Definition: ocs_ioctl.h:345
uint32_t arg_out_length
Definition: ocs_ioctl.h:360