aboutsummaryrefslogtreecommitdiffstats
path: root/net/dccp
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:31 -0400
commit68e074bfcef269bc61006c2740d7f89ccbbd93d7 (patch)
treed5e43100cd59fbd7893ce730e8440a7b7d11ed0b /net/dccp
parent78673e24df27c76ec75565f4024d45c2c74ef148 (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 is with 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>
Diffstat (limited to 'net/dccp')
-rw-r--r--net/dccp/dccp.h1
-rw-r--r--net/dccp/feat.c2
-rw-r--r--net/dccp/minisocks.c1
-rw-r--r--net/dccp/options.c4
-rw-r--r--net/dccp/sysctl.c7
5 files changed, 2 insertions, 13 deletions
diff --git a/net/dccp/dccp.h b/net/dccp/dccp.h
index 1baed789bcc2..51436c825655 100644
--- a/net/dccp/dccp.h
+++ b/net/dccp/dccp.h
@@ -99,7 +99,6 @@ extern int sysctl_dccp_feat_sequence_window;
99extern int sysctl_dccp_feat_rx_ccid; 99extern int sysctl_dccp_feat_rx_ccid;
100extern int sysctl_dccp_feat_tx_ccid; 100extern int sysctl_dccp_feat_tx_ccid;
101extern int sysctl_dccp_feat_send_ack_vector; 101extern int sysctl_dccp_feat_send_ack_vector;
102extern int sysctl_dccp_feat_send_ndp_count;
103extern int sysctl_dccp_tx_qlen; 102extern int sysctl_dccp_tx_qlen;
104extern int sysctl_dccp_sync_ratelimit; 103extern int sysctl_dccp_sync_ratelimit;
105 104
diff --git a/net/dccp/feat.c b/net/dccp/feat.c
index cb2ddd2b894b..35a57ab3bb1e 100644
--- a/net/dccp/feat.c
+++ b/net/dccp/feat.c
@@ -86,7 +86,7 @@ static int dccp_hdlr_ackvec(struct sock *sk, u64 enable, bool rx)
86static int dccp_hdlr_ndp(struct sock *sk, u64 enable, bool rx) 86static int dccp_hdlr_ndp(struct sock *sk, u64 enable, bool rx)
87{ 87{
88 if (!rx) 88 if (!rx)
89 dccp_msk(sk)->dccpms_send_ndp_count = (enable > 0); 89 dccp_sk(sk)->dccps_send_ndp_count = (enable > 0);
90 return 0; 90 return 0;
91} 91}
92 92
diff --git a/net/dccp/minisocks.c b/net/dccp/minisocks.c
index 486d61df2604..9e2232572662 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
52void dccp_time_wait(struct sock *sk, int state, int timeo) 51void dccp_time_wait(struct sock *sk, int state, int timeo)
diff --git a/net/dccp/options.c b/net/dccp/options.c
index 3a9a22f0ac1a..6b0704497e83 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;
27int sysctl_dccp_feat_rx_ccid = DCCPF_INITIAL_CCID; 27int sysctl_dccp_feat_rx_ccid = DCCPF_INITIAL_CCID;
28int sysctl_dccp_feat_tx_ccid = DCCPF_INITIAL_CCID; 28int sysctl_dccp_feat_tx_ccid = DCCPF_INITIAL_CCID;
29int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR; 29int sysctl_dccp_feat_send_ack_vector = DCCPF_INITIAL_SEND_ACK_VECTOR;
30int sysctl_dccp_feat_send_ndp_count = DCCPF_INITIAL_SEND_NDP_COUNT;
31 30
32u64 dccp_decode_value_var(const u8 *bf, const u8 len) 31u64 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),