Print this page


Split Close
Expand all
Collapse all
          --- old/./fusion.h
          +++ new/./fusion.h
↓ open down ↓ 66 lines elided ↑ open up ↑
  67   67  #define MPI2_WRSEQ_FLUSH_KEY_VALUE              (0x0)
  68   68  #define MPI2_WRITE_SEQUENCE_OFFSET              (0x00000004)
  69   69  #define MPI2_WRSEQ_1ST_KEY_VALUE                (0xF)
  70   70  #define MPI2_WRSEQ_2ND_KEY_VALUE                (0x4)
  71   71  #define MPI2_WRSEQ_3RD_KEY_VALUE                (0xB)
  72   72  #define MPI2_WRSEQ_4TH_KEY_VALUE                (0x2)
  73   73  #define MPI2_WRSEQ_5TH_KEY_VALUE                (0x7)
  74   74  #define MPI2_WRSEQ_6TH_KEY_VALUE                (0xD)
  75   75  
  76   76  /* Invader defines */
  77      -#define MPI2_TYPE_CUDA                                  0x2
  78      -#define MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH       0x4000
  79      -#define MR_RL_FLAGS_GRANT_DESTINATION_CPU0                      0x00
  80      -#define MR_RL_FLAGS_GRANT_DESTINATION_CPU1                      0x10
  81      -#define MR_RL_FLAGS_GRANT_DESTINATION_CUDA                      0x80
  82      -#define MR_RL_FLAGS_SEQ_NUM_ENABLE                                      0x8
  83      -#define MPI2_NSEG_FLAGS_SHIFT                                           4
       77 +#define MPI2_TYPE_CUDA                                  0x2
       78 +#define MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH       0x4000
       79 +#define MR_RL_FLAGS_GRANT_DESTINATION_CPU0                      0x00
       80 +#define MR_RL_FLAGS_GRANT_DESTINATION_CPU1                      0x10
       81 +#define MR_RL_FLAGS_GRANT_DESTINATION_CUDA                      0x80
       82 +#define MR_RL_FLAGS_SEQ_NUM_ENABLE                                      0x8
       83 +#define MPI2_NSEG_FLAGS_SHIFT                                           4
  84   84  
  85   85  
  86   86  #define MR_PD_INVALID                           0xFFFF
  87   87  #define MAX_SPAN_DEPTH                          8
  88   88  #define MAX_RAIDMAP_SPAN_DEPTH                  (MAX_SPAN_DEPTH)
  89   89  #define MAX_ROW_SIZE                            32
  90   90  #define MAX_RAIDMAP_ROW_SIZE                    (MAX_ROW_SIZE)
  91   91  #define MAX_LOGICAL_DRIVES                      64
  92   92  #define MAX_RAIDMAP_LOGICAL_DRIVES              (MAX_LOGICAL_DRIVES)
  93   93  #define MAX_RAIDMAP_VIEWS                       (MAX_LOGICAL_DRIVES)
↓ open down ↓ 310 lines elided ↑ open up ↑
 404  404          U64             logStart;                       /* 0x00 */
 405  405          U64             logEnd;                         /* 0x08 */
 406  406          U64             offsetInSpan;                   /* 0x10 */
 407  407          U32             diff;                           /* 0x18 */
 408  408          U32             reserved1;                      /* 0x1C */
 409  409  } MR_QUAD_ELEMENT;                                      /* 0x20, Total size */
 410  410  
 411  411  typedef struct _MR_SPAN_INFO {
 412  412          U32             noElements;                     /* 0x00 */
 413  413          U32             reserved1;                      /* 0x04 */
 414      -        MR_QUAD_ELEMENT quad[MAX_RAIDMAP_SPAN_DEPTH];   /* 0x08 */
      414 +        MR_QUAD_ELEMENT quads[MAX_RAIDMAP_SPAN_DEPTH];  /* 0x08 */
 415  415  } MR_SPAN_INFO;                                         /* 0x108, Total size */
 416  416  
 417  417  typedef struct _MR_LD_SPAN_ {                           /* SPAN structure */
 418  418          /* 0x00, starting block number in array */
 419  419          U64             startBlk;
 420  420  
 421  421          /* 0x08, number of blocks */
 422  422          U64             numBlks;
 423  423  
 424  424          /* 0x10, array reference */
↓ open down ↓ 43 lines elided ↑ open up ↑
 468  468          U8      SRL;                    /* 0x17 */
 469  469          U16     targetId;               /* 0x18, ld Target Id. */
 470  470  
 471  471          /* 0x1a, state of ld, state corresponds to MR_LD_STATE */
 472  472          U8      ldState;
 473  473  
 474  474          /* 0x1b, Pre calculate region type requests based on MFC etc.. */
 475  475          U8      regTypeReqOnWrite;
 476  476  
 477  477          U8      modFactor;              /* 0x1c, same as rowSize */
 478      -        U8      regTypeReqOnRead;               /* 0x1d, region lock type used for read, valid only if regTypeOnReadIsValid=1 */
      478 +        /*
      479 +         * 0x1d, region lock type used for read, valid only if
      480 +         * regTypeOnReadIsValid=1
      481 +         */
      482 +        U8      regTypeReqOnRead;
 479  483          U16     seqNum;                 /* 0x1e, LD sequence number */
 480  484  
 481  485          struct {
 482  486                  /* This LD requires sync command before completing */
 483  487                  U32     ldSyncRequired:1;
 484  488                  U32     reserved:31;
 485  489          } flags;                        /* 0x20 */
 486  490  
 487  491          U8      reserved3[0x5C];        /* 0x24 */
 488  492  } MR_LD_RAID;                           /* 0x80, Total Size */
