Availability:
     Level 2    , 'T'

  Quick Help:
     Measure Throughput, 
T[Opts],[CylSkew],[HeadSkew],[MiniZoneSkew],[SkewStep],[LengthInTracks],[OffsetInTracks],[NumberOfRetries]

  Description:
    This command is used to test the drive's read and write speed.

  Input Parameters:

    0 - Command Flags
    
        This input sets read or write and determines disk access range.
        
          bit 15:     set      write
                      cleared  read
          bit 13:     set      even minizone index, for VBAR_SUPPORT only.
                               If the index of the current minizone is not even,
                               the throughput starts from the next minizone instead.
                               The purpose of this parameter is to force a head switch
                               or minizone switch by specifying the relevant parameters.
                      cleared  not care
          bit 12:     set      odd minizone index, for VBAR_SUPPORT only.
                               If the index of the current minizone is not odd,
                               the throughput starts from the next minizone instead.
                               The purpose of this parameter is to force a head switch
                               or minizone switch by specifying the relevant parameters.
                      cleared  not care
          bit 11:     set      all heads, ignore bits 8-10
                      cleared  single head
          bits 8-10   head number
          bit 7:      set      all zones, ignore bits 0-6
                      cleared  single zone
          bits 0-6    zone number
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: 0 (read zone zero, head zero)
    
    1 - Cylinder Skew
    
        This input establishes the cylinder skew.
    
          bits 8-15: minimum cylinder skew
          bits 0-7:  maximum cylinder skew
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: normal drive cylinder skew
    
    2 - Head Skew
    
        This input establishes the head skew.
    
          bits 8-15: minimum head skew
          bits 0-7:  maximum head skew
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: normal drive head skew
    
    3 - MiniZone Skew
    
        This input establishes the minizone skew.
    
          bits 8-15: minimum minizone skew
          bits 0-7:  maximum minizone skew
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: normal drive minzone skew
    
    4 - Skew Step Size
    
        This input establishes how much the skews
        increment between tests.
    
          Type:    Unsigned 16-bit value
    
          Range:   1 to DIAG_THROUGHPUT_MAX_SKEW_STEP ( 10 dec )
    
          Default: 1
    
    5 - Transfer Length In Tracks
    
        This input establishes how many tracks to read/write for each throughput test.
    
          Type:    Unsigned 16-bit value
    
          Range:   1 to 0xFFFF
    
          Default: 8
    
    6 - Transfer Offset In Tracks
    
        This input establishes how many tracks from the first track of the zone to start
        read/write for each throughput test.
    
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: 0
    
    7 - Max Number of Retries
    
        This input establishes the max number of re-transfer to perform upon transfer failure
        for each throughput test. It is particular useful if combined with 2>Y,,,,1C0 disable
        RW retry command to eliminate the throughput fluctuation due to RW retry.
     
          Type:    Unsigned 16-bit value
    
          Range:   0 to 0xFFFF
    
          Default: 0x10
    
  Output Data:


    If an error occurred, the following information will be displayed.
    
          "DiagError aaaaaaaa"
    
       where
    
          aaaaaaaa is the Diagnostic Error Code
    
    If no error occurred, the following information will be displayed. One
    line will be displayed for each head / zone / cylinder skew / head skew / minizone skew
    combination tested.
    
               Cyl   Head  MnZn  Throughput
       Hd  Zn  Skew  Skew  Skew  (MB/s)
       A   BB  CC    DD    EE    dd.ddd ( invalid address | read error | write error )
    
       where
    
          A is the head number
    
          BB is the zone number
    
          CC is the cylinder to cylinder skew in servo wedges
    
          DD is the head to head skew in servo wedges
    
          EE is the minizone to minizone skew in servo wedges
    
          dd.ddd is the throughput in megabytes per second
    
          ( xxx ) is displayed ( without quotation mark ) if the specified error(s) occurred on
          the destination tracks in the specified head, zone with specified skews:
             "invalid address":   the sectors in the destination track(s) cannot be translated into
                                  a valid LBA address
             "read error":        read transfer failed
             "write error":       write transfer failed
    
  Examples:
 
    Example #1:
    To measure cylinder skews 13 through 17 in head 0 zone 9:
 
       F3 2>T9,1317
 
    Example #2:
    To measure cylinder skews 10 AND 12 in head 3 zone 1 with head skews
    6C, 6E, and 70 and minizone skews 60 and 62:
 
       F3 2>T301,1012,6C70,6062,2

    Example #3:
    To measure cylinder skews 10 throughput 30 in all heads in all zones
    ( write ):
 
       F3 2>T8880,1030

    Example #4:
    To measure head skews 30 through 60 with A tracks in all heads in all
    zones at even minizones and offset 2D ( assume total number of heads is
    4 and nominal serpent width is 32, there is a head switch in head 0/1/2,
    but not head 3; there is a minizone switch in head 3 instead ) ( write ):
 
       F3 2>TA880,,3060,,,A,2D

    Example #5:
    To measure minizone skews 30 through 60 with A tracks in head 0 in all
    zones at odd minizones and offset 2D to make sure there is a minizone
    switch ( assume nominal serpent width is 32 ):
 
       F3 2>T1080,,,3060,,A,2D

  Revision History:

    0001.0000   Initial revision.
    0011.0000   Combined the PSG Diagnostic Error Codes (PSGDEC) and the Diagnostic External
                Test Service Error Codes (DETSEC) into a single set of Diagnostic Error Codes
                (DiagError).
    0012.0000   Changed output string "throughput LBA" to "throughput KBS".
    0013.0000   Restructure the input parameters, add VBAR support and reformat the output to
                table layout.