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>
This commit is contained in:
parent
4861a35443
commit
2faae5587f
|
@ -74,6 +74,18 @@ static int dccp_hdlr_seq_win(struct sock *sk, u64 seq_win, bool rx)
|
|||
|
||||
static int dccp_hdlr_ack_ratio(struct sock *sk, u64 ratio, bool rx)
|
||||
{
|
||||
#ifndef __CCID2_COPES_GRACEFULLY_WITH_DYNAMIC_ACK_RATIO_UPDATES__
|
||||
/*
|
||||
* FIXME: This is required until several problems in the CCID-2 code are
|
||||
* resolved. The CCID-2 code currently does not cope well; using dynamic
|
||||
* Ack Ratios greater than 1 caused instabilities. These were manifest
|
||||
* in hangups and long RTO timeouts (1...3 seconds). Until this has been
|
||||
* stabilised, it is safer not to activate dynamic Ack Ratio changes.
|
||||
*/
|
||||
dccp_pr_debug("Not changing %s Ack Ratio from 1 to %u\n",
|
||||
rx ? "RX" : "TX", (u16)ratio);
|
||||
ratio = 1;
|
||||
#endif
|
||||
if (rx)
|
||||
dccp_sk(sk)->dccps_r_ack_ratio = ratio;
|
||||
else
|
||||
|
|
|
@ -189,7 +189,6 @@ int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized)
|
|||
dp->dccps_rate_last = jiffies;
|
||||
dp->dccps_role = DCCP_ROLE_UNDEFINED;
|
||||
dp->dccps_service = DCCP_SERVICE_CODE_IS_ABSENT;
|
||||
dp->dccps_l_ack_ratio = dp->dccps_r_ack_ratio = 1;
|
||||
|
||||
dccp_init_xmit_timers(sk);
|
||||
|
||||
|
|
Loading…
Reference in a new issue