diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 247ebc9..a3c930b 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -605,6 +605,7 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, continue; /* Attempt to append this chunk to the packet. */ +append: status = sctp_packet_append_chunk(pkt, chunk); switch (status) { @@ -619,9 +620,12 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, done = 1; /* Bundle next chunk in the next round. */ + goto append; + /* NOT REACHED */ break; case SCTP_XMIT_RWND_FULL: + case SCTP_XMIT_NAGLE_DELAY: /* Send this packet. */ error = sctp_packet_transmit(pkt); @@ -631,14 +635,6 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, done = 1; break; - case SCTP_XMIT_NAGLE_DELAY: - /* Send this packet. */ - error = sctp_packet_transmit(pkt); - - /* Stop sending DATA because of nagle delay. */ - done = 1; - break; - default: /* The append was successful, so add this chunk to * the transmitted list.