Don't set the DF-bit on timer based retransmissions.
MFC after: 1 week
This commit is contained in:
parent
51f1e9ef28
commit
23c816e1ed
@ -667,6 +667,7 @@ start_again:
|
||||
stcb->asoc.peers_rwnd += SCTP_BASE_SYSCTL(sctp_peer_chunk_oh);
|
||||
}
|
||||
chk->sent = SCTP_DATAGRAM_RESEND;
|
||||
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
SCTP_STAT_INCR(sctps_markedretrans);
|
||||
|
||||
/* reset the TSN for striking and other FR stuff */
|
||||
@ -740,6 +741,7 @@ start_again:
|
||||
chk->whoTo = alt;
|
||||
if (chk->sent != SCTP_DATAGRAM_RESEND) {
|
||||
chk->sent = SCTP_DATAGRAM_RESEND;
|
||||
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
cnt_mk++;
|
||||
}
|
||||
@ -1084,6 +1086,7 @@ sctp_cookie_timer(struct sctp_inpcb *inp,
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
}
|
||||
cookie->sent = SCTP_DATAGRAM_RESEND;
|
||||
cookie->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
/*
|
||||
* Now call the output routine to kick out the cookie again, Note we
|
||||
* don't mark any chunks for retran so that FR will need to kick in
|
||||
@ -1130,6 +1133,7 @@ sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
sctp_free_remote_addr(chk->whoTo);
|
||||
if (chk->sent != SCTP_DATAGRAM_RESEND) {
|
||||
chk->sent = SCTP_DATAGRAM_RESEND;
|
||||
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
}
|
||||
chk->whoTo = alt;
|
||||
@ -1147,6 +1151,7 @@ sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
if (strrst->sent != SCTP_DATAGRAM_RESEND)
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
strrst->sent = SCTP_DATAGRAM_RESEND;
|
||||
strrst->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
|
||||
/* restart the timer */
|
||||
sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, inp, stcb, strrst->whoTo);
|
||||
@ -1211,6 +1216,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
chk->whoTo = alt;
|
||||
if (chk->sent != SCTP_DATAGRAM_RESEND) {
|
||||
chk->sent = SCTP_DATAGRAM_RESEND;
|
||||
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
}
|
||||
atomic_add_int(&alt->ref_count, 1);
|
||||
@ -1225,6 +1231,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
if (asconf->sent != SCTP_DATAGRAM_RESEND && chk->sent != SCTP_DATAGRAM_UNSENT)
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
chk->sent = SCTP_DATAGRAM_RESEND;
|
||||
chk->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
}
|
||||
if (!(net->dest_state & SCTP_ADDR_REACHABLE)) {
|
||||
/*
|
||||
@ -1237,6 +1244,7 @@ sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb,
|
||||
if (asconf->sent != SCTP_DATAGRAM_RESEND)
|
||||
sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt);
|
||||
asconf->sent = SCTP_DATAGRAM_RESEND;
|
||||
asconf->flags |= CHUNK_FLAGS_FRAGMENT_OK;
|
||||
|
||||
/* send another ASCONF if any and we can do */
|
||||
sctp_send_asconf(stcb, alt, SCTP_ADDR_NOT_LOCKED);
|
||||
|
Loading…
x
Reference in New Issue
Block a user