aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/output.c
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2009-11-23 15:54:00 -0500
committerVlad Yasevich <vladislav.yasevich@hp.com>2009-11-23 15:54:00 -0500
commit46d5a808558181e03a4760d2188cc9879445738a (patch)
treea51cc59d64042f61518d25ef4ecc71924f243084 /net/sctp/output.c
parenta5b03ad2143c5bc9ae76533e8321fe66258b4f35 (diff)
sctp: Update max.burst implementation
Current implementation of max.burst ends up limiting new data during cwnd decay period. The decay is happening becuase the connection is idle and we are allowed to fill the congestion window. The point of max.burst is to limit micro-bursts in response to large acks. This still happens, as max.burst is still applied to each transmit opportunity. It will also apply if a very large send is made (greater then allowed by burst). Tested-by: Florian Niederbacher <florian.niederbacher@student.uibk.ac.at> Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp/output.c')
-rw-r--r--net/sctp/output.c23
1 files changed, 0 insertions, 23 deletions
diff --git a/net/sctp/output.c b/net/sctp/output.c
index 9e8e0ea844be..b210d2077e28 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -615,7 +615,6 @@ static sctp_xmit_t sctp_packet_can_append_data(struct sctp_packet *packet,
615 sctp_xmit_t retval = SCTP_XMIT_OK; 615 sctp_xmit_t retval = SCTP_XMIT_OK;
616 size_t datasize, rwnd, inflight, flight_size; 616 size_t datasize, rwnd, inflight, flight_size;
617 struct sctp_transport *transport = packet->transport; 617 struct sctp_transport *transport = packet->transport;
618 __u32 max_burst_bytes;
619 struct sctp_association *asoc = transport->asoc; 618 struct sctp_association *asoc = transport->asoc;
620 struct sctp_outq *q = &asoc->outqueue; 619 struct sctp_outq *q = &asoc->outqueue;
621 620
@@ -648,28 +647,6 @@ static sctp_xmit_t sctp_packet_can_append_data(struct sctp_packet *packet,
648 } 647 }
649 } 648 }
650 649
651 /* sctpimpguide-05 2.14.2
652 * D) When the time comes for the sender to
653 * transmit new DATA chunks, the protocol parameter Max.Burst MUST
654 * first be applied to limit how many new DATA chunks may be sent.
655 * The limit is applied by adjusting cwnd as follows:
656 * if ((flightsize + Max.Burst * MTU) < cwnd)
657 * cwnd = flightsize + Max.Burst * MTU
658 */
659 max_burst_bytes = asoc->max_burst * asoc->pathmtu;
660 if ((flight_size + max_burst_bytes) < transport->cwnd) {
661 transport->cwnd = flight_size + max_burst_bytes;
662 SCTP_DEBUG_PRINTK("%s: cwnd limited by max_burst: "
663 "transport: %p, cwnd: %d, "
664 "ssthresh: %d, flight_size: %d, "
665 "pba: %d\n",
666 __func__, transport,
667 transport->cwnd,
668 transport->ssthresh,
669 transport->flight_size,
670 transport->partial_bytes_acked);
671 }
672
673 /* RFC 2960 6.1 Transmission of DATA Chunks 650 /* RFC 2960 6.1 Transmission of DATA Chunks
674 * 651 *
675 * B) At any given time, the sender MUST NOT transmit new data 652 * B) At any given time, the sender MUST NOT transmit new data