diff options
-rw-r--r-- | include/net/sctp/structs.h | 3 | ||||
-rw-r--r-- | net/sctp/associola.c | 24 | ||||
-rw-r--r-- | net/sctp/endpointola.c | 23 | ||||
-rw-r--r-- | net/sctp/sm_sideeffect.c | 6 | ||||
-rw-r--r-- | net/sctp/socket.c | 1 |
5 files changed, 25 insertions, 32 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 9c385b6417c7..2aad4468797e 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -1222,9 +1222,6 @@ struct sctp_endpoint { | |||
1222 | int last_key; | 1222 | int last_key; |
1223 | int key_changed_at; | 1223 | int key_changed_at; |
1224 | 1224 | ||
1225 | /* Default timeouts. */ | ||
1226 | int timeouts[SCTP_NUM_TIMEOUT_TYPES]; | ||
1227 | |||
1228 | /* sendbuf acct. policy. */ | 1225 | /* sendbuf acct. policy. */ |
1229 | __u32 sndbuf_policy; | 1226 | __u32 sndbuf_policy; |
1230 | }; | 1227 | }; |
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 8c8ddf7f9b61..5f07ddb19554 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -128,9 +128,29 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a | |||
128 | */ | 128 | */ |
129 | asoc->max_burst = sctp_max_burst; | 129 | asoc->max_burst = sctp_max_burst; |
130 | 130 | ||
131 | /* Copy things from the endpoint. */ | 131 | /* initialize association timers */ |
132 | asoc->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0; | ||
133 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc->rto_initial; | ||
134 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial; | ||
135 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = asoc->rto_initial; | ||
136 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T3_RTX] = 0; | ||
137 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = 0; | ||
138 | |||
139 | /* sctpimpguide Section 2.12.2 | ||
140 | * If the 'T5-shutdown-guard' timer is used, it SHOULD be set to the | ||
141 | * recommended value of 5 times 'RTO.Max'. | ||
142 | */ | ||
143 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD] | ||
144 | = 5 * asoc->rto_max; | ||
145 | |||
146 | asoc->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0; | ||
147 | asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] = | ||
148 | SCTP_DEFAULT_TIMEOUT_SACK; | ||
149 | asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = | ||
150 | sp->autoclose * HZ; | ||
151 | |||
152 | /* Initilizes the timers */ | ||
132 | for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i) { | 153 | for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i) { |
133 | asoc->timeouts[i] = ep->timeouts[i]; | ||
134 | init_timer(&asoc->timers[i]); | 154 | init_timer(&asoc->timers[i]); |
135 | asoc->timers[i].function = sctp_timer_events[i]; | 155 | asoc->timers[i].function = sctp_timer_events[i]; |
136 | asoc->timers[i].data = (unsigned long) asoc; | 156 | asoc->timers[i].data = (unsigned long) asoc; |
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c index 96984f7a2d69..0df76897f563 100644 --- a/net/sctp/endpointola.c +++ b/net/sctp/endpointola.c | |||
@@ -70,7 +70,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, | |||
70 | struct sock *sk, | 70 | struct sock *sk, |
71 | gfp_t gfp) | 71 | gfp_t gfp) |
72 | { | 72 | { |
73 | struct sctp_sock *sp = sctp_sk(sk); | ||
74 | memset(ep, 0, sizeof(struct sctp_endpoint)); | 73 | memset(ep, 0, sizeof(struct sctp_endpoint)); |
75 | 74 | ||
76 | /* Initialize the base structure. */ | 75 | /* Initialize the base structure. */ |
@@ -100,28 +99,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, | |||
100 | /* Create the lists of associations. */ | 99 | /* Create the lists of associations. */ |
101 | INIT_LIST_HEAD(&ep->asocs); | 100 | INIT_LIST_HEAD(&ep->asocs); |
102 | 101 | ||
103 | /* Set up the base timeout information. */ | ||
104 | ep->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0; | ||
105 | ep->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = | ||
106 | msecs_to_jiffies(sp->rtoinfo.srto_initial); | ||
107 | ep->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = | ||
108 | msecs_to_jiffies(sp->rtoinfo.srto_initial); | ||
109 | ep->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = | ||
110 | msecs_to_jiffies(sp->rtoinfo.srto_initial); | ||
111 | ep->timeouts[SCTP_EVENT_TIMEOUT_T3_RTX] = 0; | ||
112 | ep->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = 0; | ||
113 | |||
114 | /* sctpimpguide-05 Section 2.12.2 | ||
115 | * If the 'T5-shutdown-guard' timer is used, it SHOULD be set to the | ||
116 | * recommended value of 5 times 'RTO.Max'. | ||
117 | */ | ||
118 | ep->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD] | ||
119 | = 5 * msecs_to_jiffies(sp->rtoinfo.srto_max); | ||
120 | |||
121 | ep->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0; | ||
122 | ep->timeouts[SCTP_EVENT_TIMEOUT_SACK] = sctp_sack_timeout; | ||
123 | ep->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = sp->autoclose * HZ; | ||
124 | |||
125 | /* Use SCTP specific send buffer space queues. */ | 102 | /* Use SCTP specific send buffer space queues. */ |
126 | ep->sndbuf_policy = sctp_sndbuf_policy; | 103 | ep->sndbuf_policy = sctp_sndbuf_policy; |
127 | sk->sk_write_space = sctp_write_space; | 104 | sk->sk_write_space = sctp_write_space; |
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index f84173ea8ec1..823947170a33 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
@@ -385,7 +385,7 @@ sctp_timer_event_t *sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES] = { | |||
385 | NULL, | 385 | NULL, |
386 | sctp_generate_t4_rto_event, | 386 | sctp_generate_t4_rto_event, |
387 | sctp_generate_t5_shutdown_guard_event, | 387 | sctp_generate_t5_shutdown_guard_event, |
388 | sctp_generate_heartbeat_event, | 388 | NULL, |
389 | sctp_generate_sack_event, | 389 | sctp_generate_sack_event, |
390 | sctp_generate_autoclose_event, | 390 | sctp_generate_autoclose_event, |
391 | }; | 391 | }; |
@@ -689,9 +689,9 @@ static void sctp_cmd_new_state(sctp_cmd_seq_t *cmds, | |||
689 | * increased due to timer expirations. | 689 | * increased due to timer expirations. |
690 | */ | 690 | */ |
691 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = | 691 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = |
692 | asoc->ep->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT]; | 692 | asoc->rto_initial; |
693 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = | 693 | asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = |
694 | asoc->ep->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE]; | 694 | asoc->rto_initial; |
695 | } | 695 | } |
696 | 696 | ||
697 | if (sctp_state(asoc, ESTABLISHED) || | 697 | if (sctp_state(asoc, ESTABLISHED) || |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index b529af5e6f2a..4d1b8d8904c4 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -1932,7 +1932,6 @@ static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval, | |||
1932 | if (copy_from_user(&sp->autoclose, optval, optlen)) | 1932 | if (copy_from_user(&sp->autoclose, optval, optlen)) |
1933 | return -EFAULT; | 1933 | return -EFAULT; |
1934 | 1934 | ||
1935 | sp->ep->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = sp->autoclose * HZ; | ||
1936 | return 0; | 1935 | return 0; |
1937 | } | 1936 | } |
1938 | 1937 | ||