P1394 Mail Archive: P1394> Recovery (Was Re: Revised PWG1394 Cmd Set)

P1394> Recovery (Was Re: Revised PWG1394 Cmd Set)

Akihiro Shimura (shimura@pure.cpdc.canon.co.jp)
Mon, 27 Jul 1998 23:01:05 +0900 (JST)

On Mon, 20 Jul 1998 10:05:11 -0700 (PDT)
Greg Shue <gregs@sdd.hp.com> wrote:
(snip)
> Recovery:
(snip)
> Unfortunately, SBP-2 requires targets to support the ABORT TASK
> function, and the process described for aborting tasks causes
> previously valid commands to be turned into Dummy ORBs. This
> effectively removes the command tag from the ORB, so the
> queue's Execution Agent no longer sees command tags as
> sequential even if they were assigned sequentially.

As far as I understand, in Monterey, we have discussed to make the
range of sequence identifier fairly larger than the range of
MAX_TASK_SET_SIZE to make it possible for target to determine, from
the sign of distance between two sequence identifiers (target is
expecting and specified by initiator), whether initiator is
synchronized, behind by missing packet or ahead by Abort Task.

The fairly large range of sequence identifier may not be enough for
the target to handle the gap between sequence identifiers caused by
Abort Task because the gap may infinitely grow.

The initiator is already limiting the number of ORB's not to exceed
maximum reorderable number.
By making this condition a little severe, I think we can avoid
unrecoverable situation without retry interaction between initiator
and target.

The descriptive condition will be as follows;

The initiator limits
the number of ORB's not to exceed maximum reorderable number,
"AND"
to append the ORB that has sequence identifier target can identify
as ahead from last completed one.
"OR"
If there is no outstanding ORB for the queue, the initiator appends
ORB that has sequence identifier adjusted to the next number of last
completed one.

The conditional expression will be as follows;

IF ((Number of outstanding ORB for the queue)
<= (MAX_TASK_SET_SIZE - n))
AND
((((appending sequence id)-(last completed sequence id)) MOD (2^m))
< (2^(m-1)))
THEN append ORB with (appending sequence id)
ELSE
IF ((Number of outstanding ORB for the queue) = 0)
THEN adjust (appending sequence id) to (last completed sequence
id) + 1 and append ORB,

where "n" is room for another queue, and "m" is number of bit of
sequence id.

If the target finds initiator is ahead, target can simply update
recorded identifier with the new value specified by the initiator.

So, I do not think the following policy (and so on) is necessary.

> A) A target shall enforce sequential command tag values.

Am I missing something?

Akihiro Shimura

--
 Akihiro Shimura (shimura@pure.cpdc.canon.co.jp)
 Office Imaging System Promotion Project
 CANON INC.