aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorGerrit Renker <gerrit@erg.abdn.ac.uk>2008-09-04 01:30:19 -0400
committerGerrit Renker <gerrit@erg.abdn.ac.uk>2008-09-04 01:45:32 -0400
commit2faae5587f692fd5c79856ca4c4b90944ee0472a (patch)
tree637536dff5a15b5196233f38066644d19f77f23e /net
parent4861a354430d2ea36847ef88086c7449b4f385b6 (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.c12
-rw-r--r--net/dccp/proto.c1
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
75static int dccp_hdlr_ack_ratio(struct sock *sk, u64 ratio, bool rx) 75static 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