aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/sctp/structs.h3
-rw-r--r--net/sctp/associola.c24
-rw-r--r--net/sctp/endpointola.c23
-rw-r--r--net/sctp/sm_sideeffect.c6
-rw-r--r--net/sctp/socket.c1
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