diff options
Diffstat (limited to 'net')
| -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 | 
4 files changed, 25 insertions, 29 deletions
| 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 | ||
