diff options
author | Gerrit Renker <gerrit@erg.abdn.ac.uk> | 2008-12-08 04:18:37 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-08 04:18:37 -0500 |
commit | 4098dce5be537a157eed4a326efd464109825b8b (patch) | |
tree | f7116e98853d805eb874c4f2345c3cce2acbfaa7 /net/dccp | |
parent | 0049bab5e765aa74cf767a834fa336e19453fc5e (diff) |
dccp: Remove manual influence on NDP Count feature
Updating the NDP count feature is handled automatically now:
* for CCID-2 it is disabled, since the code does not use NDP counts;
* for CCID-3 it is enabled, as NDP counts are used to determine loss lengths.
Allowing the user to change NDP values leads to unpredictable and failing
behaviour, since it is then possible to disable NDP counts even when they
are needed (e.g. in CCID-3).
This means that only those user settings are sensible that agree with the
values for Send NDP Count implied by the choice of CCID. But those settings
are already activated by the feature negotiation (CCID dependency tracking),
hence this form of support is redundant.
At startup the initialisation of the NDP count feature uses the default
value of 0, which is done implicitly by the zeroing-out of the socket when
it is allocated. If the choice of CCID or feature negotiation enables NDP
count, this will then be updated via the NDP activation handler.
Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp')
-rw-r--r-- | net/dccp/dccp.h | 1 | ||||
-rw-r--r-- | net/dccp/feat.c | 2 | ||||
-rw-r--r-- | net/dccp/minisocks.c | 1 | ||||
-rw-r--r-- | net/dccp/options.c | 4 | ||||
-rw-r--r-- | net/dccp/sysctl.c | 7 |
5 files changed, 2 insertions, 13 deletions
diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h index 94f6785f81ec..e0759d098b9a 100644 --- a/net/dccp/dccp.h +++ b/net/dccp/dccp.h | |||
@@ -99,7 +99,6 @@ extern int sysctl_dccp_feat_sequence_window; | |||
99 | extern int sysctl_dccp_feat_rx_ccid; | 99 | extern int sysctl_dccp_feat_rx_ccid; |
100 | extern int sysctl_dccp_feat_tx_ccid; | 100 | extern int sysctl_dccp_feat_tx_ccid; |
101 | extern int sysctl_dccp_feat_send_ack_vector; | 101 | extern int sysctl_dccp_feat_send_ack_vector; |
102 | extern int sysctl_dccp_feat_send_ndp_count; | ||
103 | extern int sysctl_dccp_tx_qlen; | 102 | extern int sysctl_dccp_tx_qlen; |
104 | extern int sysctl_dccp_sync_ratelimit; | 103 | extern int sysctl_dccp_sync_ratelimit; |
105 | 104 | ||
diff --git a/net/dccp/feat.c b/net/dccp/feat.c index a0d5891a37bf..30f9fb76b921 100644 --- a/net/dccp/feat.c +++ b/net/dccp/feat.c | |||
@@ -85,7 +85,7 @@ static int dccp_hdlr_ackvec(struct sock *sk, u64 enable, bool rx) | |||
85 | static int dccp_hdlr_ndp(struct sock *sk, u64 enable, bool rx) | 85 | static int dccp_hdlr_ndp(struct sock *sk, u64 enable, bool rx) |
86 | { | 86 | { |
87 | if (!rx) | 87 | if (!rx) |
88 | dccp_msk(sk)->dccpms_send_ndp_count = (enable > 0); | 88 | dccp_sk(sk)->dccps_send_ndp_count = (enable > 0); |
89 | return 0; | 89 | return 0; |
90 | } | 90 | } |
91 | 91 | ||
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c index 210c346899ba..02b14812464a 100644 --- a/net/dccp/minisocks.c +++ b/net/dccp/minisocks.c | |||
@@ -46,7 +46,6 @@ void dccp_minisock_init(struct dccp_minisock *dmsk) | |||
46 | { | 46 | { |
47 | dmsk->dccpms_sequence_window = sysctl_dccp_feat_sequence_window; | 47 | dmsk->dccpms_sequence_window = sysctl_dccp_feat_sequence_window; |
48 | dmsk->dccpms_send_ack_vector = sysctl_dccp_feat_send_ack_vector; | 48 | dmsk->dccpms_send_ack_vector = sysctl_dccp_feat_send_ack_vector; |
49 | dmsk->dccpms_send_ndp_count = sysctl_dccp_feat_send_ndp_count; | ||
50 | } | 49 | } |
51 | 50 | ||
52 | void dccp_time_wait(struct sock *sk, int state, int timeo) | 51 | void dccp_time_wait(struct sock *sk, int state, int timeo) |
diff --git a/net/dccp/options.c b/net/dccp/options.c index debb1008c7ad..e9d674874b4e 100644 --- a/net/dccp/options.c +++ b/net/dccp/options.c | |||
@@ -27,7 +27,6 @@ int sysctl_dccp_feat_sequence_window = DCCPF_INITIAL_SEQUENCE_WINDOW; | |||
27 | int sysctl_dccp_feat_rx_ccid = DCCPF_INITIAL_CCID; | 27 | int sysctl_dccp_feat_rx_ccid = DCCPF_INITIAL_CCID; |
28 | int sysctl_dccp_feat_tx_ccid = DCCPF_INITIAL_CCID; | 28 | int sysctl_dccp_feat_tx_ccid = DCCPF_INITIAL_CCID; |
29 | int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; | 29 | int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; |
30 | int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT; | ||
31 | 30 | ||
32 | u64 dccp_decode_value_var(const u8 *bf, const u8 len) | 31 | u64 dccp_decode_value_var(const u8 *bf, const u8 len) |
33 | { | 32 | { |
@@ -531,8 +530,7 @@ int dccp_insert_options(struct sock *sk, struct sk_buff *skb) | |||
531 | 530 | ||
532 | DCCP_SKB_CB(skb)->dccpd_opt_len = 0; | 531 | DCCP_SKB_CB(skb)->dccpd_opt_len = 0; |
533 | 532 | ||
534 | if (dmsk->dccpms_send_ndp_count && | 533 | if (dp->dccps_send_ndp_count && dccp_insert_option_ndp(sk, skb)) |
535 | dccp_insert_option_ndp(sk, skb)) | ||
536 | return -1; | 534 | return -1; |
537 | 535 | ||
538 | if (DCCP_SKB_CB(skb)->dccpd_type != DCCP_PKT_DATA) { | 536 | if (DCCP_SKB_CB(skb)->dccpd_type != DCCP_PKT_DATA) { |
diff --git a/net/dccp/sysctl.c b/net/dccp/sysctl.c index f6e54f433e29..587c12f915c1 100644 --- a/net/dccp/sysctl.c +++ b/net/dccp/sysctl.c | |||
@@ -48,13 +48,6 @@ static struct ctl_table dccp_default_table[] = { | |||
48 | .proc_handler = proc_dointvec, | 48 | .proc_handler = proc_dointvec, |
49 | }, | 49 | }, |
50 | { | 50 | { |
51 | .procname = "send_ndp", | ||
52 | .data = &sysctl_dccp_feat_send_ndp_count, | ||
53 | .maxlen = sizeof(sysctl_dccp_feat_send_ndp_count), | ||
54 | .mode = 0644, | ||
55 | .proc_handler = proc_dointvec, | ||
56 | }, | ||
57 | { | ||
58 | .procname = "request_retries", | 51 | .procname = "request_retries", |
59 | .data = &sysctl_dccp_request_retries, | 52 | .data = &sysctl_dccp_request_retries, |
60 | .maxlen = sizeof(sysctl_dccp_request_retries), | 53 | .maxlen = sizeof(sysctl_dccp_request_retries), |