3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright 2010 QLogic Corporation. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 /*
28 * File Name: exioct.h
29 *
30 * San/Device Management Ioctl Header
31 * File is created to adhere to Solaris requirement using 8-space tabs.
32 *
33 * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
34 * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
35 * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
36 *
37 * ***********************************************************************
38 * * **
39 * * NOTICE **
40 * * COPYRIGHT (C) 2000-2010 QLOGIC CORPORATION **
41 * * ALL RIGHTS RESERVED **
42 * * **
43 * ***********************************************************************
44 */
45
46 #ifndef _EXIOCT_H
47 #define _EXIOCT_H
48
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53 #include <exioctso.h>
54
55 /*
56 * NOTE: the following version defines must be updated each time the
57 * changes made may affect the backward compatibility of the
58 * input/output relations of the SDM IOCTL functions.
59 */
60 #define EXT_VERSION 5
61
62 /*
63 * OS independent General definitions
64 */
65 #define EXT_DEF_SIGNATURE_SIZE 8
66 #define EXT_DEF_WWN_NAME_SIZE 8
67 #define EXT_DEF_WWP_NAME_SIZE 8
68 #define EXT_DEF_SERIAL_NUM_SIZE 4
69 #define EXT_DEF_PORTID_SIZE 4
70 #define EXT_DEF_PORTID_SIZE_ACTUAL 3
71 #define EXT_DEF_MAX_STR_SIZE 128
72 #define EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH 12
73 #define EXT_DEF_MAC_ADDRESS_SIZE 6
74
75 #define EXT_DEF_ADDR_MODE_32 1
76 #define EXT_DEF_ADDR_MODE_64 2
77
78 /*
79 * ***********************************************************************
80 * OS dependent General configuration defines
81 * ***********************************************************************
82 */
83 #define EXT_DEF_MAX_HBA EXT_DEF_MAX_HBA_OS
84 #define EXT_DEF_MAX_BUS EXT_DEF_MAX_BUS_OS
85 #define EXT_DEF_MAX_TARGET EXT_DEF_MAX_TARGET_OS
86 #define EXT_DEF_MAX_LUN EXT_DEF_MAX_LUN_OS
87 #define EXT_DEF_NON_SCSI3_MAX_LUN EXT_DEF_NON_SCSI3_MAX_LUN_OS
88
89 /*
90 * ***********************************************************************
91 * Common header struct definitions for San/Device Mgmt
92 * ***********************************************************************
201 #define EXT_CC_LOOPBACK EXT_CC_LOOPBACK_OS
202 #define EXT_CC_READ_OPTION_ROM EXT_CC_READ_OPTION_ROM_OS
203 #define EXT_CC_READ_OPTION_ROM_EX EXT_CC_READ_OPTION_ROM_EX_OS
204 #define EXT_CC_UPDATE_OPTION_ROM EXT_CC_UPDATE_OPTION_ROM_OS
205 #define EXT_CC_UPDATE_OPTION_ROM_EX EXT_CC_UPDATE_OPTION_ROM_EX_OS
206 #define EXT_CC_GET_VPD EXT_CC_GET_VPD_OS
207 #define EXT_CC_SET_VPD EXT_CC_SET_VPD_OS
208 #define EXT_CC_GET_FCACHE EXT_CC_GET_FCACHE_OS
209 #define EXT_CC_GET_FCACHE_EX EXT_CC_GET_FCACHE_EX_OS
210 #define EXT_CC_HOST_DRVNAME EXT_CC_HOST_DRVNAME_OS
211 #define EXT_CC_GET_SFP_DATA EXT_CC_GET_SFP_DATA_OS
212 #define EXT_CC_WWPN_TO_SCSIADDR EXT_CC_WWPN_TO_SCSIADDR_OS
213 #define EXT_CC_PORT_PARAM EXT_CC_PORT_PARAM_OS
214 #define EXT_CC_GET_PCI_DATA EXT_CC_GET_PCI_DATA_OS
215 #define EXT_CC_GET_FWEXTTRACE EXT_CC_GET_FWEXTTRACE_OS
216 #define EXT_CC_GET_FWFCETRACE EXT_CC_GET_FWFCETRACE_OS
217 #define EXT_CC_GET_VP_CNT_ID EXT_CC_GET_VP_CNT_ID_OS
218 #define EXT_CC_VPORT_CMD EXT_CC_VPORT_CMD_OS
219 #define EXT_CC_ACCESS_FLASH EXT_CC_ACCESS_FLASH_OS
220 #define EXT_CC_RESET_FW EXT_CC_RESET_FW_OS
221
222 /*
223 * HBA port operations
224 */
225 #define EXT_CC_GET_DATA EXT_CC_GET_DATA_OS
226 #define EXT_CC_SET_DATA EXT_CC_SET_DATA_OS
227
228 /*
229 * The following DeviceControl / ioctl command codes currently are not
230 * supported.
231 */
232 #define EXT_CC_SEND_ELS_RTIN EXT_CC_SEND_ELS_RTIN_OS
233
234
235 /*
236 * ***********************************************************************
237 * EXT_IOCTL SubCode definition.
238 * These macros are being used for setting SubCode field in EXT_IOCTL
239 * structure.
240 * ***********************************************************************
241 */
254 #define EXT_SC_QUERY_CHIP 8
255 #define EXT_SC_QUERY_CNA_PORT 9
256 #define EXT_SC_QUERY_ADAPTER_VERSIONS 10
257
258 /*
259 * Get.
260 * Uses with EXT_GET_DATA as the ioctl code
261 */
262 /* 1 - 99 Common */
263 #define EXT_SC_GET_SCSI_ADDR 1 /* Currently Not Supported */
264 #define EXT_SC_GET_ERR_DETECTIONS 2 /* Currently Not Supported */
265 #define EXT_SC_GET_STATISTICS 3
266 #define EXT_SC_GET_BUS_MODE 4 /* Currently Not Supported */
267 #define EXT_SC_GET_DR_DUMP_BUF 5 /* Currently Not Supported */
268 #define EXT_SC_GET_RISC_CODE 6
269 #define EXT_SC_GET_FLASH_RAM 7
270 #define EXT_SC_GET_BEACON_STATE 8
271 #define EXT_SC_GET_DCBX_PARAM 9
272 #define EXT_SC_GET_FCF_LIST 10
273 #define EXT_SC_GET_RESOURCE_CNTS 11
274
275 /* 100 - 199 FC_INTF_TYPE */
276 #define EXT_SC_GET_LINK_STATUS 101 /* Currently Not Supported */
277 #define EXT_SC_GET_LOOP_ID 102 /* Currently Not Supported */
278 #define EXT_SC_GET_LUN_BITMASK 103
279 #define EXT_SC_GET_PORT_DATABASE 104 /* Currently Not Supported */
280 #define EXT_SC_GET_PORT_DATABASE_MEM 105 /* Currently Not Supported */
281 #define EXT_SC_GET_PORT_SUMMARY 106
282 #define EXT_SC_GET_POSITION_MAP 107
283 #define EXT_SC_GET_RETRY_CNT 108 /* Currently Not Supported */
284 #define EXT_SC_GET_RNID 109
285 #define EXT_SC_GET_RTIN 110 /* Currently Not Supported */
286 #define EXT_SC_GET_FC_LUN_BITMASK 111
287 #define EXT_SC_GET_FC_STATISTICS 112
288 #define EXT_SC_GET_FC4_STATISTICS 113
289 #define EXT_SC_GET_TARGET_ID 114
290
291
292 /* 200 - 299 SCSI_INTF_TYPE */
293 #define EXT_SC_GET_SEL_TIMEOUT 201 /* Currently Not Supported */
336 */
337 #define EXT_VF_SC_VPORT_GETINFO 1
338 #define EXT_VF_SC_VPORT_DELETE 2
339 #define EXT_VF_SC_VPORT_MODIFY 3
340 #define EXT_VF_SC_VPORT_CREATE 4
341
342 /*
343 * Flash access sub codes
344 * Used with EXT_CC_ACCESS_FLASH as the ioctl code.
345 */
346 #define EXT_SC_FLASH_READ 0
347 #define EXT_SC_FLASH_WRITE 1
348
349 /*
350 * Reset FW subcodes for Schultz
351 * Used with EXT_CC_RESET_FW as the ioctl code.
352 */
353 #define EXT_SC_RESET_FC_FW 1
354 #define EXT_SC_RESET_MPI_FW 2
355
356 /* Read */
357
358 /* Write */
359
360 /* Reset */
361
362 /* Request struct */
363
364
365 /*
366 * Response struct
367 */
368 typedef struct _EXT_HBA_NODE {
369 UINT32 DriverAttr; /* 4 */
370 UINT32 FWAttr; /* 4 */
371 UINT16 PortCount; /* 2; 1 */
372 UINT16 InterfaceType; /* 2; FC/SCSI */
373 UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
374 UINT8 Manufacturer[EXT_DEF_MAX_STR_SIZE]; /* 128; "QLOGIC" */
375 UINT8 Model[EXT_DEF_MAX_STR_SIZE]; /* 128; "QLA2200" */
376 UINT8 SerialNum[EXT_DEF_SERIAL_NUM_SIZE]; /* 4; 123 */
377 UINT8 DriverVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "7.4.3" */
378 UINT8 FWVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "2.1.6" */
379 UINT8 OptRomVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "1.44" */
380 UINT8 Reserved[32]; /* 32 */
381 } EXT_HBA_NODE, *PEXT_HBA_NODE; /* 696 */
382
383 /* HBA node query interface type */
384 #define EXT_DEF_FC_INTF_TYPE 1
385 #define EXT_DEF_SCSI_INTF_TYPE 2
386 #define EXT_DEF_VIRTUAL_FC_INTF_TYPE 3
387
388 typedef struct _EXT_HBA_PORT {
389 UINT64 Target; /* 8 */
390 UINT32 PortSupportedSpeed; /* 4 */
391 UINT32 PortSpeed; /* 4 */
392 UINT16 Type; /* 2; Port Type */
393 UINT16 State; /* 2; Port State */
394 UINT16 Mode; /* 2 */
395 UINT16 DiscPortCount; /* 2 */
396 UINT16 DiscPortNameType; /* 2; USE_NODE_NAME or */
397 /* USE_PORT_NAME */
398 UINT16 DiscTargetCount; /* 2 */
399 UINT16 Bus; /* 2 */
400 UINT16 Lun; /* 2 */
401 UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
402 UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4; 3 bytes valid Port Id. */
403 UINT8 PortSupportedFC4Types; /* 1 */
404 UINT8 PortActiveFC4Types; /* 1 */
405 UINT8 FabricName[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
406 UINT16 LinkState2; /* 2; sfp status */
407 UINT16 LinkState3; /* 2; reserved field */
408 UINT8 Reserved[6]; /* 6 */
409 } EXT_HBA_PORT, *PEXT_HBA_PORT; /* 64 */
410
411 /* FC-4 Instrumentation */
412 typedef struct _EXT_HBA_FC4Statistics {
413 INT64 InputRequests; /* 8 */
414 INT64 OutputRequests; /* 8 */
415 INT64 ControlRequests; /* 8 */
416 INT64 InputMegabytes; /* 8 */
417 INT64 OutputMegabytes; /* 8 */
418 UINT64 Reserved[6]; /* 48 */
419 } EXT_HBA_FC4STATISTICS, *PEXT_HBA_FC4STATISTICS; /* 88 */
420
421 typedef struct _EXT_LOOPBACK_REQ {
422 UINT32 TransferCount;
423 UINT32 IterationCount;
424 UINT32 BufferAddress;
425 UINT32 BufferLength;
426 UINT16 Options;
427 UINT8 Reserved[18];
428 } EXT_LOOPBACK_REQ, *PEXT_LOOPBACK_REQ;
467 #define EXT_DEF_LOOP_MODE 2
468 #define EXT_DEF_FL_MODE 3
469 #define EXT_DEF_N_MODE 4
470
471 /* Valid name type for Disc. port/target */
472 #define EXT_DEF_USE_NODE_NAME 1
473 #define EXT_DEF_USE_PORT_NAME 2
474
475 /* FC4 type values */
476 #define EXT_DEF_FC4_TYPE_SCSI 0x1
477 #define EXT_DEF_FC4_TYPE_IP 0x2
478 #define EXT_DEF_FC4_TYPE_SCTP 0x4
479 #define EXT_DEF_FC4_TYPE_VI 0x8
480
481 /* IIDMA rate values */
482 #define IIDMA_RATE_1GB 0x0
483 #define IIDMA_RATE_2GB 0x1
484 #define IIDMA_RATE_4GB 0x3
485 #define IIDMA_RATE_8GB 0x4
486 #define IIDMA_RATE_10GB 0x13
487 #define IIDMA_RATE_UNKNOWN 0xffff
488
489 /* IIDMA Mode values */
490 #define IIDMA_MODE_0 0
491 #define IIDMA_MODE_1 1
492 #define IIDMA_MODE_2 2
493 #define IIDMA_MODE_3 3
494
495 /* Port Speed values */
496 #define EXT_DEF_PORTSPEED_UNKNOWN 0x0
497 #define EXT_DEF_PORTSPEED_1GBIT 0x1
498 #define EXT_DEF_PORTSPEED_2GBIT 0x2
499 #define EXT_DEF_PORTSPEED_4GBIT 0x4
500 #define EXT_DEF_PORTSPEED_8GBIT 0x8
501 #define EXT_DEF_PORTSPEED_10GBIT 0x10
502 #define EXT_PORTSPEED_NOT_NEGOTIATED (1<<15) /* Speed not established */
503
504 typedef struct _EXT_DISC_PORT {
505 UINT64 TargetId; /* 8 */
506 UINT16 Type; /* 2; Port Type */
507 UINT16 Status; /* 2; Port Status */
508 UINT16 Bus; /* 2; n/a for Solaris */
509 UINT16 LoopID; /* 2; Loop ID */
510 UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
511 UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
512 UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4; 3 bytes used big endian */
513 UINT8 Local; /* 1; Local or Remote */
514 UINT8 Reserved[27]; /* 27 */
515 } EXT_DISC_PORT, *PEXT_DISC_PORT; /* 64 */
516
517 typedef struct _EXT_DISC_TARGET {
518 UINT64 TargetId; /* 8 */
519 UINT16 Type; /* 2; Target Type */
520 UINT16 Status; /* 2; Target Status */
521 UINT16 Bus; /* 2; n/a for Solaris */
707 typedef struct _RNID_DATA
708 {
709 UINT32 UnitType; /* 4 */
710 UINT32 NumOfAttachedNodes; /* 4 */
711 UINT16 TopoDiscFlags; /* 2 */
712 UINT16 Reserved; /* 2 */
713 UINT8 WWN[16]; /* 16 */
714 UINT8 PortId[4]; /* 4 */
715 UINT8 IPVersion[2]; /* 2 */
716 UINT8 UDPPortNumber[2]; /* 2 */
717 UINT8 IPAddress[16]; /* 16 */
718 } EXT_RNID_DATA, *PEXT_RNID_DATA; /* 52 */
719
720
721 /* SCSI pass-through */
722 typedef struct _EXT_SCSI_PASSTHRU {
723 EXT_SCSI_ADDR TargetAddr;
724 UINT8 Direction;
725 UINT8 CdbLength;
726 UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
727 UINT8 Reserved[66];
728 UINT8 SenseData[256];
729 } EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
730
731 /* FC SCSI pass-through */
732 typedef struct _EXT_FC_SCSI_PASSTHRU {
733 EXT_DEST_ADDR FCScsiAddr;
734 UINT8 Direction;
735 UINT8 CdbLength;
736 UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
737 UINT8 Reserved[64];
738 UINT8 SenseData[256];
739 } EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
740
741 /* SCSI pass-through direction */
742 #define EXT_DEF_SCSI_PASSTHRU_DATA_IN 1
743 #define EXT_DEF_SCSI_PASSTHRU_DATA_OUT 2
744
745
746 /* EXT_REG_AEN Request struct */
747 typedef struct _EXT_REG_AEN {
748 UINT32 Enable; /* 4; non-0 to enable, 0 to disable. */
749 UINT8 Reserved[4]; /* 4 */
750 } EXT_REG_AEN, *PEXT_REG_AEN; /* 8 */
751
752 /* EXT_GET_AEN Response struct */
753 typedef struct _EXT_ASYNC_EVENT {
754 UINT32 AsyncEventCode; /* 4 */
755 union {
756 struct {
757 UINT8 RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL]; /* 3 BE */
758 UINT8 AddrFormat; /* 1 */
759 UINT8 Rsvd_1[8]; /* 8 */
760 } RSCN;
761
762 UINT8 Reserved[12]; /* 12 */
763 } Payload;
764 } EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT; /* 16 */
765
766
767 /* Asynchronous Event Codes */
768 #define EXT_DEF_LIP_OCCURRED 0x8010
769 #define EXT_DEF_LINK_UP 0x8011
770 #define EXT_DEF_LINK_DOWN 0x8012
771 #define EXT_DEF_LIP_RESET 0x8013
772 #define EXT_DEF_RSCN 0x8015
773 #define EXT_DEF_DEVICE_UPDATE 0x8014
774
775 /* LED state information */
776 #define EXT_DEF_GRN_BLINK_OFF 0x00
777 #define EXT_DEF_GRN_BLINK_ON 0x01
778
779 typedef struct _EXT_BEACON_CONTROL {
780 UINT32 State; /* 4 */
781 UINT8 Reserved[12]; /* 12 */
782 } EXT_BEACON_CONTROL, *PEXT_BEACON_CONTROL; /* 16 */
783
784 /* Required # of entries in the queue buffer allocated. */
785 #define EXT_DEF_MAX_AEN_QUEUE EXT_DEF_MAX_AEN_QUEUE_OS
786
787 /*
788 * LUN BitMask structure definition, array of 8bit bytes,
789 * 1 bit per lun. When bit == 1, the lun is masked.
790 * Most significant bit of mask[0] is lun 0.
791 * Least significant bit of mask[0] is lun 7.
792 */
793 typedef struct _EXT_LUN_BIT_MASK {
1012 struct {
1013 UINT32 StartingAddr;
1014 UINT32 Reserved2;
1015 UINT32 Reserved3;
1016 } MenloMemory; /* For Read & Write Menlo Memory */
1017
1018 struct {
1019 UINT32 ConfigParamID;
1020 UINT32 ConfigParamData0;
1021 UINT32 ConfigParamData1;
1022 } MenloConfig; /* For change Configuration */
1023
1024 struct {
1025 UINT32 InfoDataType;
1026 UINT32 InfoContext;
1027 UINT32 Reserved;
1028 } MenloInfo; /* For fetch Menlo Info */
1029 } ap;
1030 } EXT_MENLO_ACCESS_PARAMETERS, *PEXT_MENLO_ACCESS_PARAMETERS;
1031
1032 #define INFO_DATA_TYPE_LOG_CONFIG_TBC ((10*7)+1)*4
1033 #define INFO_DATA_TYPE_PORT_STAT_ETH_TBC 0x194
1034 #define INFO_DATA_TYPE_PORT_STAT_FC_TBC 0xC0
1035 #define INFO_DATA_TYPE_LIF_STAT_TBC 0x40
1036 #define INFO_DATA_TYPE_ASIC_STAT_TBC 0x5F8
1037 #define INFO_DATA_TYPE_CONFIG_TBC 0x140
1038
1039 #define MENLO_OP_READ_MEM 0 /* Read Menlo Memory */
1040 #define MENLO_OP_WRITE_MEM 1 /* Write Menlo Memory */
1041 #define MENLO_OP_CHANGE_CONFIG 2 /* Change Configuration */
1042 #define MENLO_OP_GET_INFO 3 /* Fetch Menlo Info (Logs, & */
1043 /* Statistics, Configuration) */
1044
1045 typedef struct _EXT_MENLO_MANAGE_INFO {
1046 UINT64 pDataBytes;
1047 EXT_MENLO_ACCESS_PARAMETERS Parameters;
1048 UINT32 TotalByteCount;
1049 UINT16 Operation;
1050 UINT16 Reserved;
1051 } EXT_MENLO_MANAGE_INFO, *PEXT_MENLO_MANAGE_INFO;
1052
1090 } EXT_VPORT_ID_CNT, *PEXT_VPORT_ID_CNT;
1091
1092 typedef struct _EXT_VPORT_PARAMS {
1093 UINT32 vp_id;
1094 vport_options_t options;
1095 UINT8 wwpn[EXT_DEF_WWN_NAME_SIZE];
1096 UINT8 wwnn[EXT_DEF_WWN_NAME_SIZE];
1097 } EXT_VPORT_PARAMS, *PEXT_VPORT_PARAMS;
1098
1099 typedef struct _EXT_VPORT_INFO {
1100 UINT32 free;
1101 UINT32 used;
1102 UINT32 id;
1103 UINT32 state;
1104 UINT32 bound;
1105 UINT8 wwnn[EXT_DEF_WWN_NAME_SIZE];
1106 UINT8 wwpn[EXT_DEF_WWN_NAME_SIZE];
1107 UINT8 reserved[220];
1108 } EXT_VPORT_INFO, *PEXT_VPORT_INFO;
1109
1110 #define EXT_DEF_FCF_LIST_SIZE 4096 /* Bytes */
1111 #define FCF_INFO_RETURN_ALL 0
1112 #define FCF_INFO_RETURN_ONE 1
1113
1114 typedef struct _EXT_FCF_INFO {
1115 UINT16 CntrlFlags; /* 2 */
1116 UINT16 FcfId; /* 2 */
1117 UINT16 VlanId; /* 2 */
1118 UINT16 FcfFlags; /* 2 */
1119 UINT16 FcfAdvertPri; /* 2 */
1120 UINT16 FcfMacAddr1; /* 2 */
1121 UINT16 FcfMacAddr2; /* 2 */
1122 UINT16 FcfMacAddr3; /* 2 */
1123 UINT16 FcfMapHi; /* 2 */
1124 UINT16 FcfMapLow; /* 2 */
1125 UINT8 SwitchName[8]; /* 8 */
1126 UINT8 FabricName[8]; /* 8 */
1127 UINT8 Reserved1[8]; /* 8 */
1128 UINT16 CommFeatures; /* 2 */
1129 UINT16 Reserved2; /* 2 */
1133 } EXT_FCF_INFO, *PEXT_FCF_INFO;
1134
1135 typedef struct _EXT_FCF_LIST {
1136 UINT32 Options;
1137 UINT32 FcfIndex;
1138 UINT32 BufSize;
1139 EXT_FCF_INFO pFcfInfo[1];
1140 } EXT_FCF_LIST, *PEXT_FCF_LIST;
1141
1142 typedef struct _EXT_RESOURCE_CNTS {
1143 UINT32 OrgTgtXchgCtrlCnt; /* 4 */
1144 UINT32 CurTgtXchgCtrlCnt; /* 4 */
1145 UINT32 CurXchgCtrlCnt; /* 4 */
1146 UINT32 OrgXchgCtrlCnt; /* 4 */
1147 UINT32 CurIocbBufCnt; /* 4 */
1148 UINT32 OrgIocbBufCnt; /* 4 */
1149 UINT32 NoOfSupVPs; /* 4 */
1150 UINT32 NoOfSupFCFs; /* 4 */
1151 } EXT_RESOURCE_CNTS, *PEXT_RESOURCE_CNTS;
1152
1153 #ifdef __cplusplus
1154 }
1155 #endif
1156
1157 #endif /* _EXIOCT_H */
|
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21
22 /*
23 * Copyright 2015 QLogic Corporation. All rights reserved.
24 * Use is subject to license terms.
25 */
26
27 /*
28 * File Name: exioct.h
29 *
30 * San/Device Management Ioctl Header
31 * File is created to adhere to Solaris requirement using 8-space tabs.
32 *
33 * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
34 * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
35 * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
36 *
37 * ***********************************************************************
38 * * **
39 * * NOTICE **
40 * * COPYRIGHT (C) 2000-2015 QLOGIC CORPORATION **
41 * * ALL RIGHTS RESERVED **
42 * * **
43 * ***********************************************************************
44 */
45
46 #ifndef _EXIOCT_H
47 #define _EXIOCT_H
48
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53 #include <exioctso.h>
54
55 /*
56 * NOTE: the following version defines must be updated each time the
57 * changes made may affect the backward compatibility of the
58 * input/output relations of the SDM IOCTL functions.
59 */
60 #define EXT_VERSION 5
61
62 /*
63 * OS independent General definitions
64 */
65 #define EXT_DEF_SIGNATURE_SIZE 8
66 #define EXT_DEF_WWN_NAME_SIZE 8
67 #define EXT_DEF_WWP_NAME_SIZE 8
68 #define EXT_DEF_SERIAL_NUM_SIZE 4
69 #define EXT_DEF_PORTID_SIZE 4
70 #define EXT_DEF_PORTID_SIZE_ACTUAL 3
71 #define EXT_DEF_MAX_STR_SIZE 128
72 #define EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH 16
73 #define EXT_DEF_MAC_ADDRESS_SIZE 6
74
75 #define EXT_DEF_ADDR_MODE_32 1
76 #define EXT_DEF_ADDR_MODE_64 2
77
78 /*
79 * ***********************************************************************
80 * OS dependent General configuration defines
81 * ***********************************************************************
82 */
83 #define EXT_DEF_MAX_HBA EXT_DEF_MAX_HBA_OS
84 #define EXT_DEF_MAX_BUS EXT_DEF_MAX_BUS_OS
85 #define EXT_DEF_MAX_TARGET EXT_DEF_MAX_TARGET_OS
86 #define EXT_DEF_MAX_LUN EXT_DEF_MAX_LUN_OS
87 #define EXT_DEF_NON_SCSI3_MAX_LUN EXT_DEF_NON_SCSI3_MAX_LUN_OS
88
89 /*
90 * ***********************************************************************
91 * Common header struct definitions for San/Device Mgmt
92 * ***********************************************************************
201 #define EXT_CC_LOOPBACK EXT_CC_LOOPBACK_OS
202 #define EXT_CC_READ_OPTION_ROM EXT_CC_READ_OPTION_ROM_OS
203 #define EXT_CC_READ_OPTION_ROM_EX EXT_CC_READ_OPTION_ROM_EX_OS
204 #define EXT_CC_UPDATE_OPTION_ROM EXT_CC_UPDATE_OPTION_ROM_OS
205 #define EXT_CC_UPDATE_OPTION_ROM_EX EXT_CC_UPDATE_OPTION_ROM_EX_OS
206 #define EXT_CC_GET_VPD EXT_CC_GET_VPD_OS
207 #define EXT_CC_SET_VPD EXT_CC_SET_VPD_OS
208 #define EXT_CC_GET_FCACHE EXT_CC_GET_FCACHE_OS
209 #define EXT_CC_GET_FCACHE_EX EXT_CC_GET_FCACHE_EX_OS
210 #define EXT_CC_HOST_DRVNAME EXT_CC_HOST_DRVNAME_OS
211 #define EXT_CC_GET_SFP_DATA EXT_CC_GET_SFP_DATA_OS
212 #define EXT_CC_WWPN_TO_SCSIADDR EXT_CC_WWPN_TO_SCSIADDR_OS
213 #define EXT_CC_PORT_PARAM EXT_CC_PORT_PARAM_OS
214 #define EXT_CC_GET_PCI_DATA EXT_CC_GET_PCI_DATA_OS
215 #define EXT_CC_GET_FWEXTTRACE EXT_CC_GET_FWEXTTRACE_OS
216 #define EXT_CC_GET_FWFCETRACE EXT_CC_GET_FWFCETRACE_OS
217 #define EXT_CC_GET_VP_CNT_ID EXT_CC_GET_VP_CNT_ID_OS
218 #define EXT_CC_VPORT_CMD EXT_CC_VPORT_CMD_OS
219 #define EXT_CC_ACCESS_FLASH EXT_CC_ACCESS_FLASH_OS
220 #define EXT_CC_RESET_FW EXT_CC_RESET_FW_OS
221 #define EXT_CC_I2C_DATA EXT_CC_I2C_DATA_OS
222 #define EXT_CC_DUMP EXT_CC_DUMP_OS
223 #define EXT_CC_SERDES_REG_OP EXT_CC_SERDES_REG_OP_OS
224 #define EXT_CC_VF_STATE EXT_CC_VF_STATE_OS
225 #define EXT_CC_SERDES_REG_OP_EX EXT_CC_SERDES_REG_OP_EX_OS
226 #define EXT_CC_SEND_ELS_PASSTHRU EXT_CC_ELS_PASSTHRU_OS
227 #define EXT_CC_FLASH_UPDATE_CAPS EXT_CC_FLASH_UPDATE_CAPS_OS
228 #define EXT_CC_GET_BBCR_DATA EXT_CC_GET_BBCR_DATA_OS
229 /*
230 * HBA port operations
231 */
232 #define EXT_CC_GET_DATA EXT_CC_GET_DATA_OS
233 #define EXT_CC_SET_DATA EXT_CC_SET_DATA_OS
234
235 /*
236 * The following DeviceControl / ioctl command codes currently are not
237 * supported.
238 */
239 #define EXT_CC_SEND_ELS_RTIN EXT_CC_SEND_ELS_RTIN_OS
240
241
242 /*
243 * ***********************************************************************
244 * EXT_IOCTL SubCode definition.
245 * These macros are being used for setting SubCode field in EXT_IOCTL
246 * structure.
247 * ***********************************************************************
248 */
261 #define EXT_SC_QUERY_CHIP 8
262 #define EXT_SC_QUERY_CNA_PORT 9
263 #define EXT_SC_QUERY_ADAPTER_VERSIONS 10
264
265 /*
266 * Get.
267 * Uses with EXT_GET_DATA as the ioctl code
268 */
269 /* 1 - 99 Common */
270 #define EXT_SC_GET_SCSI_ADDR 1 /* Currently Not Supported */
271 #define EXT_SC_GET_ERR_DETECTIONS 2 /* Currently Not Supported */
272 #define EXT_SC_GET_STATISTICS 3
273 #define EXT_SC_GET_BUS_MODE 4 /* Currently Not Supported */
274 #define EXT_SC_GET_DR_DUMP_BUF 5 /* Currently Not Supported */
275 #define EXT_SC_GET_RISC_CODE 6
276 #define EXT_SC_GET_FLASH_RAM 7
277 #define EXT_SC_GET_BEACON_STATE 8
278 #define EXT_SC_GET_DCBX_PARAM 9
279 #define EXT_SC_GET_FCF_LIST 10
280 #define EXT_SC_GET_RESOURCE_CNTS 11
281 #define EXT_SC_GET_PRIV_STATS 12
282
283 /* 100 - 199 FC_INTF_TYPE */
284 #define EXT_SC_GET_LINK_STATUS 101 /* Currently Not Supported */
285 #define EXT_SC_GET_LOOP_ID 102 /* Currently Not Supported */
286 #define EXT_SC_GET_LUN_BITMASK 103
287 #define EXT_SC_GET_PORT_DATABASE 104 /* Currently Not Supported */
288 #define EXT_SC_GET_PORT_DATABASE_MEM 105 /* Currently Not Supported */
289 #define EXT_SC_GET_PORT_SUMMARY 106
290 #define EXT_SC_GET_POSITION_MAP 107
291 #define EXT_SC_GET_RETRY_CNT 108 /* Currently Not Supported */
292 #define EXT_SC_GET_RNID 109
293 #define EXT_SC_GET_RTIN 110 /* Currently Not Supported */
294 #define EXT_SC_GET_FC_LUN_BITMASK 111
295 #define EXT_SC_GET_FC_STATISTICS 112
296 #define EXT_SC_GET_FC4_STATISTICS 113
297 #define EXT_SC_GET_TARGET_ID 114
298
299
300 /* 200 - 299 SCSI_INTF_TYPE */
301 #define EXT_SC_GET_SEL_TIMEOUT 201 /* Currently Not Supported */
344 */
345 #define EXT_VF_SC_VPORT_GETINFO 1
346 #define EXT_VF_SC_VPORT_DELETE 2
347 #define EXT_VF_SC_VPORT_MODIFY 3
348 #define EXT_VF_SC_VPORT_CREATE 4
349
350 /*
351 * Flash access sub codes
352 * Used with EXT_CC_ACCESS_FLASH as the ioctl code.
353 */
354 #define EXT_SC_FLASH_READ 0
355 #define EXT_SC_FLASH_WRITE 1
356
357 /*
358 * Reset FW subcodes for Schultz
359 * Used with EXT_CC_RESET_FW as the ioctl code.
360 */
361 #define EXT_SC_RESET_FC_FW 1
362 #define EXT_SC_RESET_MPI_FW 2
363
364 /*
365 * Thermal temp adapter subcodes
366 * Used with EXT_CC_I2C_DATA as the ioctl code.
367 */
368 #define EXT_SC_GET_BOARD_TEMP 1
369
370 /*
371 * Dump sub codes
372 * Used with EXT_CC_DUMP_OP as the ioctl code.
373 */
374 #define EXT_SC_DUMP_SIZE 1
375 #define EXT_SC_DUMP_READ 2
376 #define EXT_SC_DUMP_TRIGGER 3
377
378 /*
379 * SerDes Register subcodes
380 * Used with EXT_CC_SERDES_REG_OP and EXT_CC_SERDES_REG_OP_EX
381 * as the ioctl code.
382 */
383 #define EXT_SC_READ_SERDES_REG 1
384 #define EXT_SC_WRITE_SERDES_REG 2
385
386 /* Flash update capabilities subcommands */
387 #define EXT_SC_GET_FLASH_UPDATE_CAPS 1
388 #define EXT_SC_SET_FLASH_UPDATE_CAPS 2
389
390 /* Read */
391
392 /* Write */
393
394 /* Reset */
395
396 /* Request struct */
397
398
399 /*
400 * Response struct
401 */
402 typedef struct _EXT_HBA_NODE {
403 UINT32 DriverAttr; /* 4 */
404 UINT32 FWAttr; /* 4 */
405 UINT16 PortCount; /* 2; 1 */
406 UINT16 InterfaceType; /* 2; FC/SCSI */
407 UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
408 UINT8 Manufacturer[EXT_DEF_MAX_STR_SIZE]; /* 128; "QLOGIC" */
409 UINT8 Model[EXT_DEF_MAX_STR_SIZE]; /* 128; "QLA2200" */
410 UINT8 SerialNum[EXT_DEF_SERIAL_NUM_SIZE]; /* 4; 123 */
411 UINT8 DriverVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "7.4.3" */
412 UINT8 FWVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "2.1.6" */
413 UINT8 OptRomVersion[EXT_DEF_MAX_STR_SIZE]; /* 128; "1.44" */
414 UINT8 MpiVersion[4]; /* 4 */
415 UINT8 PepFwVersion[4]; /* 4 */
416 UINT8 Reserved[24]; /* 24 */
417 } EXT_HBA_NODE, *PEXT_HBA_NODE; /* 696 */
418
419 /* HBA node query interface type */
420 #define EXT_DEF_FC_INTF_TYPE 1
421 #define EXT_DEF_SCSI_INTF_TYPE 2
422 #define EXT_DEF_VIRTUAL_FC_INTF_TYPE 3
423
424 typedef struct _EXT_HBA_PORT {
425 UINT64 Target; /* 8 */
426 UINT32 PortSupportedSpeed; /* 4 */
427 UINT32 PortSpeed; /* 4 */
428 UINT16 Type; /* 2; Port Type */
429 UINT16 State; /* 2; Port State */
430 UINT16 Mode; /* 2 */
431 UINT16 DiscPortCount; /* 2 */
432 UINT16 DiscPortNameType; /* 2; USE_NODE_NAME or */
433 /* USE_PORT_NAME */
434 UINT16 DiscTargetCount; /* 2 */
435 UINT16 Bus; /* 2 */
436 UINT16 Lun; /* 2 */
437 UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
438 UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4; 3 bytes valid Port Id. */
439 UINT8 PortSupportedFC4Types; /* 1 */
440 UINT8 PortActiveFC4Types; /* 1 */
441 UINT8 FabricName[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
442 UINT16 LinkState2; /* 2; sfp status */
443 UINT16 LinkState3; /* 2; reserved field */
444 UINT16 LinkState1; /* 2; sfp status */
445 UINT16 LinkState6; /* 2; sfp status */
446 UINT8 Reserved[2]; /* 2 */
447 } EXT_HBA_PORT, *PEXT_HBA_PORT; /* 64 */
448
449 /* FC-4 Instrumentation */
450 typedef struct _EXT_HBA_FC4Statistics {
451 INT64 InputRequests; /* 8 */
452 INT64 OutputRequests; /* 8 */
453 INT64 ControlRequests; /* 8 */
454 INT64 InputMegabytes; /* 8 */
455 INT64 OutputMegabytes; /* 8 */
456 UINT64 Reserved[6]; /* 48 */
457 } EXT_HBA_FC4STATISTICS, *PEXT_HBA_FC4STATISTICS; /* 88 */
458
459 typedef struct _EXT_LOOPBACK_REQ {
460 UINT32 TransferCount;
461 UINT32 IterationCount;
462 UINT32 BufferAddress;
463 UINT32 BufferLength;
464 UINT16 Options;
465 UINT8 Reserved[18];
466 } EXT_LOOPBACK_REQ, *PEXT_LOOPBACK_REQ;
505 #define EXT_DEF_LOOP_MODE 2
506 #define EXT_DEF_FL_MODE 3
507 #define EXT_DEF_N_MODE 4
508
509 /* Valid name type for Disc. port/target */
510 #define EXT_DEF_USE_NODE_NAME 1
511 #define EXT_DEF_USE_PORT_NAME 2
512
513 /* FC4 type values */
514 #define EXT_DEF_FC4_TYPE_SCSI 0x1
515 #define EXT_DEF_FC4_TYPE_IP 0x2
516 #define EXT_DEF_FC4_TYPE_SCTP 0x4
517 #define EXT_DEF_FC4_TYPE_VI 0x8
518
519 /* IIDMA rate values */
520 #define IIDMA_RATE_1GB 0x0
521 #define IIDMA_RATE_2GB 0x1
522 #define IIDMA_RATE_4GB 0x3
523 #define IIDMA_RATE_8GB 0x4
524 #define IIDMA_RATE_10GB 0x13
525 #define IIDMA_RATE_16GB 0x5
526 #define IIDMA_RATE_32GB 0x6
527 #define IIDMA_RATE_UNKNOWN 0xffff
528
529 /* IIDMA Mode values */
530 #define IIDMA_MODE_0 0
531 #define IIDMA_MODE_1 1
532 #define IIDMA_MODE_2 2
533 #define IIDMA_MODE_3 3
534
535 /* Port Speed values */
536 #define EXT_DEF_PORTSPEED_UNKNOWN 0x0
537 #define EXT_DEF_PORTSPEED_1GBIT 0x1
538 #define EXT_DEF_PORTSPEED_2GBIT 0x2
539 #define EXT_DEF_PORTSPEED_4GBIT 0x4
540 #define EXT_DEF_PORTSPEED_8GBIT 0x8
541 #define EXT_DEF_PORTSPEED_10GBIT 0x10
542 #define EXT_DEF_PORTSPEED_16GBIT 0x20
543 #define EXT_DEF_PORTSPEED_32GBIT 0x40
544 #define EXT_PORTSPEED_NOT_NEGOTIATED (1<<15) /* Speed not established */
545
546 typedef struct _EXT_DISC_PORT {
547 UINT64 TargetId; /* 8 */
548 UINT16 Type; /* 2; Port Type */
549 UINT16 Status; /* 2; Port Status */
550 UINT16 Bus; /* 2; n/a for Solaris */
551 UINT16 LoopID; /* 2; Loop ID */
552 UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
553 UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE]; /* 8 */
554 UINT8 Id[EXT_DEF_PORTID_SIZE]; /* 4; 3 bytes used big endian */
555 UINT8 Local; /* 1; Local or Remote */
556 UINT8 Reserved[27]; /* 27 */
557 } EXT_DISC_PORT, *PEXT_DISC_PORT; /* 64 */
558
559 typedef struct _EXT_DISC_TARGET {
560 UINT64 TargetId; /* 8 */
561 UINT16 Type; /* 2; Target Type */
562 UINT16 Status; /* 2; Target Status */
563 UINT16 Bus; /* 2; n/a for Solaris */
749 typedef struct _RNID_DATA
750 {
751 UINT32 UnitType; /* 4 */
752 UINT32 NumOfAttachedNodes; /* 4 */
753 UINT16 TopoDiscFlags; /* 2 */
754 UINT16 Reserved; /* 2 */
755 UINT8 WWN[16]; /* 16 */
756 UINT8 PortId[4]; /* 4 */
757 UINT8 IPVersion[2]; /* 2 */
758 UINT8 UDPPortNumber[2]; /* 2 */
759 UINT8 IPAddress[16]; /* 16 */
760 } EXT_RNID_DATA, *PEXT_RNID_DATA; /* 52 */
761
762
763 /* SCSI pass-through */
764 typedef struct _EXT_SCSI_PASSTHRU {
765 EXT_SCSI_ADDR TargetAddr;
766 UINT8 Direction;
767 UINT8 CdbLength;
768 UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
769 UINT8 Reserved[62];
770 UINT8 SenseData[256];
771 } EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
772
773 /* FC SCSI pass-through */
774 typedef struct _EXT_FC_SCSI_PASSTHRU {
775 EXT_DEST_ADDR FCScsiAddr;
776 UINT8 Direction;
777 UINT8 CdbLength;
778 UINT8 Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
779 UINT8 Reserved[60];
780 UINT8 SenseData[256];
781 } EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
782
783 /* SCSI pass-through direction */
784 #define EXT_DEF_SCSI_PASSTHRU_DATA_IN 1
785 #define EXT_DEF_SCSI_PASSTHRU_DATA_OUT 2
786
787
788 /* EXT_REG_AEN Request struct */
789 typedef struct _EXT_REG_AEN {
790 UINT32 Enable; /* 4; non-0 to enable, 0 to disable. */
791 UINT8 Reserved[4]; /* 4 */
792 } EXT_REG_AEN, *PEXT_REG_AEN; /* 8 */
793
794 /* EXT_GET_AEN Response struct */
795 typedef struct _EXT_ASYNC_EVENT {
796 UINT32 AsyncEventCode; /* 4 */
797 union {
798 struct {
799 UINT8 RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL]; /* 3 BE */
800 UINT8 AddrFormat; /* 1 */
801 UINT8 Rsvd_1[8]; /* 8 */
802 } RSCN;
803
804 UINT8 Reserved[12]; /* 12 */
805 } Payload;
806 } EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT; /* 16 */
807
808
809 /* Asynchronous Event Codes */
810 #define EXT_DEF_LIP_OCCURRED 0x8010
811 #define EXT_DEF_LINK_UP 0x8011
812 #define EXT_DEF_LINK_DOWN 0x8012
813 #define EXT_DEF_LIP_RESET 0x8013
814 #define EXT_DEF_RSCN 0x8015
815 #define EXT_DEF_DEVICE_UPDATE 0x8014
816 #define EXT_DEF_DPORT_DIAGS 0x8080
817
818 /* LED state information */
819 #define EXT_DEF_GRN_BLINK_OFF 0x00
820 #define EXT_DEF_GRN_BLINK_ON 0x01
821
822 typedef struct _EXT_BEACON_CONTROL {
823 UINT32 State; /* 4 */
824 UINT8 Reserved[12]; /* 12 */
825 } EXT_BEACON_CONTROL, *PEXT_BEACON_CONTROL; /* 16 */
826
827 /* Required # of entries in the queue buffer allocated. */
828 #define EXT_DEF_MAX_AEN_QUEUE EXT_DEF_MAX_AEN_QUEUE_OS
829
830 /*
831 * LUN BitMask structure definition, array of 8bit bytes,
832 * 1 bit per lun. When bit == 1, the lun is masked.
833 * Most significant bit of mask[0] is lun 0.
834 * Least significant bit of mask[0] is lun 7.
835 */
836 typedef struct _EXT_LUN_BIT_MASK {
1055 struct {
1056 UINT32 StartingAddr;
1057 UINT32 Reserved2;
1058 UINT32 Reserved3;
1059 } MenloMemory; /* For Read & Write Menlo Memory */
1060
1061 struct {
1062 UINT32 ConfigParamID;
1063 UINT32 ConfigParamData0;
1064 UINT32 ConfigParamData1;
1065 } MenloConfig; /* For change Configuration */
1066
1067 struct {
1068 UINT32 InfoDataType;
1069 UINT32 InfoContext;
1070 UINT32 Reserved;
1071 } MenloInfo; /* For fetch Menlo Info */
1072 } ap;
1073 } EXT_MENLO_ACCESS_PARAMETERS, *PEXT_MENLO_ACCESS_PARAMETERS;
1074
1075 #define INFO_DATA_TYPE_LOG_CONFIG_TBC ((10 * 7) + 1) * 4
1076 #define INFO_DATA_TYPE_PORT_STAT_ETH_TBC 0x194
1077 #define INFO_DATA_TYPE_PORT_STAT_FC_TBC 0xC0
1078 #define INFO_DATA_TYPE_LIF_STAT_TBC 0x40
1079 #define INFO_DATA_TYPE_ASIC_STAT_TBC 0x5F8
1080 #define INFO_DATA_TYPE_CONFIG_TBC 0x140
1081
1082 #define MENLO_OP_READ_MEM 0 /* Read Menlo Memory */
1083 #define MENLO_OP_WRITE_MEM 1 /* Write Menlo Memory */
1084 #define MENLO_OP_CHANGE_CONFIG 2 /* Change Configuration */
1085 #define MENLO_OP_GET_INFO 3 /* Fetch Menlo Info (Logs, & */
1086 /* Statistics, Configuration) */
1087
1088 typedef struct _EXT_MENLO_MANAGE_INFO {
1089 UINT64 pDataBytes;
1090 EXT_MENLO_ACCESS_PARAMETERS Parameters;
1091 UINT32 TotalByteCount;
1092 UINT16 Operation;
1093 UINT16 Reserved;
1094 } EXT_MENLO_MANAGE_INFO, *PEXT_MENLO_MANAGE_INFO;
1095
1133 } EXT_VPORT_ID_CNT, *PEXT_VPORT_ID_CNT;
1134
1135 typedef struct _EXT_VPORT_PARAMS {
1136 UINT32 vp_id;
1137 vport_options_t options;
1138 UINT8 wwpn[EXT_DEF_WWN_NAME_SIZE];
1139 UINT8 wwnn[EXT_DEF_WWN_NAME_SIZE];
1140 } EXT_VPORT_PARAMS, *PEXT_VPORT_PARAMS;
1141
1142 typedef struct _EXT_VPORT_INFO {
1143 UINT32 free;
1144 UINT32 used;
1145 UINT32 id;
1146 UINT32 state;
1147 UINT32 bound;
1148 UINT8 wwnn[EXT_DEF_WWN_NAME_SIZE];
1149 UINT8 wwpn[EXT_DEF_WWN_NAME_SIZE];
1150 UINT8 reserved[220];
1151 } EXT_VPORT_INFO, *PEXT_VPORT_INFO;
1152
1153 typedef struct _EXT_BOARD_TEMP {
1154 UINT16 IntTemp;
1155 UINT16 FracTemp;
1156 UINT8 Reserved[60];
1157 } EXT_BOARD_TEMP, *PEXT_BOARD_TEMP;
1158
1159 /* ASIC TEMPERATURE defines */
1160 #define EXT_DEF_ASIC_TEMP_COMMAND_COMPLETE 0x4000
1161 #define EXT_DEF_ASIC_TEMP_HOST_INT_ERR 0x4002
1162 #define EXT_DEF_ASIC_TEMP_COMMAND_ERR 0x4005
1163 #define EXT_DEF_ASIC_TEMP_COMMAND_PARAM_ERR 0x4006
1164
1165 typedef struct _EXT_SERDES_REG {
1166 UINT16 addr;
1167 UINT16 val;
1168 } EXT_SERDES_REG, *PEXT_SERDES_REG;
1169
1170 typedef struct _EXT_VF_STATE {
1171 UINT32 NoOfVFConfigured;
1172 UINT32 NoOfVFActive;
1173 } EXT_VF_STATE, *PEXT_VF_STATE;
1174
1175 typedef struct _EXT_SERDES_REG_EX {
1176 UINT32 addr;
1177 UINT32 val;
1178 } EXT_SERDES_REG_EX, *PEXT_SERDES_REG_EX;
1179
1180 #define EXT_DEF_FCF_LIST_SIZE 4096 /* Bytes */
1181 #define FCF_INFO_RETURN_ALL 0
1182 #define FCF_INFO_RETURN_ONE 1
1183
1184 typedef struct _EXT_FCF_INFO {
1185 UINT16 CntrlFlags; /* 2 */
1186 UINT16 FcfId; /* 2 */
1187 UINT16 VlanId; /* 2 */
1188 UINT16 FcfFlags; /* 2 */
1189 UINT16 FcfAdvertPri; /* 2 */
1190 UINT16 FcfMacAddr1; /* 2 */
1191 UINT16 FcfMacAddr2; /* 2 */
1192 UINT16 FcfMacAddr3; /* 2 */
1193 UINT16 FcfMapHi; /* 2 */
1194 UINT16 FcfMapLow; /* 2 */
1195 UINT8 SwitchName[8]; /* 8 */
1196 UINT8 FabricName[8]; /* 8 */
1197 UINT8 Reserved1[8]; /* 8 */
1198 UINT16 CommFeatures; /* 2 */
1199 UINT16 Reserved2; /* 2 */
1203 } EXT_FCF_INFO, *PEXT_FCF_INFO;
1204
1205 typedef struct _EXT_FCF_LIST {
1206 UINT32 Options;
1207 UINT32 FcfIndex;
1208 UINT32 BufSize;
1209 EXT_FCF_INFO pFcfInfo[1];
1210 } EXT_FCF_LIST, *PEXT_FCF_LIST;
1211
1212 typedef struct _EXT_RESOURCE_CNTS {
1213 UINT32 OrgTgtXchgCtrlCnt; /* 4 */
1214 UINT32 CurTgtXchgCtrlCnt; /* 4 */
1215 UINT32 CurXchgCtrlCnt; /* 4 */
1216 UINT32 OrgXchgCtrlCnt; /* 4 */
1217 UINT32 CurIocbBufCnt; /* 4 */
1218 UINT32 OrgIocbBufCnt; /* 4 */
1219 UINT32 NoOfSupVPs; /* 4 */
1220 UINT32 NoOfSupFCFs; /* 4 */
1221 } EXT_RESOURCE_CNTS, *PEXT_RESOURCE_CNTS;
1222
1223 #define FW_FCE_SIZE (0x4000 * 4) /* bytes - 16kb multiples */
1224
1225 typedef struct _EXT_FW_FCE_TRACE {
1226 UINT16 Registers[32];
1227 UINT8 TraceData[FW_FCE_SIZE]; /* Variable length */
1228 } EXT_FW_FCE_TRACE, *PEXT_FW_FCE_TRACE;
1229
1230 /* Request Buffer for ELS PT */
1231 #define EXT_DEF_WWPN_VALID 1
1232 #define EXT_DEF_WWNN_VALID 2
1233 #define EXT_DEF_PID_VALID 4
1234
1235 typedef struct _EXT_ELS_PT_REQ {
1236 UINT16 ValidMask;
1237 UINT8 WWNN[EXT_DEF_WWN_NAME_SIZE];
1238 UINT8 WWPN[EXT_DEF_WWN_NAME_SIZE];
1239 UINT8 Id[EXT_DEF_PORTID_SIZE];
1240 UINT8 Reserved[10];
1241 } EXT_ELS_PT_REQ, *PEXT_ELS_PT_REQ;
1242
1243 typedef struct _EXT_FLASH_UPDATE_CAPS {
1244 UINT64 Capabilities;
1245 UINT32 OutageDuration;
1246 UINT8 Reserved[20];
1247 } EXT_FLASH_UPDATE_CAPS, *PEXT_FLASH_UPDATE_CAPS;
1248
1249 /* BB_CR Status */
1250 #define EXT_DEF_BBCR_STATUS_DISABLED 0
1251 #define EXT_DEF_BBCR_STATUS_ENABLED 1
1252 #define EXT_DEF_BBCR_STATUS_UNKNOWN 2
1253
1254 /* BB_CR State */
1255 #define EXT_DEF_BBCR_STATE_OFFLINE 0
1256 #define EXT_DEF_BBCR_STATE_ONLINE 1
1257
1258 /* BB_CR Offline Reason Code */
1259 #define EXT_DEF_BBCR_REASON_PORT_SPEED 1
1260 #define EXT_DEF_BBCR_REASON_PEER_PORT 2
1261 #define EXT_DEF_BBCR_REASON_SWITCH 3
1262 #define EXT_DEF_BBCR_REASON_LOGIN_REJECT 4
1263
1264 typedef struct _EXT_BBCR_DATA {
1265 UINT8 Status; /* 1 - enabled, 0 - Disabled */
1266 UINT8 State; /* 1 - online, 0 - offline */
1267 UINT8 ConfiguredBBSCN; /* 0-15 */
1268 UINT8 NegotiatedBBSCN; /* 0-15 */
1269 UINT8 OfflineReasonCode;
1270 UINT16 mbx1; /* Port State */
1271 UINT8 Reserved[9];
1272 } EXT_BBCR_DATA, *PEXT_BBCR_DATA;
1273
1274 #ifdef __cplusplus
1275 }
1276 #endif
1277
1278 #endif /* _EXIOCT_H */
|