svn commit: r310223 - stable/11/sys/netinet
Michael Tuexen
tuexen at FreeBSD.org
Sun Dec 18 13:45:06 UTC 2016
Author: tuexen
Date: Sun Dec 18 13:45:04 2016
New Revision: 310223
URL: https://svnweb.freebsd.org/changeset/base/310223
Log:
MFC r309744:
Don't bundle a SACK chunk with a SHUTDOWN chunk if it is not required.
Modified:
stable/11/sys/netinet/sctp_indata.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/netinet/sctp_indata.c
==============================================================================
--- stable/11/sys/netinet/sctp_indata.c Sun Dec 18 13:13:09 2016 (r310222)
+++ stable/11/sys/netinet/sctp_indata.c Sun Dec 18 13:45:04 2016 (r310223)
@@ -2437,13 +2437,17 @@ sctp_sack_check(struct sctp_tcb *stcb, i
{
struct sctp_association *asoc;
uint32_t highest_tsn;
+ int is_a_gap;
+ sctp_slide_mapping_arrays(stcb);
asoc = &stcb->asoc;
if (SCTP_TSN_GT(asoc->highest_tsn_inside_nr_map, asoc->highest_tsn_inside_map)) {
highest_tsn = asoc->highest_tsn_inside_nr_map;
} else {
highest_tsn = asoc->highest_tsn_inside_map;
}
+ /* Is there a gap now? */
+ is_a_gap = SCTP_TSN_GT(highest_tsn, stcb->asoc.cumulative_tsn);
/*
* Now we need to see if we need to queue a sack or just start the
@@ -2462,13 +2466,10 @@ sctp_sack_check(struct sctp_tcb *stcb, i
}
sctp_send_shutdown(stcb,
((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination));
- sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED);
+ if (is_a_gap) {
+ sctp_send_sack(stcb, SCTP_SO_NOT_LOCKED);
+ }
} else {
- int is_a_gap;
-
- /* is there a gap now ? */
- is_a_gap = SCTP_TSN_GT(highest_tsn, stcb->asoc.cumulative_tsn);
-
/*
* CMT DAC algorithm: increase number of packets received
* since last ack
More information about the svn-src-stable
mailing list