File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / smartmontools / csmisas.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Oct 14 07:54:03 2013 UTC (10 years, 8 months ago) by misho
Branches: smartmontools, elwix, MAIN
CVS tags: v6_2, HEAD
v 6.2

    1: /**************************************************************************
    2: 
    3: Module Name:
    4: 
    5:    CSMISAS.H
    6: 
    7: 
    8: Abstract:
    9: 
   10:    This file contains constants and data structure definitions used by drivers
   11:    that support the Common Storage Management Interface specification for
   12:    SAS or SATA in either the Windows or Linux.
   13: 
   14:    This should be considered as a reference implementation only.  Changes may
   15:    be necessary to accommodate a specific build environment or target OS.
   16: 
   17: Revision History:
   18: 
   19:    001  SEF   8/12/03  Initial release.
   20:    002  SEF   8/20/03  Cleanup to match documentation.
   21:    003  SEF   9/12/03  Additional cleanup, created combined header
   22:    004  SEF   9/23/03  Changed base types to match linux defaults
   23:                        Added RAID signature
   24:                        Added bControllerFlags to CSMI_SAS_CNTLR_CONFIG
   25:                        Changed CSMI_SAS_BEGIN_PACK to 8 for common structures
   26:                        Fixed other typos identified in first compilation test
   27:    005  SEF  10/03/03  Additions to match first version of CSMI document
   28:    006  SEF  10/14/03  Fixed typedef struct _CSMI_SAS_SMP_PASSTHRU_BUFFER
   29:                        Added defines for bConnectionRate
   30:    007  SEF  10/15/03  Added Firmware Download Control Code and support
   31:                        Added CSMI revision support
   32:    008  SEF  10/30/03  No functional change, just updated version to track
   33:                        spec changes
   34:    009  SEF  12/09/03  No functional change, just updated version to track
   35:                        spec changes
   36:    010  SEF   3/11/04  Fixed typedef struct CSMI_SAS_RAID_DRIVES to include the
   37:                        bFirmware member that is defined in the spec, but
   38:                        was missing in this file,
   39:                        added CC_CSMI_SAS_TASK_MANAGEMENT
   40:    011  SEF   4/02/04  No functional change, added comment line before
   41:                        CC_CSMI_SAS_TASK_MANAGEMENT
   42:    012  SEF   4/16/04  Added IOControllerNumber to linux header,
   43:                        Modified linux control codes to have upper word of
   44:                        0xCC77.... to indicate CSMI version 77
   45:                        Added bSignalClass to CC_CSMI_SET_PHY_INFO
   46:                        Added CC_CSMI_SAS_PHY_CONTROL support
   47:    013  SEF   5/14/04  Added CC_CSMI_SAS_GET_CONNECTOR_INFO support
   48:    014  SEF   5/24/04  No functional change, just updated version to track spec
   49:                        changes
   50:    015  SEF   6/16/04  changed bPinout to uPinout to reflect proper size,
   51:                        changed width of bLocation defines to reflect size
   52:    016  SEF   6/17/04  changed bLengthOfControls in CSMI_SAS_PHY_CONTROL
   53:                        to be proper size
   54:    017  SEF   9/17/04  added CSMI_SAS_SATA_PORT_SELECTOR,
   55:                        CSMI_SAS_LINK_VIRTUAL, CSMI_SAS_CON_NOT_PRESENT, and
   56:                        CSMI_SAS_CON_NOT_CONNECTED
   57:    018  SEF   9/20/04  added CSMI_SAS_PHY_USER_PATTERN,
   58:                        changed definition of CSMI_SAS_PHY_FIXED_PATTERN to not
   59:                        conflict with activate definition
   60:    019  SEF  12/06/04  added CSMI_SAS_GET_LOCATION
   61:                        added bSSPStatus to CSMI_SAS_SSP_PASSTHRU_STATUS
   62:                        structure
   63:    020  SEF   5/25/05  added CSMI_SAS_PHY_VIRTUAL_SMP, and changes to
   64:                        CSMI_SAS_GET_LOCATION
   65:    021  SEF  11/03/05  added new RAID creation functionality
   66:    022  SEF   2/01/06  corrected typo bNegotitiatedLInkRate
   67:                        Added two more RAID_TYPES, 7 and 8
   68:    023  SEF   4/04/06  added CSMI_RAID_TYPE_1E
   69:                        changed structures that contained surface scan
   70:                        to priority approach rather than time, causes
   71:                        0.89 to incompatible with 0.87, so a version
   72:                        check is necessary when interpreting the
   73:                        raid structures
   74:                        Added netware section
   75:    024 DRG    5/22/06  Added uFailureCode to CSMI_SAS_RAID_CONFIG and
   76:                        CSMI_SAS_RAID_FEATURES
   77:                        Changed __u64 fields to high and low __u32 fields in
   78:                        order to avoid backward compatibility issues with
   79:                        packing and alignment.
   80:                        Fixed alignment problem in CSMI_SAS_RAID_DRIVES.
   81:                        Added CSMI_SAS_CNTLR_SMART_ARRAY to uControllerFlags
   82:                        Reassigned the value of CSMI_SAS_CNTLR_RAID_CFG_SUPPORT
   83:                        to avoid a conflict.
   84: 
   85: **************************************************************************/
   86: 
   87: #ifndef _CSMI_SAS_H_
   88: #define _CSMI_SAS_H_
   89: 
   90: // CSMI Specification Revision, the intent is that all versions of the
   91: // specification will be backward compatible after the 1.00 release.
   92: // Major revision number, corresponds to xxxx. of CSMI specification
   93: // Minor revision number, corresponds to .xxxx of CSMI specification
   94: #define CSMI_MAJOR_REVISION   0
   95: #define CSMI_MINOR_REVISION   90
   96: 
   97: /*************************************************************************/
   98: /* PATCHES FOR TYPOS                                                     */
   99: /*************************************************************************/
  100: 
  101: #define bNegotitiatedLInkRate bNegotiatedLinkRate
  102: 
  103: /*************************************************************************/
  104: /* TARGET OS LINUX SPECIFIC CODE                                         */
  105: /*************************************************************************/
  106: 
  107: // EDM #ifdef _linux
  108: #ifdef __KERNEL__
  109: 
  110: // Linux base types
  111: 
  112: #include <linux/types.h>
  113: 
  114: #define __i8    char
  115: 
  116: // pack definition
  117: 
  118: // EDM #define CSMI_SAS_BEGIN_PACK(x)    pack(x)
  119: // EDM #define CSMI_SAS_END_PACK         pack()
  120: 
  121: // IOCTL Control Codes
  122: // (IoctlHeader.ControlCode)
  123: 
  124: // Control Codes prior to 0.77
  125: 
  126: // Control Codes requiring CSMI_ALL_SIGNATURE
  127: 
  128: // #define CC_CSMI_SAS_GET_DRIVER_INFO    0x12345678
  129: // #define CC_CSMI_SAS_GET_CNTLR_CONFIG   0x23456781
  130: // #define CC_CSMI_SAS_GET_CNTLR_STATUS   0x34567812
  131: // #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD  0x92345678
  132: 
  133: // Control Codes requiring CSMI_RAID_SIGNATURE
  134: 
  135: // #define CC_CSMI_SAS_GET_RAID_INFO      0x45678123
  136: // #define CC_CSMI_SAS_GET_RAID_CONFIG    0x56781234
  137: 
  138: // Control Codes requiring CSMI_SAS_SIGNATURE
  139: 
  140: // #define CC_CSMI_SAS_GET_PHY_INFO       0x67812345
  141: // #define CC_CSMI_SAS_SET_PHY_INFO       0x78123456
  142: // #define CC_CSMI_SAS_GET_LINK_ERRORS    0x81234567
  143: // #define CC_CSMI_SAS_SMP_PASSTHRU       0xA1234567
  144: // #define CC_CSMI_SAS_SSP_PASSTHRU       0xB1234567
  145: // #define CC_CSMI_SAS_STP_PASSTHRU       0xC1234567
  146: // #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xD1234567
  147: // #define CC_CSMI_SAS_GET_SCSI_ADDRESS   0xE1234567
  148: // #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xF1234567
  149: // #define CC_CSMI_SAS_TASK_MANAGEMENT    0xA2345678
  150: 
  151: // Control Codes for 0.77 and later
  152: 
  153: // Control Codes requiring CSMI_ALL_SIGNATURE
  154: 
  155: #define CC_CSMI_SAS_GET_DRIVER_INFO    0xCC770001
  156: #define CC_CSMI_SAS_GET_CNTLR_CONFIG   0xCC770002
  157: #define CC_CSMI_SAS_GET_CNTLR_STATUS   0xCC770003
  158: #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD  0xCC770004
  159: 
  160: // Control Codes requiring CSMI_RAID_SIGNATURE
  161: 
  162: #define CC_CSMI_SAS_GET_RAID_INFO      0xCC77000A
  163: #define CC_CSMI_SAS_GET_RAID_CONFIG    0xCC77000B
  164: #define CC_CSMI_SAS_GET_RAID_FEATURES  0xCC77000C
  165: #define CC_CSMI_SAS_SET_RAID_CONTROL   0xCC77000D
  166: #define CC_CSMI_SAS_GET_RAID_ELEMENT   0xCC77000E
  167: #define CC_CSMI_SAS_SET_RAID_OPERATION 0xCC77000F
  168: 
  169: // Control Codes requiring CSMI_SAS_SIGNATURE
  170: 
  171: #define CC_CSMI_SAS_GET_PHY_INFO       0xCC770014
  172: #define CC_CSMI_SAS_SET_PHY_INFO       0xCC770015
  173: #define CC_CSMI_SAS_GET_LINK_ERRORS    0xCC770016
  174: #define CC_CSMI_SAS_SMP_PASSTHRU       0xCC770017
  175: #define CC_CSMI_SAS_SSP_PASSTHRU       0xCC770018
  176: #define CC_CSMI_SAS_STP_PASSTHRU       0xCC770019
  177: #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0xCC770020
  178: #define CC_CSMI_SAS_GET_SCSI_ADDRESS   0xCC770021
  179: #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0xCC770022
  180: #define CC_CSMI_SAS_TASK_MANAGEMENT    0xCC770023
  181: #define CC_CSMI_SAS_GET_CONNECTOR_INFO 0xCC770024
  182: #define CC_CSMI_SAS_GET_LOCATION       0xCC770025
  183: 
  184: 
  185: // Control Codes requiring CSMI_PHY_SIGNATURE
  186: 
  187: #define CC_CSMI_SAS_PHY_CONTROL        0xCC77003C
  188: 
  189: // EDM #pragma CSMI_SAS_BEGIN_PACK(8)
  190: #pragma pack(8)
  191: 
  192: // IOCTL_HEADER
  193: typedef struct _IOCTL_HEADER {
  194:     __u32 IOControllerNumber;
  195:     __u32 Length;
  196:     __u32 ReturnCode;
  197:     __u32 Timeout;
  198:     __u16 Direction;
  199: } IOCTL_HEADER,
  200:   *PIOCTL_HEADER;
  201: 
  202: // EDM #pragma CSMI_SAS_END_PACK
  203: #pragma pack()
  204: 
  205: #endif
  206: 
  207: /*************************************************************************/
  208: /* TARGET OS WINDOWS SPECIFIC CODE                                       */
  209: /*************************************************************************/
  210: 
  211: #ifdef _WIN32
  212: 
  213: // windows IOCTL definitions
  214: 
  215: #if 0 // <ntddscsi.h> and CSMI_*_PACK are no longer needed
  216: 
  217: #ifndef _NTDDSCSIH_
  218: #include <ntddscsi.h>
  219: #endif
  220: 
  221: // pack definition
  222: 
  223: #if defined _MSC_VER
  224:    #define CSMI_SAS_BEGIN_PACK(x)    pack(push,x)
  225:    #define CSMI_SAS_END_PACK         pack(pop)
  226: #elif defined __BORLANDC__
  227:    #define CSMI_SAS_BEGIN_PACK(x)    option -a##x
  228:    #define CSMI_SAS_END_PACK         option -a.
  229: #else
  230:    #error "CSMISAS.H - Must externally define a pack compiler designator."
  231: #endif
  232: 
  233: #endif // #if 0
  234: 
  235: // base types
  236: 
  237: #define __u8    unsigned char
  238: #define __u16   unsigned short
  239: #ifndef __LP64__  // ILP32 (32-bit), LLP64 (64-bit MSVC, MinGW)
  240: #define __u32   unsigned long
  241: #else             // LP64 (64-bit Cygwin)
  242: #define __u32   unsigned int
  243: #endif
  244: #define __u64   unsigned __int64
  245: 
  246: #define __i8    char
  247: 
  248: // IOCTL Control Codes
  249: // (IoctlHeader.ControlCode)
  250: 
  251: // Control Codes requiring CSMI_ALL_SIGNATURE
  252: 
  253: #define CC_CSMI_SAS_GET_DRIVER_INFO    1
  254: #define CC_CSMI_SAS_GET_CNTLR_CONFIG   2
  255: #define CC_CSMI_SAS_GET_CNTLR_STATUS   3
  256: #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD  4
  257: 
  258: // Control Codes requiring CSMI_RAID_SIGNATURE
  259: 
  260: #define CC_CSMI_SAS_GET_RAID_INFO      10
  261: #define CC_CSMI_SAS_GET_RAID_CONFIG    11
  262: #define CC_CSMI_SAS_GET_RAID_FEATURES  12
  263: #define CC_CSMI_SAS_SET_RAID_CONTROL   13
  264: #define CC_CSMI_SAS_GET_RAID_ELEMENT   14
  265: #define CC_CSMI_SAS_SET_RAID_OPERATION 15
  266: 
  267: // Control Codes requiring CSMI_SAS_SIGNATURE
  268: 
  269: #define CC_CSMI_SAS_GET_PHY_INFO       20
  270: #define CC_CSMI_SAS_SET_PHY_INFO       21
  271: #define CC_CSMI_SAS_GET_LINK_ERRORS    22
  272: #define CC_CSMI_SAS_SMP_PASSTHRU       23
  273: #define CC_CSMI_SAS_SSP_PASSTHRU       24
  274: #define CC_CSMI_SAS_STP_PASSTHRU       25
  275: #define CC_CSMI_SAS_GET_SATA_SIGNATURE 26
  276: #define CC_CSMI_SAS_GET_SCSI_ADDRESS   27
  277: #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 28
  278: #define CC_CSMI_SAS_TASK_MANAGEMENT    29
  279: #define CC_CSMI_SAS_GET_CONNECTOR_INFO 30
  280: #define CC_CSMI_SAS_GET_LOCATION       31
  281: 
  282: // Control Codes requiring CSMI_PHY_SIGNATURE
  283: 
  284: #define CC_CSMI_SAS_PHY_CONTROL        60
  285: 
  286: #define IOCTL_HEADER SRB_IO_CONTROL
  287: #define PIOCTL_HEADER PSRB_IO_CONTROL
  288: 
  289: #endif
  290: 
  291: /*************************************************************************/
  292: /* TARGET OS NETWARE SPECIFIC CODE                                       */
  293: /*************************************************************************/
  294: 
  295: #ifdef _NETWARE
  296: 
  297: // NetWare IOCTL definitions
  298: 
  299: #define CSMI_SAS_BEGIN_PACK(x)    pack(x)
  300: #define CSMI_SAS_END_PACK         pack()
  301: 
  302: #ifndef LONG
  303: typedef unsigned long LONG;
  304: #endif
  305: 
  306: #ifndef WORD
  307: typedef unsigned short WORD;
  308: #endif
  309: 
  310: #ifndef BYTE
  311: typedef unsigned char BYTE;
  312: #endif
  313: 
  314: /* Need to have these definitions for Netware */
  315: #define __u8    unsigned char
  316: #define __u16   unsigned short
  317: #define __u32   unsigned long
  318: #define __u64   unsigned __int64
  319: 
  320: #define __i8    char
  321: 
  322: 
  323: // EDM #pragma CSMI_SAS_BEGIN_PACK(8)
  324: #pragma pack(8)
  325: 
  326: // IOCTL_HEADER
  327: typedef struct _IOCTL_HEADER {
  328:     __u32 Length;
  329:     __u32 ReturnCode;
  330: } IOCTL_HEADER,
  331:   *PIOCTL_HEADER;
  332: 
  333: // EDM #pragma CSMI_SAS_END_PACK
  334: #pragma pack()
  335: 
  336: // IOCTL Control Codes
  337: // (IoctlHeader.ControlCode)
  338: 
  339: // Control Codes requiring CSMI_ALL_SIGNATURE
  340: 
  341: #define CC_CSMI_SAS_GET_DRIVER_INFO    0x01FF0001
  342: #define CC_CSMI_SAS_GET_CNTLR_CONFIG   0x01FF0002
  343: #define CC_CSMI_SAS_GET_CNTLR_STATUS   0x01FF0003
  344: #define CC_CSMI_SAS_FIRMWARE_DOWNLOAD  0x01FF0004
  345: 
  346: // Control Codes requiring CSMI_RAID_SIGNATURE
  347: 
  348: #define CC_CSMI_SAS_GET_RAID_INFO      0x01FF000A
  349: #define CC_CSMI_SAS_GET_RAID_CONFIG    0x01FF000B
  350: #define CC_CSMI_SAS_GET_RAID_FEATURES  0x01FF000C
  351: #define CC_CSMI_SAS_SET_RAID_CONTROL   0x01FF000D
  352: #define CC_CSMI_SAS_GET_RAID_ELEMENT   0x01FF000E
  353: #define CC_CSMI_SAS_SET_RAID_OPERATION 0x01FF000F
  354: 
  355: // Control Codes requiring CSMI_SAS_SIGNATURE
  356: 
  357: #define CC_CSMI_SAS_GET_PHY_INFO       0x01FF0014
  358: #define CC_CSMI_SAS_SET_PHY_INFO       0x01FF0015
  359: #define CC_CSMI_SAS_GET_LINK_ERRORS    0x01FF0016
  360: #define CC_CSMI_SAS_SMP_PASSTHRU       0x01FF0017
  361: #define CC_CSMI_SAS_SSP_PASSTHRU       0x01FF0018
  362: #define CC_CSMI_SAS_STP_PASSTHRU       0x01FF0019
  363: #define CC_CSMI_SAS_GET_SATA_SIGNATURE 0x01FF001A
  364: #define CC_CSMI_SAS_GET_SCSI_ADDRESS   0x01FF001B
  365: #define CC_CSMI_SAS_GET_DEVICE_ADDRESS 0x01FF001C
  366: #define CC_CSMI_SAS_TASK_MANAGEMENT    0x01FF001D
  367: #define CC_CSMI_SAS_GET_CONNECTOR_INFO 0x01FF001E
  368: #define CC_CSMI_SAS_GET_LOCATION       0x01FF001F
  369: 
  370: // Control Codes requiring CSMI_PHY_SIGNATURE
  371: 
  372: #define CC_CSMI_SAS_PHY_CONTROL        60
  373: 
  374: #endif
  375: 
  376: /*************************************************************************/
  377: /* TARGET OS NOT DEFINED ERROR                                           */
  378: /*************************************************************************/
  379: 
  380: // EDM
  381: //#if (!_WIN32 && !_linux && !_NETWARE)
  382: //   #error "Unknown target OS."
  383: //#endif
  384: 
  385: /*************************************************************************/
  386: /* OS INDEPENDENT CODE                                                   */
  387: /*************************************************************************/
  388: 
  389: /* * * * * * * * * * Class Independent IOCTL Constants * * * * * * * * * */
  390: 
  391: // Return codes for all IOCTL's regardless of class
  392: // (IoctlHeader.ReturnCode)
  393: 
  394: #define CSMI_SAS_STATUS_SUCCESS              0
  395: #define CSMI_SAS_STATUS_FAILED               1
  396: #define CSMI_SAS_STATUS_BAD_CNTL_CODE        2
  397: #define CSMI_SAS_STATUS_INVALID_PARAMETER    3
  398: #define CSMI_SAS_STATUS_WRITE_ATTEMPTED      4
  399: 
  400: // Signature value
  401: // (IoctlHeader.Signature)
  402: 
  403: #define CSMI_ALL_SIGNATURE    "CSMIALL"
  404: 
  405: // Timeout value default of 60 seconds
  406: // (IoctlHeader.Timeout)
  407: 
  408: #define CSMI_ALL_TIMEOUT      60
  409: 
  410: //  Direction values for data flow on this IOCTL
  411: // (IoctlHeader.Direction, Linux only)
  412: #define CSMI_SAS_DATA_READ    0
  413: #define CSMI_SAS_DATA_WRITE   1
  414: 
  415: // I/O Bus Types
  416: // ISA and EISA bus types are not supported
  417: // (bIoBusType)
  418: 
  419: #define CSMI_SAS_BUS_TYPE_PCI       3
  420: #define CSMI_SAS_BUS_TYPE_PCMCIA    4
  421: 
  422: // Controller Status
  423: // (uStatus)
  424: 
  425: #define CSMI_SAS_CNTLR_STATUS_GOOD     1
  426: #define CSMI_SAS_CNTLR_STATUS_FAILED   2
  427: #define CSMI_SAS_CNTLR_STATUS_OFFLINE  3
  428: #define CSMI_SAS_CNTLR_STATUS_POWEROFF 4
  429: 
  430: // Offline Status Reason
  431: // (uOfflineReason)
  432: 
  433: #define CSMI_SAS_OFFLINE_REASON_NO_REASON             0
  434: #define CSMI_SAS_OFFLINE_REASON_INITIALIZING          1
  435: #define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_DEGRADED 2
  436: #define CSMI_SAS_OFFLINE_REASON_BACKSIDE_BUS_FAILURE  3
  437: 
  438: // Controller Class
  439: // (bControllerClass)
  440: 
  441: #define CSMI_SAS_CNTLR_CLASS_HBA    5
  442: 
  443: // Controller Flag bits
  444: // (uControllerFlags)
  445: 
  446: #define CSMI_SAS_CNTLR_SAS_HBA          0x00000001
  447: #define CSMI_SAS_CNTLR_SAS_RAID         0x00000002
  448: #define CSMI_SAS_CNTLR_SATA_HBA         0x00000004
  449: #define CSMI_SAS_CNTLR_SATA_RAID        0x00000008
  450: #define CSMI_SAS_CNTLR_SMART_ARRAY      0x00000010
  451: 
  452: // for firmware download
  453: #define CSMI_SAS_CNTLR_FWD_SUPPORT      0x00010000
  454: #define CSMI_SAS_CNTLR_FWD_ONLINE       0x00020000
  455: #define CSMI_SAS_CNTLR_FWD_SRESET       0x00040000
  456: #define CSMI_SAS_CNTLR_FWD_HRESET       0x00080000
  457: #define CSMI_SAS_CNTLR_FWD_RROM         0x00100000
  458: 
  459: // for RAID configuration supported
  460: #define CSMI_SAS_CNTLR_RAID_CFG_SUPPORT 0x01000000
  461: 
  462: // Download Flag bits
  463: // (uDownloadFlags)
  464: #define CSMI_SAS_FWD_VALIDATE       0x00000001
  465: #define CSMI_SAS_FWD_SOFT_RESET     0x00000002
  466: #define CSMI_SAS_FWD_HARD_RESET     0x00000004
  467: 
  468: // Firmware Download Status
  469: // (usStatus)
  470: #define CSMI_SAS_FWD_SUCCESS        0
  471: #define CSMI_SAS_FWD_FAILED         1
  472: #define CSMI_SAS_FWD_USING_RROM     2
  473: #define CSMI_SAS_FWD_REJECT         3
  474: #define CSMI_SAS_FWD_DOWNREV        4
  475: 
  476: // Firmware Download Severity
  477: // (usSeverity>
  478: #define CSMI_SAS_FWD_INFORMATION    0
  479: #define CSMI_SAS_FWD_WARNING        1
  480: #define CSMI_SAS_FWD_ERROR          2
  481: #define CSMI_SAS_FWD_FATAL          3
  482: 
  483: /* * * * * * * * * * SAS RAID Class IOCTL Constants  * * * * * * * * */
  484: 
  485: // Return codes for the RAID IOCTL's regardless of class
  486: // (IoctlHeader.ReturnCode)
  487: 
  488: #define CSMI_SAS_RAID_SET_OUT_OF_RANGE       1000
  489: #define CSMI_SAS_RAID_SET_BUFFER_TOO_SMALL   1001
  490: #define CSMI_SAS_RAID_SET_DATA_CHANGED       1002
  491: 
  492: // Signature value
  493: // (IoctlHeader.Signature)
  494: 
  495: #define CSMI_RAID_SIGNATURE    "CSMIARY"
  496: 
  497: // Timeout value default of 60 seconds
  498: // (IoctlHeader.Timeout)
  499: 
  500: #define CSMI_RAID_TIMEOUT      60
  501: 
  502: // RAID Types
  503: // (bRaidType)
  504: #define CSMI_SAS_RAID_TYPE_NONE     0
  505: #define CSMI_SAS_RAID_TYPE_0        1
  506: #define CSMI_SAS_RAID_TYPE_1        2
  507: #define CSMI_SAS_RAID_TYPE_10       3
  508: #define CSMI_SAS_RAID_TYPE_5        4
  509: #define CSMI_SAS_RAID_TYPE_15       5
  510: #define CSMI_SAS_RAID_TYPE_6        6
  511: #define CSMI_SAS_RAID_TYPE_50       7
  512: #define CSMI_SAS_RAID_TYPE_VOLUME   8
  513: #define CSMI_SAS_RAID_TYPE_1E       9
  514: #define CSMI_SAS_RAID_TYPE_OTHER    255
  515: // the last value 255 was already defined for other
  516: // so end is defined as 254
  517: #define CSMI_SAS_RAID_TYPE_END      254
  518: 
  519: // RAID Status
  520: // (bStatus)
  521: #define CSMI_SAS_RAID_SET_STATUS_OK             0
  522: #define CSMI_SAS_RAID_SET_STATUS_DEGRADED       1
  523: #define CSMI_SAS_RAID_SET_STATUS_REBUILDING     2
  524: #define CSMI_SAS_RAID_SET_STATUS_FAILED         3
  525: #define CSMI_SAS_RAID_SET_STATUS_OFFLINE        4
  526: #define CSMI_SAS_RAID_SET_STATUS_TRANSFORMING   5
  527: #define CSMI_SAS_RAID_SET_STATUS_QUEUED_FOR_REBUILD         6
  528: #define CSMI_SAS_RAID_SET_STATUS_QUEUED_FOR_TRANSFORMATION  7
  529: 
  530: // RAID Drive Count
  531: // (bDriveCount, 0xF1 to 0xFF are reserved)
  532: #define CSMI_SAS_RAID_DRIVE_COUNT_TOO_BIG   0xF1
  533: #define CSMI_SAS_RAID_DRIVE_COUNT_SUPRESSED 0xF2
  534: 
  535: // RAID Data Type
  536: // (bDataType)
  537: #define CSMI_SAS_RAID_DATA_DRIVES           0
  538: #define CSMI_SAS_RAID_DATA_DEVICE_ID        1
  539: #define CSMI_SAS_RAID_DATA_ADDITIONAL_DATA  2
  540: 
  541: // RAID Drive Status
  542: // (bDriveStatus)
  543: #define CSMI_SAS_DRIVE_STATUS_OK          0
  544: #define CSMI_SAS_DRIVE_STATUS_REBUILDING  1
  545: #define CSMI_SAS_DRIVE_STATUS_FAILED      2
  546: #define CSMI_SAS_DRIVE_STATUS_DEGRADED    3
  547: #define CSMI_SAS_DRIVE_STATUS_OFFLINE     4
  548: #define CSMI_SAS_DRIVE_STATUS_QUEUED_FOR_REBUILD 5
  549: 
  550: // RAID Drive Usage
  551: // (bDriveUsage)
  552: #define CSMI_SAS_DRIVE_CONFIG_NOT_USED      0
  553: #define CSMI_SAS_DRIVE_CONFIG_MEMBER        1
  554: #define CSMI_SAS_DRIVE_CONFIG_SPARE         2
  555: #define CSMI_SAS_DRIVE_CONFIG_SPARE_ACTIVE  3
  556: 
  557: // RAID Drive Type
  558: // (bDriveType)
  559: #define CSMI_SAS_DRIVE_TYPE_UNKNOWN         0
  560: #define CSMI_SAS_DRIVE_TYPE_SINGLE_PORT_SAS 1
  561: #define CSMI_SAS_DRIVE_TYPE_DUAL_PORT_SAS   2
  562: #define CSMI_SAS_DRIVE_TYPE_SATA            3
  563: #define CSMI_SAS_DRIVE_TYPE_SATA_PS         4
  564: #define CSMI_SAS_DRIVE_TYPE_OTHER           255
  565: 
  566: // RAID Write Protect
  567: // (bWriteProtect)
  568: #define CSMI_SAS_RAID_SET_WRITE_PROTECT_UNKNOWN     0
  569: #define CSMI_SAS_RAID_SET_WRITE_PROTECT_UNCHANGED   0
  570: #define CSMI_SAS_RAID_SET_WRITE_PROTECT_ENABLED     1
  571: #define CSMI_SAS_RAID_SET_WRITE_PROTECT_DISABLED    2
  572: 
  573: // RAID Cache Setting
  574: // (bCacheSetting)
  575: #define CSMI_SAS_RAID_SET_CACHE_UNKNOWN             0
  576: #define CSMI_SAS_RAID_SET_CACHE_UNCHANGED           0
  577: #define CSMI_SAS_RAID_SET_CACHE_ENABLED             1
  578: #define CSMI_SAS_RAID_SET_CACHE_DISABLED            2
  579: #define CSMI_SAS_RAID_SET_CACHE_CORRUPT             3
  580: 
  581: // RAID Features
  582: // (uFeatures)
  583: #define CSMI_SAS_RAID_FEATURE_TRANSFORMATION    0x00000001
  584: #define CSMI_SAS_RAID_FEATURE_REBUILD           0x00000002
  585: #define CSMI_SAS_RAID_FEATURE_SPLIT_MIRROR      0x00000004
  586: #define CSMI_SAS_RAID_FEATURE_MERGE_MIRROR      0x00000008
  587: #define CSMI_SAS_RAID_FEATURE_LUN_RENUMBER      0x00000010
  588: #define CSMI_SAS_RAID_FEATURE_SURFACE_SCAN      0x00000020
  589: #define CSMI_SAS_RAID_FEATURE_SPARES_SHARED     0x00000040
  590: 
  591: // RAID Priority
  592: // (bDefaultTransformPriority, etc.)
  593: #define CSMI_SAS_PRIORITY_UNKNOWN   0
  594: #define CSMI_SAS_PRIORITY_UNCHANGED 0
  595: #define CSMI_SAS_PRIORITY_AUTO      1
  596: #define CSMI_SAS_PRIORITY_OFF       2
  597: #define CSMI_SAS_PRIORITY_LOW       3
  598: #define CSMI_SAS_PRIORITY_MEDIUM    4
  599: #define CSMI_SAS_PRIORITY_HIGH      5
  600: 
  601: // RAID Transformation Rules
  602: // (uRaidSetTransformationRules)
  603: #define CSMI_SAS_RAID_RULE_AVAILABLE_MEMORY     0x00000001
  604: #define CSMI_SAS_RAID_RULE_OVERLAPPED_EXTENTS   0x00000002
  605: 
  606: // RAID Cache Ratios Supported
  607: // (bCacheRatiosSupported)
  608: // from 0 to 100 defines the write to read ratio, 0 is 100% write
  609: #define CSMI_SAS_RAID_CACHE_RATIO_RANGE     101
  610: #define CSMI_SAS_RAID_CACHE_RATIO_FIXED     102
  611: #define CSMI_SAS_RAID_CACHE_RATIO_AUTO      103
  612: #define CSMI_SAS_RAID_CACHE_RATIO_END       255
  613: 
  614: // RAID Cache Ratio Flag
  615: // (bCacheRatioFlag)
  616: #define CSMI_SAS_RAID_CACHE_RATIO_DISABLE   0
  617: #define CSMI_SAS_RAID_CACHE_RATIO_ENABLE    1
  618: 
  619: // RAID Clear Configuration Signature
  620: // (bClearConfiguration)
  621: #define CSMI_SAS_RAID_CLEAR_CONFIGURATION_SIGNATURE "RAIDCLR"
  622: 
  623: // RAID Failure Codes
  624: // (uFailureCode)
  625: #define CSMI_SAS_FAIL_CODE_OK                           0
  626: #define CSMI_SAS_FAIL_CODE_PARAMETER_INVALID            1000
  627: #define CSMI_SAS_FAIL_CODE_TRANSFORM_PRIORITY_INVALID   1001
  628: #define CSMI_SAS_FAIL_CODE_REBUILD_PRIORITY_INVALID     1002
  629: #define CSMI_SAS_FAIL_CODE_CACHE_RATIO_INVALID          1003
  630: #define CSMI_SAS_FAIL_CODE_SURFACE_SCAN_INVALID         1004
  631: #define CSMI_SAS_FAIL_CODE_CLEAR_CONFIGURATION_INVALID  1005
  632: #define CSMI_SAS_FAIL_CODE_ELEMENT_INDEX_INVALID        1006
  633: #define CSMI_SAS_FAIL_CODE_SUBELEMENT_INDEX_INVALID     1007
  634: #define CSMI_SAS_FAIL_CODE_EXTENT_INVALID               1008
  635: #define CSMI_SAS_FAIL_CODE_BLOCK_COUNT_INVALID          1009
  636: #define CSMI_SAS_FAIL_CODE_DRIVE_INDEX_INVALID          1010
  637: #define CSMI_SAS_FAIL_CODE_EXISTING_LUN_INVALID         1011
  638: #define CSMI_SAS_FAIL_CODE_RAID_TYPE_INVALID            1012
  639: #define CSMI_SAS_FAIL_CODE_STRIPE_SIZE_INVALID          1013
  640: #define CSMI_SAS_FAIL_CODE_TRANSFORMATION_INVALID       1014
  641: #define CSMI_SAS_FAIL_CODE_CHANGE_COUNT_INVALID         1015
  642: #define CSMI_SAS_FAIL_CODE_ENUMERATION_TYPE_INVALID     1016
  643: 
  644: #define CSMI_SAS_FAIL_CODE_EXCEEDED_RAID_SET_COUNT      2000
  645: #define CSMI_SAS_FAIL_CODE_DUPLICATE_LUN                2001
  646: 
  647: #define CSMI_SAS_FAIL_CODE_WAIT_FOR_OPERATION           3000
  648: 
  649: // RAID Enumeration Types
  650: // (uEnumerationType)
  651: #define CSMI_SAS_RAID_ELEMENT_TYPE_DRIVE                0
  652: #define CSMI_SAS_RAID_ELEMENT_TYPE_MODULE               1
  653: #define CSMI_SAS_RAID_ELEMENT_TYPE_DRIVE_RAID_SET       2
  654: #define CSMI_SAS_RAID_ELEMENT_TYPE_EXTENT_DRIVE         3
  655: 
  656: // RAID Extent Types
  657: // (bExtentType)
  658: #define CSMI_SAS_RAID_EXTENT_RESERVED       0
  659: #define CSMI_SAS_RAID_EXTENT_METADATA       1
  660: #define CSMI_SAS_RAID_EXTENT_ALLOCATED      2
  661: #define CSMI_SAS_RAID_EXTENT_UNALLOCATED    3
  662: 
  663: // RAID Operation Types
  664: // (uOperationType)
  665: #define CSMI_SAS_RAID_SET_CREATE            0
  666: #define CSMI_SAS_RAID_SET_LABEL             1
  667: #define CSMI_SAS_RAID_SET_TRANSFORM         2
  668: #define CSMI_SAS_RAID_SET_DELETE            3
  669: #define CSMI_SAS_RAID_SET_WRITE_PROTECT     4
  670: #define CSMI_SAS_RAID_SET_CACHE             5
  671: #define CSMI_SAS_RAID_SET_ONLINE_STATE      6
  672: #define CSMI_SAS_RAID_SET_SPARE             7
  673: 
  674: // RAID Transform Types
  675: // (bTransformType)
  676: #define CSMI_SAS_RAID_SET_TRANSFORM_SPLIT_MIRROR    0
  677: #define CSMI_SAS_RAID_SET_TRANSFORM_MERGE_RAID_0    1
  678: #define CSMI_SAS_RAID_SET_TRANSFORM_LUN_RENUMBER    2
  679: #define CSMI_SAS_RAID_SET_TRANSFORM_RAID_SET        3
  680: 
  681: // RAID Online State
  682: // (bOnlineState)
  683: #define CSMI_SAS_RAID_SET_STATE_UNKNOWN     0
  684: #define CSMI_SAS_RAID_SET_STATE_ONLINE      1
  685: #define CSMI_SAS_RAID_SET_STATE_OFFLINE     2
  686: 
  687: /* * * * * * * * * * SAS HBA Class IOCTL Constants * * * * * * * * * */
  688: 
  689: // Return codes for SAS IOCTL's
  690: // (IoctlHeader.ReturnCode)
  691: 
  692: #define CSMI_SAS_PHY_INFO_CHANGED            CSMI_SAS_STATUS_SUCCESS
  693: #define CSMI_SAS_PHY_INFO_NOT_CHANGEABLE     2000
  694: #define CSMI_SAS_LINK_RATE_OUT_OF_RANGE      2001
  695: 
  696: #define CSMI_SAS_PHY_DOES_NOT_EXIST          2002
  697: #define CSMI_SAS_PHY_DOES_NOT_MATCH_PORT     2003
  698: #define CSMI_SAS_PHY_CANNOT_BE_SELECTED      2004
  699: #define CSMI_SAS_SELECT_PHY_OR_PORT          2005
  700: #define CSMI_SAS_PORT_DOES_NOT_EXIST         2006
  701: #define CSMI_SAS_PORT_CANNOT_BE_SELECTED     2007
  702: #define CSMI_SAS_CONNECTION_FAILED           2008
  703: 
  704: #define CSMI_SAS_NO_SATA_DEVICE              2009
  705: #define CSMI_SAS_NO_SATA_SIGNATURE           2010
  706: #define CSMI_SAS_SCSI_EMULATION              2011
  707: #define CSMI_SAS_NOT_AN_END_DEVICE           2012
  708: #define CSMI_SAS_NO_SCSI_ADDRESS             2013
  709: #define CSMI_SAS_NO_DEVICE_ADDRESS           2014
  710: 
  711: // Signature value
  712: // (IoctlHeader.Signature)
  713: 
  714: #define CSMI_SAS_SIGNATURE    "CSMISAS"
  715: 
  716: // Timeout value default of 60 seconds
  717: // (IoctlHeader.Timeout)
  718: 
  719: #define CSMI_SAS_TIMEOUT      60
  720: 
  721: // Device types
  722: // (bDeviceType)
  723: 
  724: #define CSMI_SAS_PHY_UNUSED               0x00
  725: #define CSMI_SAS_NO_DEVICE_ATTACHED       0x00
  726: #define CSMI_SAS_END_DEVICE               0x10
  727: #define CSMI_SAS_EDGE_EXPANDER_DEVICE     0x20
  728: #define CSMI_SAS_FANOUT_EXPANDER_DEVICE   0x30
  729: 
  730: // Protocol options
  731: // (bInitiatorPortProtocol, bTargetPortProtocol)
  732: 
  733: #define CSMI_SAS_PROTOCOL_SATA   0x01
  734: #define CSMI_SAS_PROTOCOL_SMP    0x02
  735: #define CSMI_SAS_PROTOCOL_STP    0x04
  736: #define CSMI_SAS_PROTOCOL_SSP    0x08
  737: 
  738: // Negotiated and hardware link rates
  739: // (bNegotiatedLinkRate, bMinimumLinkRate, bMaximumLinkRate)
  740: 
  741: #define CSMI_SAS_LINK_RATE_UNKNOWN  0x00
  742: #define CSMI_SAS_PHY_DISABLED       0x01
  743: #define CSMI_SAS_LINK_RATE_FAILED   0x02
  744: #define CSMI_SAS_SATA_SPINUP_HOLD   0x03
  745: #define CSMI_SAS_SATA_PORT_SELECTOR 0x04
  746: #define CSMI_SAS_LINK_RATE_1_5_GBPS 0x08
  747: #define CSMI_SAS_LINK_RATE_3_0_GBPS 0x09
  748: #define CSMI_SAS_LINK_VIRTUAL       0x10
  749: 
  750: // Discover state
  751: // (bAutoDiscover)
  752: 
  753: #define CSMI_SAS_DISCOVER_NOT_SUPPORTED   0x00
  754: #define CSMI_SAS_DISCOVER_NOT_STARTED     0x01
  755: #define CSMI_SAS_DISCOVER_IN_PROGRESS     0x02
  756: #define CSMI_SAS_DISCOVER_COMPLETE        0x03
  757: #define CSMI_SAS_DISCOVER_ERROR           0x04
  758: 
  759: // Phy features
  760: 
  761: #define CSMI_SAS_PHY_VIRTUAL_SMP          0x01
  762: 
  763: // Programmed link rates
  764: // (bMinimumLinkRate, bMaximumLinkRate)
  765: // (bProgrammedMinimumLinkRate, bProgrammedMaximumLinkRate)
  766: 
  767: #define CSMI_SAS_PROGRAMMED_LINK_RATE_UNCHANGED 0x00
  768: #define CSMI_SAS_PROGRAMMED_LINK_RATE_1_5_GBPS  0x08
  769: #define CSMI_SAS_PROGRAMMED_LINK_RATE_3_0_GBPS  0x09
  770: 
  771: // Link rate
  772: // (bNegotiatedLinkRate in CSMI_SAS_SET_PHY_INFO)
  773: 
  774: #define CSMI_SAS_LINK_RATE_NEGOTIATE      0x00
  775: #define CSMI_SAS_LINK_RATE_PHY_DISABLED   0x01
  776: 
  777: // Signal class
  778: // (bSignalClass in CSMI_SAS_SET_PHY_INFO)
  779: 
  780: #define CSMI_SAS_SIGNAL_CLASS_UNKNOWN     0x00
  781: #define CSMI_SAS_SIGNAL_CLASS_DIRECT      0x01
  782: #define CSMI_SAS_SIGNAL_CLASS_SERVER      0x02
  783: #define CSMI_SAS_SIGNAL_CLASS_ENCLOSURE   0x03
  784: 
  785: // Link error reset
  786: // (bResetCounts)
  787: 
  788: #define CSMI_SAS_LINK_ERROR_DONT_RESET_COUNTS   0x00
  789: #define CSMI_SAS_LINK_ERROR_RESET_COUNTS        0x01
  790: 
  791: // Phy identifier
  792: // (bPhyIdentifier)
  793: 
  794: #define CSMI_SAS_USE_PORT_IDENTIFIER   0xFF
  795: 
  796: // Port identifier
  797: // (bPortIdentifier)
  798: 
  799: #define CSMI_SAS_IGNORE_PORT           0xFF
  800: 
  801: // Programmed link rates
  802: // (bConnectionRate)
  803: 
  804: #define CSMI_SAS_LINK_RATE_NEGOTIATED  0x00
  805: #define CSMI_SAS_LINK_RATE_1_5_GBPS    0x08
  806: #define CSMI_SAS_LINK_RATE_3_0_GBPS    0x09
  807: 
  808: // Connection status
  809: // (bConnectionStatus)
  810: 
  811: #define CSMI_SAS_OPEN_ACCEPT                          0
  812: #define CSMI_SAS_OPEN_REJECT_BAD_DESTINATION          1
  813: #define CSMI_SAS_OPEN_REJECT_RATE_NOT_SUPPORTED       2
  814: #define CSMI_SAS_OPEN_REJECT_NO_DESTINATION           3
  815: #define CSMI_SAS_OPEN_REJECT_PATHWAY_BLOCKED          4
  816: #define CSMI_SAS_OPEN_REJECT_PROTOCOL_NOT_SUPPORTED   5
  817: #define CSMI_SAS_OPEN_REJECT_RESERVE_ABANDON          6
  818: #define CSMI_SAS_OPEN_REJECT_RESERVE_CONTINUE         7
  819: #define CSMI_SAS_OPEN_REJECT_RESERVE_INITIALIZE       8
  820: #define CSMI_SAS_OPEN_REJECT_RESERVE_STOP             9
  821: #define CSMI_SAS_OPEN_REJECT_RETRY                    10
  822: #define CSMI_SAS_OPEN_REJECT_STP_RESOURCES_BUSY       11
  823: #define CSMI_SAS_OPEN_REJECT_WRONG_DESTINATION        12
  824: 
  825: // SSP Status
  826: // (bSSPStatus)
  827: 
  828: #define CSMI_SAS_SSP_STATUS_UNKNOWN     0x00
  829: #define CSMI_SAS_SSP_STATUS_WAITING     0x01
  830: #define CSMI_SAS_SSP_STATUS_COMPLETED   0x02
  831: #define CSMI_SAS_SSP_STATUS_FATAL_ERROR 0x03
  832: #define CSMI_SAS_SSP_STATUS_RETRY       0x04
  833: #define CSMI_SAS_SSP_STATUS_NO_TAG      0x05
  834: 
  835: // SSP Flags
  836: // (uFlags)
  837: 
  838: #define CSMI_SAS_SSP_READ           0x00000001
  839: #define CSMI_SAS_SSP_WRITE          0x00000002
  840: #define CSMI_SAS_SSP_UNSPECIFIED    0x00000004
  841: 
  842: #define CSMI_SAS_SSP_TASK_ATTRIBUTE_SIMPLE         0x00000000
  843: #define CSMI_SAS_SSP_TASK_ATTRIBUTE_HEAD_OF_QUEUE  0x00000010
  844: #define CSMI_SAS_SSP_TASK_ATTRIBUTE_ORDERED        0x00000020
  845: #define CSMI_SAS_SSP_TASK_ATTRIBUTE_ACA            0x00000040
  846: 
  847: // SSP Data present
  848: // (bDataPresent)
  849: 
  850: #define CSMI_SAS_SSP_NO_DATA_PRESENT         0x00
  851: #define CSMI_SAS_SSP_RESPONSE_DATA_PRESENT   0x01
  852: #define CSMI_SAS_SSP_SENSE_DATA_PRESENT      0x02
  853: 
  854: // STP Flags
  855: // (uFlags)
  856: 
  857: #define CSMI_SAS_STP_READ           0x00000001
  858: #define CSMI_SAS_STP_WRITE          0x00000002
  859: #define CSMI_SAS_STP_UNSPECIFIED    0x00000004
  860: #define CSMI_SAS_STP_PIO            0x00000010
  861: #define CSMI_SAS_STP_DMA            0x00000020
  862: #define CSMI_SAS_STP_PACKET         0x00000040
  863: #define CSMI_SAS_STP_DMA_QUEUED     0x00000080
  864: #define CSMI_SAS_STP_EXECUTE_DIAG   0x00000100
  865: #define CSMI_SAS_STP_RESET_DEVICE   0x00000200
  866: 
  867: // Task Management Flags
  868: // (uFlags)
  869: 
  870: #define CSMI_SAS_TASK_IU               0x00000001
  871: #define CSMI_SAS_HARD_RESET_SEQUENCE   0x00000002
  872: #define CSMI_SAS_SUPPRESS_RESULT       0x00000004
  873: 
  874: // Task Management Functions
  875: // (bTaskManagement)
  876: 
  877: #define CSMI_SAS_SSP_ABORT_TASK           0x01
  878: #define CSMI_SAS_SSP_ABORT_TASK_SET       0x02
  879: #define CSMI_SAS_SSP_CLEAR_TASK_SET       0x04
  880: #define CSMI_SAS_SSP_LOGICAL_UNIT_RESET   0x08
  881: #define CSMI_SAS_SSP_CLEAR_ACA            0x40
  882: #define CSMI_SAS_SSP_QUERY_TASK           0x80
  883: 
  884: // Task Management Information
  885: // (uInformation)
  886: 
  887: #define CSMI_SAS_SSP_TEST           1
  888: #define CSMI_SAS_SSP_EXCEEDED       2
  889: #define CSMI_SAS_SSP_DEMAND         3
  890: #define CSMI_SAS_SSP_TRIGGER        4
  891: 
  892: // Connector Pinout Information
  893: // (uPinout)
  894: 
  895: #define CSMI_SAS_CON_UNKNOWN              0x00000001
  896: #define CSMI_SAS_CON_SFF_8482             0x00000002
  897: #define CSMI_SAS_CON_SFF_8470_LANE_1      0x00000100
  898: #define CSMI_SAS_CON_SFF_8470_LANE_2      0x00000200
  899: #define CSMI_SAS_CON_SFF_8470_LANE_3      0x00000400
  900: #define CSMI_SAS_CON_SFF_8470_LANE_4      0x00000800
  901: #define CSMI_SAS_CON_SFF_8484_LANE_1      0x00010000
  902: #define CSMI_SAS_CON_SFF_8484_LANE_2      0x00020000
  903: #define CSMI_SAS_CON_SFF_8484_LANE_3      0x00040000
  904: #define CSMI_SAS_CON_SFF_8484_LANE_4      0x00080000
  905: 
  906: // Connector Location Information
  907: // (bLocation)
  908: 
  909: // same as uPinout above...
  910: // #define CSMI_SAS_CON_UNKNOWN              0x01
  911: #define CSMI_SAS_CON_INTERNAL             0x02
  912: #define CSMI_SAS_CON_EXTERNAL             0x04
  913: #define CSMI_SAS_CON_SWITCHABLE           0x08
  914: #define CSMI_SAS_CON_AUTO                 0x10
  915: #define CSMI_SAS_CON_NOT_PRESENT          0x20
  916: #define CSMI_SAS_CON_NOT_CONNECTED        0x80
  917: 
  918: // Device location identification
  919: // (bIdentify)
  920: 
  921: #define CSMI_SAS_LOCATE_UNKNOWN           0x00
  922: #define CSMI_SAS_LOCATE_FORCE_OFF         0x01
  923: #define CSMI_SAS_LOCATE_FORCE_ON          0x02
  924: 
  925: // Location Valid flags
  926: // (uLocationFlags)
  927: 
  928: #define CSMI_SAS_LOCATE_SAS_ADDRESS_VALID           0x00000001
  929: #define CSMI_SAS_LOCATE_SAS_LUN_VALID               0x00000002
  930: #define CSMI_SAS_LOCATE_ENCLOSURE_IDENTIFIER_VALID  0x00000004
  931: #define CSMI_SAS_LOCATE_ENCLOSURE_NAME_VALID        0x00000008
  932: #define CSMI_SAS_LOCATE_BAY_PREFIX_VALID            0x00000010
  933: #define CSMI_SAS_LOCATE_BAY_IDENTIFIER_VALID        0x00000020
  934: #define CSMI_SAS_LOCATE_LOCATION_STATE_VALID        0x00000040
  935: 
  936: /* * * * * * * * SAS Phy Control Class IOCTL Constants * * * * * * * * */
  937: 
  938: // Return codes for SAS Phy Control IOCTL's
  939: // (IoctlHeader.ReturnCode)
  940: 
  941: // Signature value
  942: // (IoctlHeader.Signature)
  943: 
  944: #define CSMI_PHY_SIGNATURE    "CSMIPHY"
  945: 
  946: // Phy Control Functions
  947: // (bFunction)
  948: 
  949: // values 0x00 to 0xFF are consistent in definition with the SMP PHY CONTROL
  950: // function defined in the SAS spec
  951: #define CSMI_SAS_PC_NOP                   0x00000000
  952: #define CSMI_SAS_PC_LINK_RESET            0x00000001
  953: #define CSMI_SAS_PC_HARD_RESET            0x00000002
  954: #define CSMI_SAS_PC_PHY_DISABLE           0x00000003
  955: // 0x04 to 0xFF reserved...
  956: #define CSMI_SAS_PC_GET_PHY_SETTINGS      0x00000100
  957: 
  958: // Link Flags
  959: #define CSMI_SAS_PHY_ACTIVATE_CONTROL     0x00000001
  960: #define CSMI_SAS_PHY_UPDATE_SPINUP_RATE   0x00000002
  961: #define CSMI_SAS_PHY_AUTO_COMWAKE         0x00000004
  962: 
  963: // Device Types for Phy Settings
  964: // (bType)
  965: #define CSMI_SAS_UNDEFINED 0x00
  966: #define CSMI_SAS_SATA      0x01
  967: #define CSMI_SAS_SAS       0x02
  968: 
  969: // Transmitter Flags
  970: // (uTransmitterFlags)
  971: #define CSMI_SAS_PHY_PREEMPHASIS_DISABLED    0x00000001
  972: 
  973: // Receiver Flags
  974: // (uReceiverFlags)
  975: #define CSMI_SAS_PHY_EQUALIZATION_DISABLED   0x00000001
  976: 
  977: // Pattern Flags
  978: // (uPatternFlags)
  979: // #define CSMI_SAS_PHY_ACTIVATE_CONTROL     0x00000001
  980: #define CSMI_SAS_PHY_DISABLE_SCRAMBLING      0x00000002
  981: #define CSMI_SAS_PHY_DISABLE_ALIGN           0x00000004
  982: #define CSMI_SAS_PHY_DISABLE_SSC             0x00000008
  983: 
  984: #define CSMI_SAS_PHY_FIXED_PATTERN           0x00000010
  985: #define CSMI_SAS_PHY_USER_PATTERN            0x00000020
  986: 
  987: // Fixed Patterns
  988: // (bFixedPattern)
  989: #define CSMI_SAS_PHY_CJPAT                   0x00000001
  990: #define CSMI_SAS_PHY_ALIGN                   0x00000002
  991: 
  992: // Type Flags
  993: // (bTypeFlags)
  994: #define CSMI_SAS_PHY_POSITIVE_DISPARITY      0x01
  995: #define CSMI_SAS_PHY_NEGATIVE_DISPARITY      0x02
  996: #define CSMI_SAS_PHY_CONTROL_CHARACTER       0x04
  997: 
  998: // Miscellaneous
  999: #define SLOT_NUMBER_UNKNOWN   0xFFFF
 1000: 
 1001: /*************************************************************************/
 1002: /* DATA STRUCTURES                                                       */
 1003: /*************************************************************************/
 1004: 
 1005: /* * * * * * * * * * Class Independent Structures * * * * * * * * * */
 1006: 
 1007: // EDM #pragma CSMI_SAS_BEGIN_PACK(8)
 1008: #pragma pack(8)
 1009: 
 1010: // CC_CSMI_SAS_DRIVER_INFO
 1011: 
 1012: typedef struct _CSMI_SAS_DRIVER_INFO {
 1013:    __u8  szName[81];
 1014:    __u8  szDescription[81];
 1015:    __u16 usMajorRevision;
 1016:    __u16 usMinorRevision;
 1017:    __u16 usBuildRevision;
 1018:    __u16 usReleaseRevision;
 1019:    __u16 usCSMIMajorRevision;
 1020:    __u16 usCSMIMinorRevision;
 1021: } CSMI_SAS_DRIVER_INFO,
 1022:   *PCSMI_SAS_DRIVER_INFO;
 1023: 
 1024: typedef struct _CSMI_SAS_DRIVER_INFO_BUFFER {
 1025:    IOCTL_HEADER IoctlHeader;
 1026:    CSMI_SAS_DRIVER_INFO Information;
 1027: } CSMI_SAS_DRIVER_INFO_BUFFER,
 1028:   *PCSMI_SAS_DRIVER_INFO_BUFFER;
 1029: 
 1030: // CC_CSMI_SAS_CNTLR_CONFIGURATION
 1031: 
 1032: typedef struct _CSMI_SAS_PCI_BUS_ADDRESS {
 1033:    __u8  bBusNumber;
 1034:    __u8  bDeviceNumber;
 1035:    __u8  bFunctionNumber;
 1036:    __u8  bReserved;
 1037: } CSMI_SAS_PCI_BUS_ADDRESS,
 1038:   *PCSMI_SAS_PCI_BUS_ADDRESS;
 1039: 
 1040: typedef union _CSMI_SAS_IO_BUS_ADDRESS {
 1041:    CSMI_SAS_PCI_BUS_ADDRESS PciAddress;
 1042:    __u8  bReserved[32];
 1043: } CSMI_SAS_IO_BUS_ADDRESS,
 1044:   *PCSMI_SAS_IO_BUS_ADDRESS;
 1045: 
 1046: typedef struct _CSMI_SAS_CNTLR_CONFIG {
 1047:    __u32 uBaseIoAddress;
 1048:    struct {
 1049:       __u32 uLowPart;
 1050:       __u32 uHighPart;
 1051:    } BaseMemoryAddress;
 1052:    __u32 uBoardID;
 1053:    __u16 usSlotNumber;
 1054:    __u8  bControllerClass;
 1055:    __u8  bIoBusType;
 1056:    CSMI_SAS_IO_BUS_ADDRESS BusAddress;
 1057:    __u8  szSerialNumber[81];
 1058:    __u16 usMajorRevision;
 1059:    __u16 usMinorRevision;
 1060:    __u16 usBuildRevision;
 1061:    __u16 usReleaseRevision;
 1062:    __u16 usBIOSMajorRevision;
 1063:    __u16 usBIOSMinorRevision;
 1064:    __u16 usBIOSBuildRevision;
 1065:    __u16 usBIOSReleaseRevision;
 1066:    __u32 uControllerFlags;
 1067:    __u16 usRromMajorRevision;
 1068:    __u16 usRromMinorRevision;
 1069:    __u16 usRromBuildRevision;
 1070:    __u16 usRromReleaseRevision;
 1071:    __u16 usRromBIOSMajorRevision;
 1072:    __u16 usRromBIOSMinorRevision;
 1073:    __u16 usRromBIOSBuildRevision;
 1074:    __u16 usRromBIOSReleaseRevision;
 1075:    __u8  bReserved[7];
 1076: } CSMI_SAS_CNTLR_CONFIG,
 1077:   *PCSMI_SAS_CNTLR_CONFIG;
 1078: 
 1079: typedef struct _CSMI_SAS_CNTLR_CONFIG_BUFFER {
 1080:    IOCTL_HEADER IoctlHeader;
 1081:    CSMI_SAS_CNTLR_CONFIG Configuration;
 1082: } CSMI_SAS_CNTLR_CONFIG_BUFFER,
 1083:   *PCSMI_SAS_CNTLR_CONFIG_BUFFER;
 1084: 
 1085: // CC_CSMI_SAS_CNTLR_STATUS
 1086: 
 1087: typedef struct _CSMI_SAS_CNTLR_STATUS {
 1088:    __u32 uStatus;
 1089:    __u32 uOfflineReason;
 1090:    __u8  bReserved[28];
 1091: } CSMI_SAS_CNTLR_STATUS,
 1092:   *PCSMI_SAS_CNTLR_STATUS;
 1093: 
 1094: typedef struct _CSMI_SAS_CNTLR_STATUS_BUFFER {
 1095:    IOCTL_HEADER IoctlHeader;
 1096:    CSMI_SAS_CNTLR_STATUS Status;
 1097: } CSMI_SAS_CNTLR_STATUS_BUFFER,
 1098:   *PCSMI_SAS_CNTLR_STATUS_BUFFER;
 1099: 
 1100: // CC_CSMI_SAS_FIRMWARE_DOWNLOAD
 1101: 
 1102: typedef struct _CSMI_SAS_FIRMWARE_DOWNLOAD {
 1103:    __u32 uBufferLength;
 1104:    __u32 uDownloadFlags;
 1105:    __u8  bReserved[32];
 1106:    __u16 usStatus;
 1107:    __u16 usSeverity;
 1108: } CSMI_SAS_FIRMWARE_DOWNLOAD,
 1109:   *PCSMI_SAS_FIRMWARE_DOWNLOAD;
 1110: 
 1111: typedef struct _CSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER {
 1112:    IOCTL_HEADER IoctlHeader;
 1113:    CSMI_SAS_FIRMWARE_DOWNLOAD Information;
 1114:    __u8  bDataBuffer[1];
 1115: } CSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER,
 1116:   *PCSMI_SAS_FIRMWARE_DOWNLOAD_BUFFER;
 1117: 
 1118: // CC_CSMI_SAS_RAID_INFO
 1119: 
 1120: typedef struct _CSMI_SAS_RAID_INFO {
 1121:    __u32 uNumRaidSets;
 1122:    __u32 uMaxDrivesPerSet;
 1123:    __u32 uMaxRaidSets;
 1124:    __u8  bMaxRaidTypes;
 1125:    __u8  bReservedByteFields[7];
 1126:    struct
 1127:    {
 1128:       __u32 uLowPart;
 1129:       __u32 uHighPart;
 1130:    } ulMinRaidSetBlocks;
 1131:    struct
 1132:    {
 1133:       __u32 uLowPart;
 1134:       __u32 uHighPart;
 1135:    } ulMaxRaidSetBlocks;
 1136:    __u32 uMaxPhysicalDrives;
 1137:    __u32 uMaxExtents;
 1138:    __u32 uMaxModules;
 1139:    __u32 uMaxTransformationMemory;
 1140:    __u32 uChangeCount;
 1141:    __u8  bReserved[44];
 1142: } CSMI_SAS_RAID_INFO,
 1143:   *PCSMI_SAS_RAID_INFO;
 1144: 
 1145: typedef struct _CSMI_SAS_RAID_INFO_BUFFER {
 1146:    IOCTL_HEADER IoctlHeader;
 1147:    CSMI_SAS_RAID_INFO Information;
 1148: } CSMI_SAS_RAID_INFO_BUFFER,
 1149:   *PCSMI_SAS_RAID_INFO_BUFFER;
 1150: 
 1151: // CC_CSMI_SAS_GET_RAID_CONFIG
 1152: 
 1153: typedef struct _CSMI_SAS_RAID_DRIVES {
 1154:    __u8  bModel[40];
 1155:    __u8  bFirmware[8];
 1156:    __u8  bSerialNumber[40];
 1157:    __u8  bSASAddress[8];
 1158:    __u8  bSASLun[8];
 1159:    __u8  bDriveStatus;
 1160:    __u8  bDriveUsage;
 1161:    __u16 usBlockSize;
 1162:    __u8  bDriveType;
 1163:    __u8  bReserved[15];
 1164:    __u32 uDriveIndex;
 1165:    struct
 1166:    {
 1167:       __u32 uLowPart;
 1168:       __u32 uHighPart;
 1169:    } ulTotalUserBlocks;
 1170: } CSMI_SAS_RAID_DRIVES,
 1171:   *PCSMI_SAS_RAID_DRIVES;
 1172: 
 1173: typedef struct _CSMI_SAS_RAID_DEVICE_ID {
 1174:    __u8  bDeviceIdentificationVPDPage[1];
 1175: } CSMI_SAS_RAID_DEVICE_ID,
 1176:   *PCSMI_SAS_RAID_DEVICE_ID;
 1177: 
 1178: typedef struct _CSMI_SAS_RAID_SET_ADDITIONAL_DATA {
 1179:    __u8  bLabel[16];
 1180:    __u8  bRaidSetLun[8];
 1181:    __u8  bWriteProtection;
 1182:    __u8  bCacheSetting;
 1183:    __u8  bCacheRatio;
 1184:    __u16 usBlockSize;
 1185:    __u8  bReservedBytes[11];
 1186:    struct
 1187:    {
 1188:       __u32 uLowPart;
 1189:       __u32 uHighPart;
 1190:    } ulRaidSetExtentOffset;
 1191:    struct
 1192:    {
 1193:       __u32 uLowPart;
 1194:       __u32 uHighPart;
 1195:    } ulRaidSetBlocks;
 1196:    __u32 uStripeSizeInBlocks;
 1197:    __u32 uSectorsPerTrack;
 1198:    __u8  bApplicationScratchPad[16];
 1199:    __u32 uNumberOfHeads;
 1200:    __u32 uNumberOfTracks;
 1201:    __u8  bReserved[24];
 1202: } CSMI_SAS_RAID_SET_ADDITIONAL_DATA,
 1203:   *PCSMI_SAS_RAID_SET_ADDITIONAL_DATA;
 1204: 
 1205: typedef struct _CSMI_SAS_RAID_CONFIG {
 1206:    __u32 uRaidSetIndex;
 1207:    __u32 uCapacity;
 1208:    __u32 uStripeSize;
 1209:    __u8  bRaidType;
 1210:    __u8  bStatus;
 1211:    __u8  bInformation;
 1212:    __u8  bDriveCount;
 1213:    __u8  bDataType;
 1214:    __u8  bReserved[11];
 1215:    __u32 uFailureCode;
 1216:    __u32 uChangeCount;
 1217:    union {
 1218:       CSMI_SAS_RAID_DRIVES Drives[1];
 1219:       CSMI_SAS_RAID_DEVICE_ID DeviceId[1];
 1220:       CSMI_SAS_RAID_SET_ADDITIONAL_DATA Data[1];
 1221:    };
 1222: } CSMI_SAS_RAID_CONFIG,
 1223:    *PCSMI_SAS_RAID_CONFIG;
 1224: 
 1225: typedef struct _CSMI_SAS_RAID_CONFIG_BUFFER {
 1226:    IOCTL_HEADER IoctlHeader;
 1227:    CSMI_SAS_RAID_CONFIG Configuration;
 1228: } CSMI_SAS_RAID_CONFIG_BUFFER,
 1229:   *PCSMI_SAS_RAID_CONFIG_BUFFER;
 1230: 
 1231: // CC_CSMI_SAS_GET_RAID_FEATURES
 1232: 
 1233: typedef struct _CSMI_SAS_RAID_TYPE_DESCRIPTION {
 1234:   __u8  bRaidType;
 1235:   __u8  bReservedBytes[7];
 1236:   __u32 uSupportedStripeSizeMap;
 1237:   __u8  bReserved[24];
 1238: } CSMI_SAS_RAID_TYPE_DESCRIPTION,
 1239:   *PCSMI_SAS_RAID_TYPE_DESCRIPTION;
 1240: 
 1241: typedef struct _CSMI_SAS_RAID_FEATURES {
 1242:    __u32 uFeatures;
 1243:    __u8  bReservedFeatures[32];
 1244:    __u8  bDefaultTransformPriority;
 1245:    __u8  bTransformPriority;
 1246:    __u8  bDefaultRebuildPriority;
 1247:    __u8  bRebuildPriority;
 1248:    __u8  bDefaultSurfaceScanPriority;
 1249:    __u8  bSurfaceScanPriority;
 1250:    __u16 usReserved;
 1251:    __u32 uRaidSetTransformationRules;
 1252:    __u32 uReserved[11];
 1253:    CSMI_SAS_RAID_TYPE_DESCRIPTION RaidType[24];
 1254:    __u8  bCacheRatiosSupported[104];
 1255:    __u32 uChangeCount;
 1256:    __u32 uFailureCode;
 1257:    __u8  bReserved[120];
 1258: } CSMI_SAS_RAID_FEATURES,
 1259:   *PCSMI_SAS_RAID_FEATURES;
 1260: 
 1261: typedef struct _CSMI_SAS_RAID_FEATURES_BUFFER {
 1262:    IOCTL_HEADER IoctlHeader;
 1263:    CSMI_SAS_RAID_FEATURES Information;
 1264: } CSMI_SAS_RAID_FEATURES_BUFFER,
 1265:   *PCSMI_SAS_RAID_FEATURES_BUFFER;
 1266: 
 1267: // CC_CSMI_SAS_SET_RAID_CONTROL
 1268: 
 1269: typedef struct _CSMI_SAS_RAID_CONTROL {
 1270:    __u8  bTransformPriority;
 1271:    __u8  bRebuildPriority;
 1272:    __u8  bCacheRatioFlag;
 1273:    __u8  bCacheRatio;
 1274:    __u8  bSurfaceScanPriority;
 1275:    __u8  bReservedBytes[15];
 1276:    __u8  bClearConfiguration[8];
 1277:    __u32 uChangeCount;
 1278:    __u8  bReserved[88];
 1279:    __u32 uFailureCode;
 1280:    __u8  bFailureDescription[80];
 1281: } CSMI_SAS_RAID_CONTROL,
 1282:   *PCSMI_SAS_RAID_CONTROL;
 1283: 
 1284: typedef struct _CSMI_SAS_RAID_CONTROL_BUFFER {
 1285:    IOCTL_HEADER IoctlHeader;
 1286:    CSMI_SAS_RAID_CONTROL Information;
 1287: } CSMI_SAS_RAID_CONTROL_BUFFER,
 1288:   *PCSMI_SAS_RAID_CONTROL_BUFFER;
 1289: 
 1290: // CC_CSMI_SAS_GET_RAID_ELEMENT
 1291: 
 1292: typedef struct _CSMI_SAS_DRIVE_EXTENT_INFO {
 1293:    __u32 uDriveIndex;
 1294:    __u8  bExtentType;
 1295:    __u8  bReservedBytes[7];
 1296:    struct
 1297:    {
 1298:       __u32 uLowPart;
 1299:       __u32 uHighPart;
 1300:    } ulExtentOffset;
 1301:    struct
 1302:    {
 1303:       __u32 uLowPart;
 1304:       __u32 uHighPart;
 1305:    } ulExtentBlocks;
 1306:    __u32 uRaidSetIndex;
 1307:    __u8  bReserved[96];
 1308: } CSMI_SAS_DRIVE_EXTENT_INFO,
 1309:   *PCSMI_SAS_DRIVE_EXTENT_INFO;
 1310: 
 1311: typedef struct _CSMI_SAS_RAID_MODULE_INFO {
 1312:    __u8  bReserved[128];
 1313: } CSMI_SAS_RAID_MODULE_INFO,
 1314:   *PCSMI_SAS_RAID_MODULE_INFO;
 1315: 
 1316: typedef struct _CSMI_SAS_DRIVE_LOCATION {
 1317:    __u8  bConnector[16];
 1318:    __u8  bBoxName[16];
 1319:    __u32 uBay;
 1320:    __u8  bReservedBytes[4];
 1321:    __u8  bAttachedSASAddress[8];
 1322:    __u8  bAttachedPhyIdentifier;
 1323:    __u8  bReserved[79];
 1324: } CSMI_SAS_DRIVE_LOCATION,
 1325:   *PCSMI_SAS_DRIVE_LOCATION;
 1326: 
 1327: typedef struct _CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA {
 1328:    __u8  bNegotiatedLinkRate[2];
 1329:    __u8  bReserved[126];
 1330: } CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA,
 1331:   *PCSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA;
 1332: 
 1333: typedef struct _CSMI_SAS_DRIVE_INFO {
 1334:    CSMI_SAS_RAID_DRIVES Device;
 1335:    CSMI_SAS_RAID_DRIVES_ADDITIONAL_DATA Data;
 1336:    CSMI_SAS_DRIVE_LOCATION Location;
 1337:    __u8  bReserved[16];
 1338: } CSMI_SAS_DRIVE_INFO,
 1339:   *PCSMI_SAS_DRIVE_INFO;
 1340: 
 1341: typedef struct _CSMI_SAS_RAID_ELEMENT {
 1342:    __u32 uEnumerationType;
 1343:    __u32 uElementIndex;
 1344:    __u32 uNumElements;
 1345:    __u32 uChangeCount;
 1346:    __u32 uSubElementIndex;
 1347:    __u8  bReserved[32];
 1348:    __u32 uFailureCode;
 1349:    __u8  bFailureDescription[80];
 1350:    union {
 1351:        CSMI_SAS_DRIVE_INFO Drive;
 1352:        CSMI_SAS_RAID_MODULE_INFO Module;
 1353:        CSMI_SAS_DRIVE_EXTENT_INFO Extent;
 1354:    } Element;
 1355: } CSMI_SAS_RAID_ELEMENT,
 1356:   *PCSMI_SAS_RAID_ELEMENT;
 1357: 
 1358: typedef struct _CSMI_SAS_RAID_ELEMENT_BUFFER {
 1359:    IOCTL_HEADER IoctlHeader;
 1360:    CSMI_SAS_RAID_ELEMENT Information;
 1361: } CSMI_SAS_RAID_ELEMENT_BUFFER,
 1362:   *PCSMI_SAS_RAID_ELEMENT_BUFFER;
 1363: 
 1364: // CC_CSMI_SAS_SET_RAID_OPERATION
 1365: 
 1366: typedef struct _CSMI_SAS_RAID_SET_LIST {
 1367:    __u32 uRaidSetIndex;
 1368:    __u8  bExistingLun[8];
 1369:    __u8  bNewLun[8];
 1370:    __u8  bReserved[12];
 1371: } CSMI_SAS_RAID_SET_LIST,
 1372:   *PCSMI_SAS_RAID_SET_LIST;
 1373: 
 1374: typedef struct _CSMI_SAS_RAID_SET_DRIVE_LIST {
 1375:    __u32 uDriveIndex;
 1376:    __u8  bDriveUsage;
 1377:    __u8  bReserved[27];
 1378: } CSMI_SAS_RAID_SET_DRIVE_LIST,
 1379:   *PCSMI_SAS_RAID_SET_DRIVE_LIST;
 1380: 
 1381: typedef struct _CSMI_SAS_RAID_SET_SPARE_INFO {
 1382:    __u32 uRaidSetIndex;
 1383:    __u32 uDriveCount;
 1384:    __u8  bApplicationScratchPad[16];
 1385:    __u8  bReserved[104];
 1386: } CSMI_SAS_RAID_SET_SPARE_INFO,
 1387:   *PCSMI_SAS_RAID_SET_SPARE_INFO;
 1388: 
 1389: typedef struct _CSMI_SAS_RAID_SET_ONLINE_STATE_INFO {
 1390:    __u32 uRaidSetIndex;
 1391:    __u8  bOnlineState;
 1392:    __u8  bReserved[123];
 1393: } CSMI_SAS_RAID_SET_ONLINE_STATE_INFO,
 1394:   *PCSMI_SAS_RAID_SET_ONLINE_STATE_INFO;
 1395: 
 1396: typedef struct _CSMI_SAS_RAID_SET_CACHE_INFO {
 1397:    __u32 uRaidSetIndex;
 1398:    __u8  bCacheSetting;
 1399:    __u8  bCacheRatioFlag;
 1400:    __u8  bCacheRatio;
 1401:    __u8  bReserved[121];
 1402: } CSMI_SAS_RAID_SET_CACHE_INFO,
 1403:   *PCSMI_SAS_RAID_SET_CACHE_INFO;
 1404: 
 1405: typedef struct _CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO {
 1406:    __u32 uRaidSetIndex;
 1407:    __u8  bWriteProtectSetting;
 1408:    __u8  bReserved[123];
 1409: } CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO,
 1410:   *PCSMI_SAS_RAID_SET_WRITE_PROTECT_INFO;
 1411: 
 1412: typedef struct _CSMI_SAS_RAID_SET_DELETE_INFO {
 1413:    __u32 uRaidSetIndex;
 1414:    __u8  bReserved[124];
 1415: } CSMI_SAS_RAID_SET_DELETE_INFO,
 1416:   *PCSMI_SAS_RAID_SET_DELETE_INFO;
 1417: 
 1418: typedef struct _CSMI_SAS_RAID_SET_MODIFY_INFO {
 1419:    __u8  bRaidType;
 1420:    __u8  bReservedBytes[7];
 1421:    __u32 uStripeSize;
 1422:    struct
 1423:    {
 1424:       __u32 uLowPart;
 1425:       __u32 uHighPart;
 1426:    } ulRaidSetBlocks;
 1427:    struct
 1428:    {
 1429:       __u32 uLowPart;
 1430:       __u32 uHighPart;
 1431:    } ulRaidSetExtentOffset;
 1432:    __u32 uDriveCount;
 1433:    __u8  bReserved[96];
 1434: } CSMI_SAS_RAID_SET_MODIFY_INFO,
 1435:   *PCSMI_SAS_RAID_SET_MODIFY_INFO;
 1436: 
 1437: typedef struct _CSMI_SAS_RAID_SET_TRANSFORM_INFO {
 1438:    __u8  bTransformType;
 1439:    __u8  bReservedBytes[3];
 1440:    __u32 uRaidSetIndex;
 1441:    __u8  bRaidType;
 1442:    __u8  bReservedBytes2[11];
 1443:    __u32 uAdditionalRaidSetIndex;
 1444:    __u32 uRaidSetCount;
 1445:    __u8  bApplicationScratchPad[16];
 1446:    CSMI_SAS_RAID_SET_MODIFY_INFO Modify;
 1447:    __u8  bReserved[80];
 1448: } CSMI_SAS_RAID_SET_TRANSFORM_INFO,
 1449:   *PCSMI_SAS_RAID_SET_TRANSFORM_INFO;
 1450: 
 1451: typedef struct _CSMI_SAS_RAID_SET_LABEL_INFO {
 1452:    __u32 uRaidSetIndex;
 1453:    __u8  bLabel[16];
 1454:    __u8  bReserved[108];
 1455: } CSMI_SAS_RAID_SET_LABEL_INFO,
 1456:   *PCSMI_SAS_RAID_SET_LABEL_INFO;
 1457: 
 1458: typedef struct _CSMI_SAS_RAID_SET_CREATE_INFO {
 1459:    __u8  bRaidType;
 1460:    __u8  bReservedBytes[7];
 1461:    __u32 uStripeSize;
 1462:    __u32 uTrackSectorCount;
 1463:    struct
 1464:    {
 1465:       __u32 uLowPart;
 1466:       __u32 uHighPart;
 1467:    } ulRaidSetBlocks;
 1468:    struct
 1469:    {
 1470:       __u32 uLowPart;
 1471:       __u32 uHighPart;
 1472:    } ulRaidSetExtentOffset;
 1473:    __u32 uDriveCount;
 1474:    __u8  bLabel[16];
 1475:    __u32 uRaidSetIndex;
 1476:    __u8  bApplicationScratchPad[16];
 1477:    __u32 uNumberOfHeads;
 1478:    __u32 uNumberOfTracks;
 1479:    __u8  bReserved[48];
 1480: } CSMI_SAS_RAID_SET_CREATE_INFO,
 1481:   *PCSMI_SAS_RAID_SET_CREATE_INFO;
 1482: 
 1483: typedef struct _CSMI_SAS_RAID_SET_OPERATION {
 1484:    __u32 uOperationType;
 1485:    __u32 uChangeCount;
 1486:    __u32 uFailureCode;
 1487:    __u8  bFailureDescription[80];
 1488:    __u8  bReserved[28];
 1489:    union {
 1490:        CSMI_SAS_RAID_SET_CREATE_INFO Create;
 1491:        CSMI_SAS_RAID_SET_LABEL_INFO Label;
 1492:        CSMI_SAS_RAID_SET_TRANSFORM_INFO Transform;
 1493:        CSMI_SAS_RAID_SET_DELETE_INFO Delete;
 1494:        CSMI_SAS_RAID_SET_WRITE_PROTECT_INFO Protect;
 1495:        CSMI_SAS_RAID_SET_CACHE_INFO Cache;
 1496:        CSMI_SAS_RAID_SET_ONLINE_STATE_INFO State;
 1497:        CSMI_SAS_RAID_SET_SPARE_INFO Spare;
 1498:    } Operation;
 1499:    union {
 1500:        CSMI_SAS_RAID_SET_DRIVE_LIST DriveList[1];
 1501:        CSMI_SAS_RAID_SET_LIST RaidSetList[1];
 1502:    } Parameters;
 1503: } CSMI_SAS_RAID_SET_OPERATION,
 1504:   *PCSMI_SAS_RAID_SET_OPERATION;
 1505: 
 1506: typedef struct _CSMI_SAS_RAID_SET_OPERATION_BUFFER {
 1507:    IOCTL_HEADER IoctlHeader;
 1508:    CSMI_SAS_RAID_SET_OPERATION Information;
 1509: } CSMI_SAS_RAID_SET_OPERATION_BUFFER,
 1510:   *PCSMI_SAS_RAID_SET_OPERATION_BUFFER;
 1511: 
 1512: /* * * * * * * * * * SAS HBA Class Structures * * * * * * * * * */
 1513: 
 1514: // CC_CSMI_SAS_GET_PHY_INFO
 1515: 
 1516: typedef struct _CSMI_SAS_IDENTIFY {
 1517:    __u8  bDeviceType;
 1518:    __u8  bRestricted;
 1519:    __u8  bInitiatorPortProtocol;
 1520:    __u8  bTargetPortProtocol;
 1521:    __u8  bRestricted2[8];
 1522:    __u8  bSASAddress[8];
 1523:    __u8  bPhyIdentifier;
 1524:    __u8  bSignalClass;
 1525:    __u8  bReserved[6];
 1526: } CSMI_SAS_IDENTIFY,
 1527:   *PCSMI_SAS_IDENTIFY;
 1528: 
 1529: typedef struct _CSMI_SAS_PHY_ENTITY {
 1530:    CSMI_SAS_IDENTIFY Identify;
 1531:    __u8  bPortIdentifier;
 1532:    __u8  bNegotiatedLinkRate;
 1533:    __u8  bMinimumLinkRate;
 1534:    __u8  bMaximumLinkRate;
 1535:    __u8  bPhyChangeCount;
 1536:    __u8  bAutoDiscover;
 1537:    __u8  bPhyFeatures;
 1538:    __u8  bReserved;
 1539:    CSMI_SAS_IDENTIFY Attached;
 1540: } CSMI_SAS_PHY_ENTITY,
 1541:   *PCSMI_SAS_PHY_ENTITY;
 1542: 
 1543: typedef struct _CSMI_SAS_PHY_INFO {
 1544:    __u8  bNumberOfPhys;
 1545:    __u8  bReserved[3];
 1546:    CSMI_SAS_PHY_ENTITY Phy[32];
 1547: } CSMI_SAS_PHY_INFO,
 1548:   *PCSMI_SAS_PHY_INFO;
 1549: 
 1550: typedef struct _CSMI_SAS_PHY_INFO_BUFFER {
 1551:    IOCTL_HEADER IoctlHeader;
 1552:    CSMI_SAS_PHY_INFO Information;
 1553: } CSMI_SAS_PHY_INFO_BUFFER,
 1554:   *PCSMI_SAS_PHY_INFO_BUFFER;
 1555: 
 1556: // CC_CSMI_SAS_SET_PHY_INFO
 1557: 
 1558: typedef struct _CSMI_SAS_SET_PHY_INFO {
 1559:    __u8  bPhyIdentifier;
 1560:    __u8  bNegotiatedLinkRate;
 1561:    __u8  bProgrammedMinimumLinkRate;
 1562:    __u8  bProgrammedMaximumLinkRate;
 1563:    __u8  bSignalClass;
 1564:    __u8  bReserved[3];
 1565: } CSMI_SAS_SET_PHY_INFO,
 1566:   *PCSMI_SAS_SET_PHY_INFO;
 1567: 
 1568: typedef struct _CSMI_SAS_SET_PHY_INFO_BUFFER {
 1569:    IOCTL_HEADER IoctlHeader;
 1570:    CSMI_SAS_SET_PHY_INFO Information;
 1571: } CSMI_SAS_SET_PHY_INFO_BUFFER,
 1572:   *PCSMI_SAS_SET_PHY_INFO_BUFFER;
 1573: 
 1574: // CC_CSMI_SAS_GET_LINK_ERRORS
 1575: 
 1576: typedef struct _CSMI_SAS_LINK_ERRORS {
 1577:    __u8  bPhyIdentifier;
 1578:    __u8  bResetCounts;
 1579:    __u8  bReserved[2];
 1580:    __u32 uInvalidDwordCount;
 1581:    __u32 uRunningDisparityErrorCount;
 1582:    __u32 uLossOfDwordSyncCount;
 1583:    __u32 uPhyResetProblemCount;
 1584: } CSMI_SAS_LINK_ERRORS,
 1585:   *PCSMI_SAS_LINK_ERRORS;
 1586: 
 1587: typedef struct _CSMI_SAS_LINK_ERRORS_BUFFER {
 1588:    IOCTL_HEADER IoctlHeader;
 1589:    CSMI_SAS_LINK_ERRORS Information;
 1590: } CSMI_SAS_LINK_ERRORS_BUFFER,
 1591:   *PCSMI_SAS_LINK_ERRORS_BUFFER;
 1592: 
 1593: // CC_CSMI_SAS_SMP_PASSTHRU
 1594: 
 1595: typedef struct _CSMI_SAS_SMP_REQUEST {
 1596:    __u8  bFrameType;
 1597:    __u8  bFunction;
 1598:    __u8  bReserved[2];
 1599:    __u8  bAdditionalRequestBytes[1016];
 1600: } CSMI_SAS_SMP_REQUEST,
 1601:   *PCSMI_SAS_SMP_REQUEST;
 1602: 
 1603: typedef struct _CSMI_SAS_SMP_RESPONSE {
 1604:    __u8  bFrameType;
 1605:    __u8  bFunction;
 1606:    __u8  bFunctionResult;
 1607:    __u8  bReserved;
 1608:    __u8  bAdditionalResponseBytes[1016];
 1609: } CSMI_SAS_SMP_RESPONSE,
 1610:   *PCSMI_SAS_SMP_RESPONSE;
 1611: 
 1612: typedef struct _CSMI_SAS_SMP_PASSTHRU {
 1613:    __u8  bPhyIdentifier;
 1614:    __u8  bPortIdentifier;
 1615:    __u8  bConnectionRate;
 1616:    __u8  bReserved;
 1617:    __u8  bDestinationSASAddress[8];
 1618:    __u32 uRequestLength;
 1619:    CSMI_SAS_SMP_REQUEST Request;
 1620:    __u8  bConnectionStatus;
 1621:    __u8  bReserved2[3];
 1622:    __u32 uResponseBytes;
 1623:    CSMI_SAS_SMP_RESPONSE Response;
 1624: } CSMI_SAS_SMP_PASSTHRU,
 1625:   *PCSMI_SAS_SMP_PASSTHRU;
 1626: 
 1627: typedef struct _CSMI_SAS_SMP_PASSTHRU_BUFFER {
 1628:    IOCTL_HEADER IoctlHeader;
 1629:    CSMI_SAS_SMP_PASSTHRU Parameters;
 1630: } CSMI_SAS_SMP_PASSTHRU_BUFFER,
 1631:   *PCSMI_SAS_SMP_PASSTHRU_BUFFER;
 1632: 
 1633: // CC_CSMI_SAS_SSP_PASSTHRU
 1634: 
 1635: typedef struct _CSMI_SAS_SSP_PASSTHRU {
 1636:    __u8  bPhyIdentifier;
 1637:    __u8  bPortIdentifier;
 1638:    __u8  bConnectionRate;
 1639:    __u8  bReserved;
 1640:    __u8  bDestinationSASAddress[8];
 1641:    __u8  bLun[8];
 1642:    __u8  bCDBLength;
 1643:    __u8  bAdditionalCDBLength;
 1644:    __u8  bReserved2[2];
 1645:    __u8  bCDB[16];
 1646:    __u32 uFlags;
 1647:    __u8  bAdditionalCDB[24];
 1648:    __u32 uDataLength;
 1649: } CSMI_SAS_SSP_PASSTHRU,
 1650:   *PCSMI_SAS_SSP_PASSTHRU;
 1651: 
 1652: typedef struct _CSMI_SAS_SSP_PASSTHRU_STATUS {
 1653:    __u8  bConnectionStatus;
 1654:    __u8  bSSPStatus;
 1655:    __u8  bReserved[2];
 1656:    __u8  bDataPresent;
 1657:    __u8  bStatus;
 1658:    __u8  bResponseLength[2];
 1659:    __u8  bResponse[256];
 1660:    __u32 uDataBytes;
 1661: } CSMI_SAS_SSP_PASSTHRU_STATUS,
 1662:   *PCSMI_SAS_SSP_PASSTHRU_STATUS;
 1663: 
 1664: typedef struct _CSMI_SAS_SSP_PASSTHRU_BUFFER {
 1665:    IOCTL_HEADER IoctlHeader;
 1666:    CSMI_SAS_SSP_PASSTHRU Parameters;
 1667:    CSMI_SAS_SSP_PASSTHRU_STATUS Status;
 1668:    __u8  bDataBuffer[1];
 1669: } CSMI_SAS_SSP_PASSTHRU_BUFFER,
 1670:   *PCSMI_SAS_SSP_PASSTHRU_BUFFER;
 1671: 
 1672: // CC_CSMI_SAS_STP_PASSTHRU
 1673: 
 1674: typedef struct _CSMI_SAS_STP_PASSTHRU {
 1675:    __u8  bPhyIdentifier;
 1676:    __u8  bPortIdentifier;
 1677:    __u8  bConnectionRate;
 1678:    __u8  bReserved;
 1679:    __u8  bDestinationSASAddress[8];
 1680:    __u8  bReserved2[4];
 1681:    __u8  bCommandFIS[20];
 1682:    __u32 uFlags;
 1683:    __u32 uDataLength;
 1684: } CSMI_SAS_STP_PASSTHRU,
 1685:   *PCSMI_SAS_STP_PASSTHRU;
 1686: 
 1687: typedef struct _CSMI_SAS_STP_PASSTHRU_STATUS {
 1688:    __u8  bConnectionStatus;
 1689:    __u8  bReserved[3];
 1690:    __u8  bStatusFIS[20];
 1691:    __u32 uSCR[16];
 1692:    __u32 uDataBytes;
 1693: } CSMI_SAS_STP_PASSTHRU_STATUS,
 1694:   *PCSMI_SAS_STP_PASSTHRU_STATUS;
 1695: 
 1696: typedef struct _CSMI_SAS_STP_PASSTHRU_BUFFER {
 1697:    IOCTL_HEADER IoctlHeader;
 1698:    CSMI_SAS_STP_PASSTHRU Parameters;
 1699:    CSMI_SAS_STP_PASSTHRU_STATUS Status;
 1700:    __u8  bDataBuffer[1];
 1701: } CSMI_SAS_STP_PASSTHRU_BUFFER,
 1702:   *PCSMI_SAS_STP_PASSTHRU_BUFFER;
 1703: 
 1704: // CC_CSMI_SAS_GET_SATA_SIGNATURE
 1705: 
 1706: typedef struct _CSMI_SAS_SATA_SIGNATURE {
 1707:    __u8  bPhyIdentifier;
 1708:    __u8  bReserved[3];
 1709:    __u8  bSignatureFIS[20];
 1710: } CSMI_SAS_SATA_SIGNATURE,
 1711:   *PCSMI_SAS_SATA_SIGNATURE;
 1712: 
 1713: typedef struct _CSMI_SAS_SATA_SIGNATURE_BUFFER {
 1714:    IOCTL_HEADER IoctlHeader;
 1715:    CSMI_SAS_SATA_SIGNATURE Signature;
 1716: } CSMI_SAS_SATA_SIGNATURE_BUFFER,
 1717:   *PCSMI_SAS_SATA_SIGNATURE_BUFFER;
 1718: 
 1719: // CC_CSMI_SAS_GET_SCSI_ADDRESS
 1720: 
 1721: typedef struct _CSMI_SAS_GET_SCSI_ADDRESS_BUFFER {
 1722:    IOCTL_HEADER IoctlHeader;
 1723:    __u8  bSASAddress[8];
 1724:    __u8  bSASLun[8];
 1725:    __u8  bHostIndex;
 1726:    __u8  bPathId;
 1727:    __u8  bTargetId;
 1728:    __u8  bLun;
 1729: } CSMI_SAS_GET_SCSI_ADDRESS_BUFFER,
 1730:    *PCSMI_SAS_GET_SCSI_ADDRESS_BUFFER;
 1731: 
 1732: // CC_CSMI_SAS_GET_DEVICE_ADDRESS
 1733: 
 1734: typedef struct _CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER {
 1735:    IOCTL_HEADER IoctlHeader;
 1736:    __u8  bHostIndex;
 1737:    __u8  bPathId;
 1738:    __u8  bTargetId;
 1739:    __u8  bLun;
 1740:    __u8  bSASAddress[8];
 1741:    __u8  bSASLun[8];
 1742: } CSMI_SAS_GET_DEVICE_ADDRESS_BUFFER,
 1743:   *PCSMI_SAS_GET_DEVICE_ADDRESS_BUFFER;
 1744: 
 1745: // CC_CSMI_SAS_TASK_MANAGEMENT
 1746: 
 1747: typedef struct _CSMI_SAS_SSP_TASK_IU {
 1748:    __u8  bHostIndex;
 1749:    __u8  bPathId;
 1750:    __u8  bTargetId;
 1751:    __u8  bLun;
 1752:    __u32 uFlags;
 1753:    __u32 uQueueTag;
 1754:    __u32 uReserved;
 1755:    __u8  bTaskManagementFunction;
 1756:    __u8  bReserved[7];
 1757:    __u32 uInformation;
 1758: } CSMI_SAS_SSP_TASK_IU,
 1759:   *PCSMI_SAS_SSP_TASK_IU;
 1760: 
 1761: typedef struct _CSMI_SAS_SSP_TASK_IU_BUFFER {
 1762:    IOCTL_HEADER IoctlHeader;
 1763:    CSMI_SAS_SSP_TASK_IU Parameters;
 1764:    CSMI_SAS_SSP_PASSTHRU_STATUS Status;
 1765: } CSMI_SAS_SSP_TASK_IU_BUFFER,
 1766:   *PCSMI_SAS_SSP_TASK_IU_BUFFER;
 1767: 
 1768: // CC_CSMI_SAS_GET_CONNECTOR_INFO
 1769: 
 1770: typedef struct _CSMI_SAS_GET_CONNECTOR_INFO {
 1771:    __u32 uPinout;
 1772:    __u8  bConnector[16];
 1773:    __u8  bLocation;
 1774:    __u8  bReserved[15];
 1775: } CSMI_SAS_CONNECTOR_INFO,
 1776:   *PCSMI_SAS_CONNECTOR_INFO;
 1777: 
 1778: typedef struct _CSMI_SAS_CONNECTOR_INFO_BUFFER {
 1779:    IOCTL_HEADER IoctlHeader;
 1780:    CSMI_SAS_CONNECTOR_INFO Reference[32];
 1781: } CSMI_SAS_CONNECTOR_INFO_BUFFER,
 1782:   *PCSMI_SAS_CONNECTOR_INFO_BUFFER;
 1783: 
 1784: // CC_CSMI_SAS_GET_LOCATION
 1785: 
 1786: typedef struct _CSMI_SAS_LOCATION_IDENTIFIER {
 1787:    __u32 bLocationFlags;
 1788:    __u8  bSASAddress[8];
 1789:    __u8  bSASLun[8];
 1790:    __u8  bEnclosureIdentifier[8];
 1791:    __u8  bEnclosureName[32];
 1792:    __u8  bBayPrefix[32];
 1793:    __u8  bBayIdentifier;
 1794:    __u8  bLocationState;
 1795:    __u8  bReserved[2];
 1796: } CSMI_SAS_LOCATION_IDENTIFIER,
 1797:   *PCSMI_SAS_LOCATION_IDENTIFIER;
 1798: 
 1799: typedef struct _CSMI_SAS_GET_LOCATION_BUFFER {
 1800:    IOCTL_HEADER IoctlHeader;
 1801:    __u8  bHostIndex;
 1802:    __u8  bPathId;
 1803:    __u8  bTargetId;
 1804:    __u8  bLun;
 1805:    __u8  bIdentify;
 1806:    __u8  bNumberOfLocationIdentifiers;
 1807:    __u8  bLengthOfLocationIdentifier;
 1808:    CSMI_SAS_LOCATION_IDENTIFIER Location[1];
 1809: } CSMI_SAS_GET_LOCATION_BUFFER,
 1810:   *PCSMI_SAS_GET_LOCATION_BUFFER;
 1811: 
 1812: // CC_CSMI_SAS_PHY_CONTROL
 1813: 
 1814: typedef struct _CSMI_SAS_CHARACTER {
 1815:    __u8  bTypeFlags;
 1816:    __u8  bValue;
 1817: } CSMI_SAS_CHARACTER,
 1818:   *PCSMI_SAS_CHARACTER;
 1819: 
 1820: typedef struct _CSMI_SAS_PHY_CONTROL {
 1821:    __u8  bType;
 1822:    __u8  bRate;
 1823:    __u8  bReserved[6];
 1824:    __u32 uVendorUnique[8];
 1825:    __u32 uTransmitterFlags;
 1826:    __i8  bTransmitAmplitude;
 1827:    __i8  bTransmitterPreemphasis;
 1828:    __i8  bTransmitterSlewRate;
 1829:    __i8  bTransmitterReserved[13];
 1830:    __u8  bTransmitterVendorUnique[64];
 1831:    __u32 uReceiverFlags;
 1832:    __i8  bReceiverThreshold;
 1833:    __i8  bReceiverEqualizationGain;
 1834:    __i8  bReceiverReserved[14];
 1835:    __u8  bReceiverVendorUnique[64];
 1836:    __u32 uPatternFlags;
 1837:    __u8  bFixedPattern;
 1838:    __u8  bUserPatternLength;
 1839:    __u8  bPatternReserved[6];
 1840:    CSMI_SAS_CHARACTER UserPatternBuffer[16];
 1841: } CSMI_SAS_PHY_CONTROL,
 1842:   *PCSMI_SAS_PHY_CONTROL;
 1843: 
 1844: typedef struct _CSMI_SAS_PHY_CONTROL_BUFFER {
 1845:    IOCTL_HEADER IoctlHeader;
 1846:    __u32 uFunction;
 1847:    __u8  bPhyIdentifier;
 1848:    __u16 usLengthOfControl;
 1849:    __u8  bNumberOfControls;
 1850:    __u8  bReserved[4];
 1851:    __u32 uLinkFlags;
 1852:    __u8  bSpinupRate;
 1853:    __u8  bLinkReserved[7];
 1854:    __u32 uVendorUnique[8];
 1855:    CSMI_SAS_PHY_CONTROL Control[1];
 1856: } CSMI_SAS_PHY_CONTROL_BUFFER,
 1857:   *PCSMI_SAS_PHY_CONTROL_BUFFER;
 1858: 
 1859: //EDM #pragma CSMI_SAS_END_PACK
 1860: #pragma pack()
 1861: 
 1862: #endif // _CSMI_SAS_H_

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>