[SCTP]: Remove timeouts[] array from sctp_endpoint.
The socket level timeout values are maintained in sctp_sock and association level timeouts are in sctp_association. So there is no need for ep->timeouts. Signed-off-by: Vladislav Yasevich <vladislav.yasevich@hp.com> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
23ec47a088
commit
1e7d3d90c9
|
@ -1222,9 +1222,6 @@ struct sctp_endpoint {
|
|||
int last_key;
|
||||
int key_changed_at;
|
||||
|
||||
/* Default timeouts. */
|
||||
int timeouts[SCTP_NUM_TIMEOUT_TYPES];
|
||||
|
||||
/* sendbuf acct. policy. */
|
||||
__u32 sndbuf_policy;
|
||||
};
|
||||
|
|
|
@ -128,9 +128,29 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
|
|||
*/
|
||||
asoc->max_burst = sctp_max_burst;
|
||||
|
||||
/* Copy things from the endpoint. */
|
||||
/* initialize association timers */
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] = asoc->rto_initial;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] = asoc->rto_initial;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] = asoc->rto_initial;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T3_RTX] = 0;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = 0;
|
||||
|
||||
/* sctpimpguide Section 2.12.2
|
||||
* If the 'T5-shutdown-guard' timer is used, it SHOULD be set to the
|
||||
* recommended value of 5 times 'RTO.Max'.
|
||||
*/
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]
|
||||
= 5 * asoc->rto_max;
|
||||
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
|
||||
SCTP_DEFAULT_TIMEOUT_SACK;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] =
|
||||
sp->autoclose * HZ;
|
||||
|
||||
/* Initilizes the timers */
|
||||
for (i = SCTP_EVENT_TIMEOUT_NONE; i < SCTP_NUM_TIMEOUT_TYPES; ++i) {
|
||||
asoc->timeouts[i] = ep->timeouts[i];
|
||||
init_timer(&asoc->timers[i]);
|
||||
asoc->timers[i].function = sctp_timer_events[i];
|
||||
asoc->timers[i].data = (unsigned long) asoc;
|
||||
|
|
|
@ -70,7 +70,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
|
|||
struct sock *sk,
|
||||
gfp_t gfp)
|
||||
{
|
||||
struct sctp_sock *sp = sctp_sk(sk);
|
||||
memset(ep, 0, sizeof(struct sctp_endpoint));
|
||||
|
||||
/* Initialize the base structure. */
|
||||
|
@ -100,28 +99,6 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
|
|||
/* Create the lists of associations. */
|
||||
INIT_LIST_HEAD(&ep->asocs);
|
||||
|
||||
/* Set up the base timeout information. */
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] =
|
||||
msecs_to_jiffies(sp->rtoinfo.srto_initial);
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] =
|
||||
msecs_to_jiffies(sp->rtoinfo.srto_initial);
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T2_SHUTDOWN] =
|
||||
msecs_to_jiffies(sp->rtoinfo.srto_initial);
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T3_RTX] = 0;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T4_RTO] = 0;
|
||||
|
||||
/* sctpimpguide-05 Section 2.12.2
|
||||
* If the 'T5-shutdown-guard' timer is used, it SHOULD be set to the
|
||||
* recommended value of 5 times 'RTO.Max'.
|
||||
*/
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]
|
||||
= 5 * msecs_to_jiffies(sp->rtoinfo.srto_max);
|
||||
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] = 0;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_SACK] = sctp_sack_timeout;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = sp->autoclose * HZ;
|
||||
|
||||
/* Use SCTP specific send buffer space queues. */
|
||||
ep->sndbuf_policy = sctp_sndbuf_policy;
|
||||
sk->sk_write_space = sctp_write_space;
|
||||
|
|
|
@ -385,7 +385,7 @@ sctp_timer_event_t *sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES] = {
|
|||
NULL,
|
||||
sctp_generate_t4_rto_event,
|
||||
sctp_generate_t5_shutdown_guard_event,
|
||||
sctp_generate_heartbeat_event,
|
||||
NULL,
|
||||
sctp_generate_sack_event,
|
||||
sctp_generate_autoclose_event,
|
||||
};
|
||||
|
@ -689,9 +689,9 @@ static void sctp_cmd_new_state(sctp_cmd_seq_t *cmds,
|
|||
* increased due to timer expirations.
|
||||
*/
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] =
|
||||
asoc->ep->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT];
|
||||
asoc->rto_initial;
|
||||
asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] =
|
||||
asoc->ep->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE];
|
||||
asoc->rto_initial;
|
||||
}
|
||||
|
||||
if (sctp_state(asoc, ESTABLISHED) ||
|
||||
|
|
|
@ -1932,7 +1932,6 @@ static int sctp_setsockopt_autoclose(struct sock *sk, char __user *optval,
|
|||
if (copy_from_user(&sp->autoclose, optval, optlen))
|
||||
return -EFAULT;
|
||||
|
||||
sp->ep->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] = sp->autoclose * HZ;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue