diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-11-23 15:54:00 -0500 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-11-23 15:54:00 -0500 |
commit | 46d5a808558181e03a4760d2188cc9879445738a (patch) | |
tree | a51cc59d64042f61518d25ef4ecc71924f243084 /include/net | |
parent | a5b03ad2143c5bc9ae76533e8321fe66258b4f35 (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 'include/net')
-rw-r--r-- | include/net/sctp/structs.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index ac794a6823eb..bc3f8d879c5c 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -942,6 +942,8 @@ struct sctp_transport { | |||
942 | /* Data that has been sent, but not acknowledged. */ | 942 | /* Data that has been sent, but not acknowledged. */ |
943 | __u32 flight_size; | 943 | __u32 flight_size; |
944 | 944 | ||
945 | __u32 burst_limited; /* Holds old cwnd when max.burst is applied */ | ||
946 | |||
945 | /* TSN marking the fast recovery exit point */ | 947 | /* TSN marking the fast recovery exit point */ |
946 | __u32 fast_recovery_exit; | 948 | __u32 fast_recovery_exit; |
947 | 949 | ||
@@ -1070,6 +1072,8 @@ void sctp_transport_put(struct sctp_transport *); | |||
1070 | void sctp_transport_update_rto(struct sctp_transport *, __u32); | 1072 | void sctp_transport_update_rto(struct sctp_transport *, __u32); |
1071 | void sctp_transport_raise_cwnd(struct sctp_transport *, __u32, __u32); | 1073 | void sctp_transport_raise_cwnd(struct sctp_transport *, __u32, __u32); |
1072 | void sctp_transport_lower_cwnd(struct sctp_transport *, sctp_lower_cwnd_t); | 1074 | void sctp_transport_lower_cwnd(struct sctp_transport *, sctp_lower_cwnd_t); |
1075 | void sctp_transport_burst_limited(struct sctp_transport *); | ||
1076 | void sctp_transport_burst_reset(struct sctp_transport *); | ||
1073 | unsigned long sctp_transport_timeout(struct sctp_transport *); | 1077 | unsigned long sctp_transport_timeout(struct sctp_transport *); |
1074 | void sctp_transport_reset(struct sctp_transport *); | 1078 | void sctp_transport_reset(struct sctp_transport *); |
1075 | void sctp_transport_update_pmtu(struct sctp_transport *, u32); | 1079 | void sctp_transport_update_pmtu(struct sctp_transport *, u32); |