FCP_RSP Residual Checking.

Binford, Charles CBinford at pirus.com
Thu Jul 12 06:16:43 PDT 2001


* From the T10 Reflector (t10 at t10.org), posted by:
* "Binford, Charles" <CBinford at Pirus.com>
*
I've always considered the phrase "... commands that do not contain an
FCP_DATA IU..." to be referring to commands like TEST UNIT.  In other words,
the command itself is *defined* as having no data transfer.  Not that this
particular execution of a command that normally has data, didn't for some
reason.

In hindsight, it would have been more accurate if the text would have
referenced the RDDATA and WRDATA bits both being zero instead of no data IU.

Charles Binford
Pirus Networks
316.315.0382 x222


-----Original Message-----
From: Santosh Rao [mailto:santoshr at cup.hp.com]
Sent: Wednesday, July 11, 2001 7:15 PM
To: Robert Snively
Cc: T10 Reflector; Fibre Channel T11 reflector
Subject: Re: FCP_RSP Residual Checking.


Bob & All,

With respect to the discussion below, that, FCP_RESID shall be correctly
initialized, regardless of the SCSI Status being returned, whenever the
data transferred during that command does not match FCP_DL .......

There is a statement in Section FC-PLDA Section 8.2.4.1 (FCP_RSP
Residual Checking) that states :

"During commands that do not contain an FCP_DATA IU, FCP_RESID_UNDER and
FCP_RESID_OVER shall both be set to 0, and the value of FCP_RESID is
undefined."

What is the intent of the above ? 

Does it cover for commands which may have got a CHECK CONDITION and
performed no data transfer ?

i.e. When a command requesting FCP_DL bytes of data xfer is errored back
by the target with a CHECK CONDITION and no data transfer has occurred,
should the target initialize the FCP_RESID information to indicate that
no data was transferred , or is the FCP_RESID set to 0 ?

If the behaviour is the latter, then, initiators cannot check FCP_RESID
regardlesss of SCSI STATUS.

Any comments would be much appreciated.

Thanks,
Santosh Rao



Robert Snively wrote:
> 
> Sub-clause 9.3 is pretty specific:
> 
>         If the command requested that data beyond FCP_DL be
>         transferred, the FC_RSP IU shall contain the FCP_RESID_OVER
>         bit set to one.
> 
>    and
> 
>         If the write operation requires a total amount of data
>         less than the amount of data provided by the initiator,
>         the target shall discard the excess bytes. Because there
>         were less bytes provided than required by FCP_DL,
>         the FCP_RESID_UNDER bit shall be set to 1 in the
>         FCP_RSP IU. The command is completed according to the
>         rules specified by the SCSI command set for that command.
> 
> The intent is that the answer to your first and second
> questions are "yes".
> 
> >  Is the target required to initialize the fields FCP_RESID_UNDER,
> >  FCP_RESID_OVER & FCP_RESID when any I/O is completed
> >  without the data phase having transferred exactly
> >  FCP_DL bytes, regardless of the SCSI Status being returned ?
> 
> >  When the target generates a CHECK CONDITION on an I/O
> >  and may have returned less than FCP_DL bytes in the data
> >  phase for that I/O, is it
> >  required to set the FCP_RESID_UNDER to 1 and indicate the number of
> >  bytes not transferred in the FCP_RESID field?
> 
> The intent is that the answer to your second question is:
> FCP_RESID should appropriately regardless of the SCSI Status
> being returned.  The classic errors of that class are those
> involving successful completion with reporting, like
> the "NO SENSE" and "RECOVERED ERROR" series of errors.
> 
> >
> >  What is the behaviour initiators can expect under the above
> >  condition ?
> 
> The intent is that there be no conflict.  I believe that FCP-2
> was a bit less bald than FC-PLDA in stating the requirement.
> 
> >  Is there a conflict in the behaviours described by FCP/FCP-2
> >  & FC-PLDA ?
> >
> 
> Bob Snively                        e-mail:    rsnively at brocade.com
> Brocade Communications Systems     phone:  408 487 8135
> 1745 Technology Drive
> San Jose, CA 95110
> 
> >  -----Original Message-----
> >  From: Santosh Rao [mailto:santoshr at cup.hp.com]
> >  Sent: Thursday, July 05, 2001 12:15 PM
> >  To: T10 Reflector; Fibre Channel T11 reflector
> >  Subject: FCP_RSP Residual Checking.
> >
> >
> >  All,
> >
> >  I've got a question on target behaviour while sending a
> >  CHECK CONDITION
> >  SCSI status in its FCP_RSP IU.
> >
> >  Is the target required to initialize the fields FCP_RESID_UNDER,
> >  FCP_RESID_OVER & FCP_RESID when any I/O is completed without the data
> >  phase having transferred exactly FCP_DL bytes, regardless of the SCSI
> >  Status being returned ?
> >
> >  When the target generates a CHECK CONDITION on an I/O and may have
> >  returned less than FCP_DL bytes in the data phase for that I/O, is it
> >  required to set the FCP_RESID_UNDER to 1 and indicate the number of
> >  bytes not transferred in the FCP_RESID field?
> >
> >  FC-PLDA Section 8.2.4.1 states that :
> >  "SCSI targets that transfer less than FCP_DL bytes during
> >  the FCP_DATA
> >  IUs shall set the FCP_RESID_UNDER to 1".
> >
> >  No exceptions are specified in the case of a CHECK CONDITION in the
> >  above definition, implying that FCP_RSP residual checking can be
> >  performed irrespective of the SCSI Status that was returned in the
> >  FCP_RSP.
> >
> >  However, the wording descriptions of FCP_RESID_UNDER,
> >  FCP_RESID_OVER &
> >  FCP_RESID in SCSI-FCP & FCP-2 are not as stringent as
> >  FC-PLDA and do not
> >  mandate that FCP_RESID_UNDER shall be set when the data
> >  transferred is <
> >  FCP_DL.
> >
> >  What is the behaviour initiators can expect under the above
> >  condition ?
> >  Is there a conflict in the behaviours described by FCP/FCP-2
> >  & FC-PLDA ?
> >
> >  Thanks,
> >  Santosh Rao
> >
*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org




More information about the T10 mailing list