Print this page
NEX-5717 import QLogic 16G FC drivers
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>


   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 */