mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 01:51:39 +00:00
sctp: Bring SCTP_DELAYED_ACK socket option into API compliance
Brings delayed_ack socket option set/get into line with the latest ietf socket extensions API draft, while maintaining backwards compatibility. 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>
This commit is contained in:
parent
5c5e12898a
commit
d364d9276b
5 changed files with 187 additions and 93 deletions
|
@ -190,20 +190,28 @@ static int sctp_gen_sack(struct sctp_association *asoc, int force,
|
|||
* unacknowledged DATA chunk. ...
|
||||
*/
|
||||
if (!asoc->peer.sack_needed) {
|
||||
/* We will need a SACK for the next packet. */
|
||||
asoc->peer.sack_needed = 1;
|
||||
asoc->peer.sack_cnt++;
|
||||
|
||||
/* Set the SACK delay timeout based on the
|
||||
* SACK delay for the last transport
|
||||
* data was received from, or the default
|
||||
* for the association.
|
||||
*/
|
||||
if (trans)
|
||||
if (trans) {
|
||||
/* We will need a SACK for the next packet. */
|
||||
if (asoc->peer.sack_cnt >= trans->sackfreq - 1)
|
||||
asoc->peer.sack_needed = 1;
|
||||
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
|
||||
trans->sackdelay;
|
||||
else
|
||||
} else {
|
||||
/* We will need a SACK for the next packet. */
|
||||
if (asoc->peer.sack_cnt >= asoc->sackfreq - 1)
|
||||
asoc->peer.sack_needed = 1;
|
||||
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
|
||||
asoc->sackdelay;
|
||||
}
|
||||
|
||||
/* Restart the SACK timer. */
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_RESTART,
|
||||
|
@ -216,6 +224,7 @@ static int sctp_gen_sack(struct sctp_association *asoc, int force,
|
|||
goto nomem;
|
||||
|
||||
asoc->peer.sack_needed = 0;
|
||||
asoc->peer.sack_cnt = 0;
|
||||
|
||||
sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(sack));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue