The Page Code field indicates which MODE SENSE parameter page or pages the initiator is requesting. A value of 0 for this field indicates that the parameters will be returned in non-page format.
Table 10-4 lists the values supported by the CTS for the Page Code field.
To return the parameters in...
Specify this
Page Code... And this information will be returned... Non-page format 00ha 1 to 5 bytes of vendor-unique parameters
Page format
01h Read-Write Error Recovery Page 02h Disconnect/Reconnect Page
0Ah Control Mode Page
0Fh Data Compression Page
10h Device Configuration Page 11h Medium Partition Pageb
20h Vendor Unique Parameters Page 1 21h Vendor Unique Parameters Page 2 22h Data Compression Status Page 3Fh All available pagesc
aIf you specify 0 for the Page Code field, ensure that the DBD bit is also set to 0. Otherwise, the CTS returns Check Condition status with the sense key set to Illegal Request (5h).
bThis page is available for the EXB-8505 writing in 8500c format only.
c When the Page Code is 3Fh, pages 01h through 22h are returned in the order listed in the table.
Byte 04 - Allocation Length
The Allocation Length byte indicates the amount of memory in bytes that the initiator has allocated for the return of MODE SENSE
parameters from the CTS.
Non-Page Format For non-page format, the Allocation Length byte can contain values ranging from 00h to 11h. Table 10-5 lists the valid values for the Allocation Length byte in non-page format.
To return these parameters... Allocate this length...
No parameter list data 00h
Parameter List Header data 04h
Parameter List Header data and 1 to 5 bytes of
vendor-unique parameters 05h, 06h, 07h, 08h, or 09h
Parameter List Header and Block Descriptor 0Ch
Parameter List Header, Block Descriptor, and 1 to 5
bytes of vendor-unique parameters 0Dh, 0Eh, 0Fh, 10h, or 11h
Table 10-4 Values for the Page Code field in the MODE SENSE command
Page Format For page format, the Allocation Length byte can contain values ranging from 00h to FFh, depending on which parameter page is being returned and whether you want the Block Descriptor to be returned (that is, whether you set the DBD bit to 0 or 1)
Table 10-6 shows the minimum values you can specify for the
Allocation Length when the Page Code field is set to a non-zero value.
Note: To return the Parameter List Header or the Block Descriptor without pages, set the Page Code to 0 (non-page format) and refer to Table 10-5 to determine what to specify for the Allocation Length field.
To return this page...
Length of page in bytes (hex)
Specify at least this amount for the Allocation Length...a
... if DBD=0 (return 8-byte Block
Descriptor)
...if DBD=1 (do not return 8-byte
Block Descriptor) Read-Write Error Recovery
Page (Page Code=01h) 9 (9h) 15h 0Dh
Disconnect-Reconnect Page
(Page Code=02h) 12 (Ch) 18h 10h
Control Mode Page
(Page Code=0Ah) 8 (8h) 14h 0Ch
Data Compression Page
(Page Code=0Fh) 16 (10h) 1Ch 14h
Device Configuration Page
(Page Code=10h) 15 (Fh) 1Bh 13h
Medium Partition Pageb
(Page Code=11h) 10 (Ah) 16h 0Eh
Vendor Unique Parameters
Page 1 (Page Code=20h) 6 (6h) 12h 0Ah
Vendor Unique Parameters
Page 2 (Page Code=21h) 6 (6h) 12h 0Ah
Data Compression Status Page
(Page Code=22h) 13 (Dh) 19h 11h
All available pages
(Page Code=3Fh) FFh FFh
Example 1 To return the Parameter List Header, the Block Descriptor, and the Vendor Unique Parameters Page 1:
1. Set the DBD bit to 0.
2. Set the Page Code to 20h.
3. Specify at least 12h for the Allocation Length byte (04h for the Parameter List Header + 08h for the Block
Descriptor + 06h for the Vendor Unique Parameters Page 1).
Example 2 To return the Parameter List Header, the Block Descriptor, and the Data Compression Page:
1. Set the DBD bit to 0.
2. Set the Page Code to 0Fh.
3. Specify at least 1Ch for the Allocation Length byte (04h for the Parameter List Header + 08h for the Block
Descriptor + 10h for the Data Compression Page).
Example 3 To return all possible MODE SENSE data:
1. Set the DBD bit to 0.
2. Set the Page Code to 3Fh.
Truncating Pages An EEPROM option enables you to choose whether the Allocation Length is checked for values that would cause the Parameter List Header, Block Descriptor, or one of the parameter pages to be truncated. With the EEPROM option, you can choose to disallow or permit truncated pages (see the “MODE SELECT and MODE SENSE” option on page A-11).
To understand how a truncated page might occur, consider the following example: Suppose you set the Page Code to 20h (for Vendor Unique Parameters Page 1), the DBD bit to 0 (to send the Block Descriptor), and the Allocation Length to 11h (17 bytes). These values cause the CTS to return the entire Parameter List Header (4 bytes), the entire Block Descriptor (8 bytes), and 5 of the 6 available bytes for Vendor Unique Parameters Page 1. The result of specifying such a value depends on the EEPROM image as follows:
When the EEPROM option is set to disallow truncated pages (default), the CTS returns the requested information, then terminates the command with Check Condition status. The sense key is set to Illegal Request and the Additional Sense Code is set to Parameter List Length Error.
When the EEPROM option is set to permit truncated pages, the CTS returns the requested information, including the truncated page, without issuing an error.
Restrictions for MODE SENSE Data:
In non-page format, for any data transfer greater than 0 bytes, the entire 4-byte Parameter List Header must be received from the CTS. That is, the entire 4-byte Parameter List Header must be received before the Block Descriptor or any vendor-unique parameters can be received.
In non-page format, if the Block Descriptor is requested, it must be received in its entirety (that is, all 8 bytes).
In page format, if the EEPROM option is set to disallow truncated pages (see explanation above), the value for the Allocation Length byte must be equal to or greater than the total number of bytes to be transferred from the CTS to the initiator.