Don't bundle a SACK chunk with a SHUTDOWN chunk if it is not required.
MFC after: 1 week
This commit is contained in:
parent
8d0a31e19c
commit
ebecdad811
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=309744
@ -2437,13 +2437,17 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap)
|
||||
{
|
||||
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, int was_a_gap)
|
||||
}
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user