diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2008-09-04 01:30:19 -0400 |
---|---|---|
committer | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2008-09-04 01:45:32 -0400 |
commit | 2faae5587f692fd5c79856ca4c4b90944ee0472a (patch) | |
tree | 637536dff5a15b5196233f38066644d19f77f23e /net | |
parent | 4861a354430d2ea36847ef88086c7449b4f385b6 (diff) |
dccp ccid-2: Use feature-negotiation to report Ack Ratio changes
This uses the new feature-negotiation framework to signal Ack Ratio changes,
as required by RFC 4341, sec. 6.1.2.
This raises some problems for CCID-2 since it can at the moment not cope
gracefully with Ack Ratio of e.g. 2. A FIXME has thus been added which
reverts to the existing policy of bypassing the Ack Ratio sysctl.
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Diffstat (limited to 'net')
-rw-r--r-- | net/dccp/feat.c | 12 | ||||
-rw-r--r-- | net/dccp/proto.c | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/net/dccp/feat.c b/net/dccp/feat.c index c847c80d1b97..f94c7c9d1a7f 100644 --- a/net/dccp/feat.c +++ b/net/dccp/feat.c | |||
@@ -74,6 +74,18 @@ static int dccp_hdlr_seq_win(struct sock *sk, u64 seq_win, bool rx) | |||
74 | 74 | ||
75 | static int dccp_hdlr_ack_ratio(struct sock *sk, u64 ratio, bool rx) | 75 | static int dccp_hdlr_ack_ratio(struct sock *sk, u64 ratio, bool rx) |
76 | { | 76 | { |
77 | #ifndef __CCID2_COPES_GRACEFULLY_WITH_DYNAMIC_ACK_RATIO_UPDATES__ | ||
78 | /* | ||
79 | * FIXME: This is required until several problems in the CCID-2 code are | ||
80 | * resolved. The CCID-2 code currently does not cope well; using dynamic | ||
81 | * Ack Ratios greater than 1 caused instabilities. These were manifest | ||
82 | * in hangups and long RTO timeouts (1...3 seconds). Until this has been | ||
83 | * stabilised, it is safer not to activate dynamic Ack Ratio changes. | ||
84 | */ | ||
85 | dccp_pr_debug("Not changing %s Ack Ratio from 1 to %u\n", | ||
86 | rx ? "RX" : "TX", (u16)ratio); | ||
87 | ratio = 1; | ||
88 | #endif | ||
77 | if (rx) | 89 | if (rx) |
78 | dccp_sk(sk)->dccps_r_ack_ratio = ratio; | 90 | dccp_sk(sk)->dccps_r_ack_ratio = ratio; |
79 | else | 91 | else |
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 392a5d822b33..11905e0cf8f7 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
@@ -189,7 +189,6 @@ int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized) | |||
189 | dp->dccps_rate_last = jiffies; | 189 | dp->dccps_rate_last = jiffies; |
190 | dp->dccps_role = DCCP_ROLE_UNDEFINED; | 190 | dp->dccps_role = DCCP_ROLE_UNDEFINED; |
191 | dp->dccps_service = DCCP_SERVICE_CODE_IS_ABSENT; | 191 | dp->dccps_service = DCCP_SERVICE_CODE_IS_ABSENT; |
192 | dp->dccps_l_ack_ratio = dp->dccps_r_ack_ratio = 1; | ||
193 | 192 | ||
194 | dccp_init_xmit_timers(sk); | 193 | dccp_init_xmit_timers(sk); |
195 | 194 | ||