↓ open down ↓ 19 lines elided ↑ open up ↑
 508  512                          U32     maxPdCount;
 509  513                          U32     maxArrays;
 510  514                  } validationInfo;
 511  515                  U32     version[5];
 512  516                  U32     reserved1[5];
 513  517          } u1;
 514  518  
 515  519          U32                     ldCount;                /* count of lds */
 516  520          U32                     Reserved1;
 517  521  
 518      -        /*   0x20 This doesn't correspond to
 519      -            * FW Ld Tgt Id to LD, but will purge. For example: if tgt Id is 4
 520      -            * and FW LD is 2, and there is only one LD, FW will populate the
 521      -            * array like this. [0xFF, 0xFF, 0xFF, 0xFF, 0x0.....]. This is to
 522      -            * help reduce the entire strcture size if there are few LDs or
 523      -            * driver is looking info for 1 LD only.
 524      -            */
      522 +        /*
      523 +         * 0x20 This doesn't correspond to
      524 +         * FW Ld Tgt Id to LD, but will purge. For example: if tgt Id is 4
      525 +         * and FW LD is 2, and there is only one LD, FW will populate the
      526 +         * array like this. [0xFF, 0xFF, 0xFF, 0xFF, 0x0.....]. This is to
      527 +         * help reduce the entire structure size if there are few LDs or
      528 +         * driver is looking info for 1 LD only.
      529 +         */
 525  530          U8                      ldTgtIdToLd[MAX_RAIDMAP_LOGICAL_DRIVES+ \
 526  531                                  MAX_RAIDMAP_VIEWS]; /* 0x20 */
 527  532          /* timeout value used by driver in FP IOs */
 528  533          U8                      fpPdIoTimeoutSec;
 529  534          U8                      reserved2[7];
 530  535          MR_ARRAY_INFO           arMapInfo[MAX_RAIDMAP_ARRAYS];  /* 0x00a8 */
 531  536          MR_DEV_HANDLE_INFO      devHndlInfo[MAX_RAIDMAP_PHYSICAL_DEVICES];
 532  537  
 533  538          /* 0x28a8-[0 -MAX_RAIDMAP_LOGICAL_DRIVES+MAX_RAIDMAP_VIEWS+1]; */
 534  539          MR_LD_SPAN_MAP          ldSpanMap[1];
 535  540  }MR_FW_RAID_MAP;                                        /* 0x3288, Total Size */
 536  541  
 537  542  typedef struct _LD_TARGET_SYNC {
 538  543          U8      ldTargetId;
 539  544          U8      reserved;
 540  545          U16     seqNum;
 541      -} LD_TARGET_SYNC;       
      546 +} LD_TARGET_SYNC;
 542  547  
 543  548  #pragma pack()
 544  549  
 545  550  struct IO_REQUEST_INFO {
 546  551          U64     ldStartBlock;
 547  552          U32     numBlocks;
 548  553          U16     ldTgtId;
 549  554          U8      isRead;
 550  555          U16     devHandle;
 551  556          U64     pdBlock;
 552  557          U8      fpOkForIo;
 553  558          U8      ldPI;
 554  559  };
 555  560  
 556  561  #endif /* _FUSION_H_ */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX