New ACK Codes and SBP-2 CSR's

PJohansson at PJohansson at
Fri Oct 18 19:52:00 PDT 1996

* From the SCSI Reflector (scsi at, posted by:
* PJohansson at
In a message dated 96-10-18 20:11:51 EDT,
Stephen_Finch/SSI1.SSI1 at (Stephen Finch/SSI1) writes:

<< In SBP-2, there are some CSR registers which can be written to only by 
 a node which has successfully logged in to the destination node.  Writes by 
 nodes that are not loggen in may be invalid.  There is no statement in SBP-2
 as to what to do when such a write occurs.  One option is to ignore it,
 is to give an error.  I'd prefer to give the error and to do so in the
 My preference is to say "invalid address", but there is no such ack_code.  
 The alternative is to send a response with a rcode of resp_address_error.
 My question is:  for an address error (which could be reading in ROM area
 beyond the ROM in this device, and many other cases), is it legal to use 
 ack_type_error for this?  Could we define an ack_address_error (I'm
 with backward compatibility)?  Or should I just ignore the original request
 let the upper level protocol in the requesting node time out and try and
 it out?

It is not acceptable to use ack_type_error for an address error. The
specification of ack_type_error is quite clear that it is for malformed
packets, i.e., bad transaction codes, bad response codes, etc.  See also the
1394 Trade Association Specification for Response Code Usage, on their web
site, which attempts to clarify some of these issues.

It would be fruitless to define ack_address_error. The common theme unifying
all the ACK codes (complete, pending, the various busy's, type error and data
error) are that they are all things that can be detected by the LINK.  The
LINK doesn't have a clue if the address is invalid!

This leaves the two choices you identified, Steve:

    a) Ignore the packet and return an ack_complete; or

    b) Return an ack_pending and subsequently return a response packet with

I prefer choice a). In accordance with this preference, a useful modification
to SBP-2 would be to change all register definitions as follows:

    - WRITE effects are defined as "effect" rather than "stored"

    - READ values are defined as "last update" rather than "last write"

In other words, the values you write to any one of the SBP-2 CSR's may or may
not be the values you can read back. At present only the CURRENT_ORB register
is defined this way. I think it would be better if most were.

Peter Johansson

Congruent Software, Inc.
3998 Whittle Avenue
Oakland, CA  94602

(510) 531-5472
(510) 531-2942 FAX

pjohansson at

* For SCSI Reflector information, send a message with
* 'info scsi' (no quotes) in the message body to majordomo at

More information about the T10 mailing list