The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/pms/RefTisa/sat/api/sm.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*******************************************************************************
    2 *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved. 
    3 *
    4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided 
    5 *that the following conditions are met: 
    6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
    7 *following disclaimer. 
    8 *2. Redistributions in binary form must reproduce the above copyright notice, 
    9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
   10 *with the distribution. 
   11 *
   12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 
   13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
   16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
   17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
   18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
   19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
   20 *
   21 * $FreeBSD$
   22 *
   23 ********************************************************************************/
   24 /********************************************************************************
   25 **    
   26 *   sm.h 
   27 *
   28 *   Abstract:   This module defines the contants, enum and #define definition used
   29 *               by SAT Moduled (SM).
   30 *     
   31 ********************************************************************************/
   32 
   33 #ifndef SM_H
   34 #define SM_H
   35 
   36 /*************************************************
   37  *   constants for type field in smMem_t
   38  *************************************************/
   39 #define SM_CACHED_MEM                             0x00     /**< CACHED memory type */
   40 #define SM_DMA_MEM                                0x01     /**< DMA memory type */
   41 #define SM_CACHED_DMA_MEM                         0x02     /**< CACHED DMA memory type */
   42 
   43 /*************************************************
   44  *   constants for API return values
   45  *************************************************/
   46 typedef enum
   47 {
   48   SM_RC_SUCCESS,
   49   SM_RC_FAILURE,
   50   SM_RC_BUSY,
   51   SM_RC_NODEVICE,
   52   SM_RC_VERSION_INCOMPATIBLE,
   53   SM_RC_VERSION_UNTESTED,
   54   SM_RC_RSV1,
   55   SM_RC_RSV2,
   56   SM_RC_RSV3,
   57   SM_RC_RSV4,
   58   SM_RC_DEVICE_BUSY, /* must be the same as tiDeviceBusy */
   59   
   60 } smStatus_t;
   61 
   62 typedef enum
   63 {
   64   smIOSuccess,
   65   smIOOverRun,
   66   smIOUnderRun,
   67   smIOFailed,
   68   smIODifError,
   69   smIOEncryptError,
   70   smIORetry,           /* open retry timeout */
   71   smIOSTPResourceBusy, /* stp resource busy */
   72 } smIOStatus_t;
   73 
   74 typedef enum
   75 {
   76   smDetailBusy,
   77   smDetailNotValid,
   78   smDetailNoLogin,
   79   smDetailAbortLogin,
   80   smDetailAbortReset,
   81   smDetailAborted,
   82   smDetailDifMismatch,
   83   smDetailDifAppTagMismatch,
   84   smDetailDifRefTagMismatch,
   85   smDetailDifCrcMismatch,
   86   smDetailDekKeyCacheMiss,
   87   smDetailCipherModeInvalid,
   88   smDetailDekIVMismatch,
   89   smDetailDekRamInterfaceError,
   90   smDetailDekIndexOutofBounds,
   91   smDetailOtherError
   92 } smIOStatusDetail_t;
   93 
   94 /*
   95  * Data direction for I/O request
   96  */
   97 typedef enum
   98 {
   99   smDirectionIn   = 0x0000,
  100   smDirectionOut  = 0x0001
  101 }smDataDirection_t;
  102 
  103 /*
  104  * Event types for tdsmEventCB()
  105  * do not change: Needs to be in sync with TISA API
  106  */
  107 typedef enum
  108 {
  109   smIntrEventTypeCnxError,
  110   smIntrEventTypeDiscovery,
  111   smIntrEventTypeTransportRecovery,
  112   smIntrEventTypeTaskManagement,
  113   smIntrEventTypeDeviceChange,
  114   smIntrEventTypeLogin,
  115   smIntrEventTypeLocalAbort  
  116 } smIntrEventType_t;
  117 
  118 typedef enum
  119 {
  120   smTMOK,
  121   smTMFailed
  122 } smTMEventStatus_t;
  123 
  124 /*
  125  * Flags in smSuperScsiInitiatorRequest_t
  126  */
  127 #define SM_SCSI_INITIATOR_DIF         0x00000001
  128 #define SM_SCSI_INITIATOR_ENCRYPT     0x00000002
  129 
  130 /*
  131  * Flags in smSuperScsiInitiatorRequest_t
  132  */
  133 #define SM_SCSI_TARGET_DIF         0x00000001
  134 #define SM_SCSI_TARGET_MIRROR      0x00000002
  135 #define SM_SCSI_TARGET_ENCRYPT     0x00000004
  136 
  137 typedef struct {
  138                 void            *tdData;
  139                 void            *smData;
  140 } smContext_t;
  141 
  142 
  143 typedef    smContext_t    smDeviceHandle_t;
  144 
  145 typedef    smContext_t    smIORequest_t;
  146 
  147 typedef    smContext_t    smRoot_t;
  148 
  149 typedef struct 
  150 {
  151         bit8  lun[8];               /* logical unit number  */
  152 } smLUN_t;
  153 
  154 typedef struct{
  155                 smLUN_t         lun;
  156                 bit32           expDataLength;
  157                 bit32           taskAttribute;
  158                 bit32           crn;
  159                 bit8            cdb[16];
  160 } smIniScsiCmnd_t;
  161 
  162 
  163 
  164 typedef struct{
  165                void     *virtPtr;
  166                void     *osHandle;
  167                bit32    physAddrUpper;
  168                bit32    physAddrLower;
  169                bit32    totalLength;
  170                bit32    numElements;
  171                bit32    singleElementLength;
  172                bit32    alignment;
  173                bit32    type;
  174                bit32    reserved;
  175 } smMem_t;
  176 
  177 #define SM_NUM_MEM_CHUNKS 8
  178 
  179 typedef struct{
  180                bit32            count;
  181                smMem_t          smMemory[SM_NUM_MEM_CHUNKS];
  182 } smMemoryRequirement_t;
  183 
  184 typedef struct{
  185                bit32    lower;
  186                bit32    upper;
  187                bit32    len;
  188                bit32    type;
  189 } smSgl_t;
  190 
  191 /*
  192  * DIF operation
  193  */
  194 #define DIF_INSERT                     0
  195 #define DIF_VERIFY_FORWARD             1
  196 #define DIF_VERIFY_DELETE              2
  197 #define DIF_VERIFY_REPLACE             3
  198 #define DIF_VERIFY_UDT_REPLACE_CRC     5
  199 #define DIF_REPLACE_UDT_REPLACE_CRC    7
  200 
  201 #define DIF_UDT_SIZE              6
  202 
  203 typedef struct smDif
  204 {
  205   agBOOLEAN   enableDIFPerLA;
  206   bit32       flag;
  207   bit16       initialIOSeed;
  208   bit16       reserved;
  209   bit32       DIFPerLAAddrLo;
  210   bit32       DIFPerLAAddrHi;
  211   bit16       DIFPerLARegion0SecCount;
  212   bit16       DIFPerLANumOfRegions;
  213   bit8        udtArray[DIF_UDT_SIZE];
  214   bit8        udrtArray[DIF_UDT_SIZE];  
  215 } smDif_t;
  216 
  217 typedef struct smEncryptDek {
  218     bit32          dekTable;
  219     bit32          dekIndex;
  220 } smEncryptDek_t;
  221 
  222 typedef struct smEncrypt {
  223   smEncryptDek_t     dekInfo;   
  224   bit32          kekIndex;
  225   agBOOLEAN      keyTagCheck;
  226   agBOOLEAN        enableEncryptionPerLA;    
  227   bit32          sectorSizeIndex;
  228   bit32          encryptMode;
  229   bit32          keyTag_W0;
  230   bit32          keyTag_W1;
  231   bit32          tweakVal_W0;
  232   bit32          tweakVal_W1;
  233   bit32          tweakVal_W2;
  234   bit32          tweakVal_W3;
  235   bit32          EncryptionPerLAAddrLo;
  236   bit32          EncryptionPerLAAddrHi;
  237   bit16          EncryptionPerLRegion0SecCount;
  238   bit16          reserved;
  239 } smEncrypt_t;
  240 
  241 typedef struct smScsiInitiatorRequest {
  242               void                     *sglVirtualAddr;
  243               smIniScsiCmnd_t          scsiCmnd;
  244               smSgl_t                  smSgl1;
  245               smDataDirection_t        dataDirection;
  246 } smScsiInitiatorRequest_t;
  247 
  248 typedef struct smSuperScsiInitiatorRequest
  249 {
  250   void                *sglVirtualAddr;
  251   smIniScsiCmnd_t     scsiCmnd;     
  252   smSgl_t             smSgl1;
  253   smDataDirection_t   dataDirection;
  254   bit32               flags; /* 
  255                                bit 0-1: reserved
  256                                bit 2: enable encryption
  257                                bit 3: enable dif
  258                                bit 4-7: reserved
  259                                bit 8-23: DIF SKIP Bytes
  260                                bit 24-31: Reserved
  261                              */
  262   smDif_t             Dif;
  263   smEncrypt_t         Encrypt;
  264 } smSuperScsiInitiatorRequest_t;
  265 
  266 typedef struct{
  267                void     *senseData;
  268                bit8     senseLen;
  269 } smSenseData_t;
  270 
  271 typedef struct{
  272                bit32                    maxActiveIOs;
  273                bit32                    numDevHandles;
  274 #ifdef SM_DEBUG
  275                bit32                    SMDebugLevel;
  276 #endif
  277 } smSwConfig_t;
  278 
  279 
  280 #define smBOOLEAN  bit32
  281 
  282 
  283 
  284 
  285 
  286 
  287 
  288 
  289 
  290 
  291 #endif  /* SM_H */
  292 

Cache object: ece8f482198bbbc4a1c396b2ed50f8e0


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.