sctp: Fix to handle SHUTDOWN in SHUTDOWN-PENDING state
authorWei Yongjun <yjwei@cn.fujitsu.com>
Thu, 23 Oct 2008 08:00:49 +0000 (01:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Oct 2008 08:00:49 +0000 (01:00 -0700)
commitcf896d514a4564027929a6d284872c74987085ef
treef6ce180ea181798ecda37c3563816f5b029589ce
parentdf10eec476f2045a2ef5f85d97c7b47d992d7f7b
sctp: Fix to handle SHUTDOWN in SHUTDOWN-PENDING state

If SHUTDOWN is received in SHUTDOWN-PENDING state, enpoint should enter
the SHUTDOWN-RECEIVED state and check the Cumulative TSN Ack field of
the SHUTDOWN chunk (RFC 4960 Section 9.2). If the SHUTDOWN chunk can
acknowledge all of the send DATA chunks, SHUTDOWN-ACK should be sent.

But now endpoint just silently discarded the SHUTDOWN chunk.

SHUTDOWN received in SHUTDOWN-PENDING state can happend when the last
SACK is lost by network, or the SHUTDOWN chunk can acknowledge all of
the received DATA chunks. The packet sequence(SACK lost) is like this:

Endpoint A                       Endpoint B       ULP
(ESTABLISHED)                    (ESTABLISHED)

               <-----------      DATA
                                             <--- shutdown
                                 Enter SHUTDOWN-PENDING state
  SACK         ----lost---->

  SHUTDOWN(*1) ------------>

               <-----------      SHUTDOWN-ACK

 (*1) silently discarded now.

This patch fix to handle SHUTDOWN in SHUTDOWN-PENDING state as the same
as ESTABLISHED state.

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/sm_statetable.c