SAS 2 (r13) section 9.4.3, I think, clearly shows that a
maximum length SMP RESPONSE frame consists of the following:
1 byte FRAME TYPE
1024 bytes RESPONSE BYTES
3 fill bytes
4 bytes CRC
In my reading of this section, this means that an SMP
RESPONSE frame with a maximum length RESPONSE BYTES field has NO MORE THAN 1025
valid data bytes plus 3 fill bytes plus 4 CRC bytes = 1032 total bytes. The “header”
mentioned in section 10.4.3.2 is not shown here.
Section 10.4.3.2 conflicts with this. It states that a
maximum length SMP RESPONSE frame consists of the following:
1 byte FRAME TYPE
1 byte FUNCTION
1 byte FUNCTION RESULT
1 byte RESPONSE LENGTH
1024 bytes RESPONSE BYTES
0 fill bytes
4 bytes CRC
In my reading of this section, this means that an SMP
RESPONSE frame with a maximum length RESPONSE BYTES field has EXACTLY 1028
valid data bytes plus 0 fill bytes plus 4 CRC bytes = 1032 total bytes. A 4
byte “header” is mentioned in the text of this section but is not explicitly
defined, which I would contend is an oversight in the document.
The SMP REQUEST frame descriptions demonstrate the same
issue.
Please explain the apparent conflict. If there is a real
problem here in the spec, is a proposal necessary to correct it?
Also note that the same issues exist in the SAS 1.1 spec, but
I am guessing that no problems occurred in practice, due to the fact that the
lengths of the SAS 1.1 defined SMP REQUESTs and RESPONSEs do not get anywhere
near the limits.