SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    RE: iSCSI: MaxCmdSN



    Ayman,
    
    I thought I understood this, and I had a great explanation supporting the
    draft (06), but I now realize I was "off by one".  I believe you are correct
    that ExpCmdSN will be one greater than MaxCmdSN if-and-only-if an
    acknowledgement is to be sent while the window is closed.
    
    The purpose of ExpCmdSN and MaxCmdSN transmitted by the target, is to
    advance values with the same names maintained in the initiator.  ExpCmdSN
    acknowledges receipt of all CmdSN values < ExpCmdSN.  MaxCmdSN is the
    largest CmdSN the target promises to accept, and conversely the largest
    CmdSN the initiator is permitted to send.
    
    The target can not regress these numbers in the initiator.  When the target
    transmits (and the initiator accepts) N as the MaxCmdSN, the initiator is
    allowed to transmit CmdSN values through N.  Then it must stop.  Any number
    of additional PDUs may carry the same MaxCmdSN value.  None of these will
    cause the initiator's value to advance.  A response carrying a MaxCmdSN less
    than the initiator's current MaxCmdSN value is presumed to have arrived
    late.  It does not advance nor regress the initiator's present value.
    
    After the initiator sends CmdSN of MaxCmdSN (still N), it can not send any
    more until MaxCmdSN advances.  It should be permitted for the target to
    acknowledge the receipt of all commands received through this CmdSN which is
    N.  In this case ExpCmdSN would be N + 1 and MaxCmdSN is still N.  We know
    that no commands are in flight.  When the target is able to accept another
    command, it must advance MaxCmdSN (value > N in serial arithmetic), and it
    will send the new value to the initiator in the next inbound PDU (i.e.
    data-in, SCSI response, or nop-in).
    
    Yes, I believe it would be a protocol error for MaxCmdSN to have a value
    less than ExpCmdSN - 1.  This would be an acknowledgement for a CmdSN which
    the initiator was not yet permitted to send.  I think MaxCmdSN equal to
    ExpCmdSN - 1 should be permitted.
    
    Note however that nothing will break if this acknowledgement is not
    immediately sent or, having been sent, does not advance the initiator's
    values.  The window is already closed and remains so.  While the window is
    closed, the initiator will be holding the last PDU sent as unacknowledged,
    when the target has in fact received it.  The PDU will be successfully
    acknowledged when MaxCmdSN advances, because ExpCmdSN in the target will not
    advance simultaneously while the window is closed.  
    
    Was this done intentionally to delay the last acknowledgement when the
    window is closed, or is it an "off by one" issue in  draft 06?
    
    This made me think about a related issue:
    It think it would be permitted for the target to reject or drop a PDU with
    CmdSN greater than MaxCmdSN, but I am not sure if it is required to do so.
    I do not see a response code the target could send that would tell the
    initiator what it did wrong.
    
    Thanks,
    Nick
    
    -----Original Message-----
    From: Ayman Ghanem [mailto:aghanem@cisco.com]
    Sent: Monday, June 11, 2001 9:18 AM
    To: ips@ece.cmu.edu
    Subject: iSCSI: MaxCmdSN
    
    
    In section 2.4.10, "if the PDU MaxCmdSN is less than the PDU ExpCmdSN ....,
    they are both ignored". Is this considered an invalid response from the
    target?. What happens when the target queuing capacity reaches 0. For
    example: target received and processed cmdsn N, but can not receive cmdsn
    N+1 yet. In the response for N, target puts N+1 for expectedCmdSN. How does
    it inform the initiator that its window is closed?. Setting MaxCmdSN to N
    will be ignored if I understand the above paragraph correctly.
    
    -Ayman
    
    


Home

Last updated: Tue Sep 04 01:04:31 2001
6315 messages in chronological order