This message is from the T13 list server.
Lets be a little more accurate...
For traditional ATA/ATAPI devices a PIO DRQ data block is one of the
following:
...
c) For ATAPI PACKET commands, the Command packet block is either 12 or
16 bytes as indicated by ID word 0 from the device.
d) For ATAPI PACKET commands, a Data packet block is between 2 and
65534 bytes as indicated by the Byte Count for the DRQ data packet and
that Byte Count shall not exceed the Byte Count Limit set by the host
for the execution of the PACKET command. A PACKET command may transfer
any number of Data packet blocks of 2 bytes to 65534 bytes. Note that
the last block may have a Byte Count of 1 - this transfers 1 data byte
plus a pad byte.
Ouch.
I suppose we all also agree an ATAPI PIO DRQ block shouldn't have 3 or
65533 bytes, except the last block.
I'd say,
ATAPI DRQ blocks have a Byte Count of 0 to xFFFF bytes, which should
not be odd before the last block and should never be zero and should
never be xFFFF. Some hosts works better by allowing the rudeness of an
odd or xFFFF Byte Count for any block and resetting any device rude
enough to ask for a block of 0 bytes. Other hosts behave less
deterministically, e.g., hang when a device asks for a block of 0
bytes.