aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/outqueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp/outqueue.c')
-rw-r--r--net/sctp/outqueue.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index bf92a5b68f8b..7812772dbf74 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -131,7 +131,8 @@ static inline int sctp_cacc_skip_3_1_d(struct sctp_transport *primary,
131static inline int sctp_cacc_skip_3_1_f(struct sctp_transport *transport, 131static inline int sctp_cacc_skip_3_1_f(struct sctp_transport *transport,
132 int count_of_newacks) 132 int count_of_newacks)
133{ 133{
134 if (count_of_newacks < 2 && !transport->cacc.cacc_saw_newack) 134 if (count_of_newacks < 2 &&
135 (transport && !transport->cacc.cacc_saw_newack))
135 return 1; 136 return 1;
136 return 0; 137 return 0;
137} 138}
@@ -618,9 +619,12 @@ redo:
618 619
619 /* If we are retransmitting, we should only 620 /* If we are retransmitting, we should only
620 * send a single packet. 621 * send a single packet.
622 * Otherwise, try appending this chunk again.
621 */ 623 */
622 if (rtx_timeout || fast_rtx) 624 if (rtx_timeout || fast_rtx)
623 done = 1; 625 done = 1;
626 else
627 goto redo;
624 628
625 /* Bundle next chunk in the next round. */ 629 /* Bundle next chunk in the next round. */
626 break; 630 break;
@@ -1683,8 +1687,9 @@ static void sctp_mark_missing(struct sctp_outq *q,
1683 /* SFR-CACC may require us to skip marking 1687 /* SFR-CACC may require us to skip marking
1684 * this chunk as missing. 1688 * this chunk as missing.
1685 */ 1689 */
1686 if (!transport || !sctp_cacc_skip(primary, transport, 1690 if (!transport || !sctp_cacc_skip(primary,
1687 count_of_newacks, tsn)) { 1691 chunk->transport,
1692 count_of_newacks, tsn)) {
1688 chunk->tsn_missing_report++; 1693 chunk->tsn_missing_report++;
1689 1694
1690 SCTP_DEBUG_PRINTK( 1695 SCTP_DEBUG_PRINTK(