[SCTP] Make init & delayed sack timeouts configurable by user.
Signed-off-by: Vlad 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
7a1af5d7bb
commit
2f85a42964
@ -641,6 +641,7 @@ enum {
|
||||
NET_SCTP_ADDIP_ENABLE = 13,
|
||||
NET_SCTP_PRSCTP_ENABLE = 14,
|
||||
NET_SCTP_SNDBUF_POLICY = 15,
|
||||
NET_SCTP_SACK_TIMEOUT = 16,
|
||||
};
|
||||
|
||||
/* /proc/sys/net/bridge */
|
||||
|
@ -263,23 +263,11 @@ enum { SCTP_MIN_PMTU = 576 };
|
||||
enum { SCTP_MAX_DUP_TSNS = 16 };
|
||||
enum { SCTP_MAX_GABS = 16 };
|
||||
|
||||
/* Here we define the default timers. */
|
||||
/* Heartbeat interval - 30 secs */
|
||||
#define SCTP_DEFAULT_TIMEOUT_HEARTBEAT (30 * HZ)
|
||||
|
||||
/* cookie timer def = ? seconds */
|
||||
#define SCTP_DEFAULT_TIMEOUT_T1_COOKIE (3 * HZ)
|
||||
|
||||
/* init timer def = 3 seconds */
|
||||
#define SCTP_DEFAULT_TIMEOUT_T1_INIT (3 * HZ)
|
||||
|
||||
/* shutdown timer def = 300 ms */
|
||||
#define SCTP_DEFAULT_TIMEOUT_T2_SHUTDOWN ((300 * HZ) / 1000)
|
||||
|
||||
/* 0 seconds + RTO */
|
||||
#define SCTP_DEFAULT_TIMEOUT_HEARTBEAT (10 * HZ)
|
||||
|
||||
/* recv timer def = 200ms (in usec) */
|
||||
/* Delayed sack timer - 200ms */
|
||||
#define SCTP_DEFAULT_TIMEOUT_SACK ((200 * HZ) / 1000)
|
||||
#define SCTP_DEFAULT_TIMEOUT_SACK_MAX ((500 * HZ) / 1000) /* 500 ms */
|
||||
|
||||
/* RTO.Initial - 3 seconds
|
||||
* RTO.Min - 1 second
|
||||
|
@ -161,6 +161,9 @@ extern struct sctp_globals {
|
||||
*/
|
||||
int sndbuf_policy;
|
||||
|
||||
/* Delayed SACK timeout 200ms default*/
|
||||
int sack_timeout;
|
||||
|
||||
/* HB.interval - 30 seconds */
|
||||
int hb_interval;
|
||||
|
||||
@ -217,6 +220,7 @@ extern struct sctp_globals {
|
||||
#define sctp_sndbuf_policy (sctp_globals.sndbuf_policy)
|
||||
#define sctp_max_retrans_path (sctp_globals.max_retrans_path)
|
||||
#define sctp_max_retrans_init (sctp_globals.max_retrans_init)
|
||||
#define sctp_sack_timeout (sctp_globals.sack_timeout)
|
||||
#define sctp_hb_interval (sctp_globals.hb_interval)
|
||||
#define sctp_max_instreams (sctp_globals.max_instreams)
|
||||
#define sctp_max_outstreams (sctp_globals.max_outstreams)
|
||||
|
@ -102,9 +102,9 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
|
||||
/* Set up the base timeout information. */
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_NONE] = 0;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE] =
|
||||
SCTP_DEFAULT_TIMEOUT_T1_COOKIE;
|
||||
msecs_to_jiffies(sp->rtoinfo.srto_initial);
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT] =
|
||||
SCTP_DEFAULT_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;
|
||||
@ -117,12 +117,9 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep,
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD]
|
||||
= 5 * msecs_to_jiffies(sp->rtoinfo.srto_max);
|
||||
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_HEARTBEAT] =
|
||||
SCTP_DEFAULT_TIMEOUT_HEARTBEAT;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_SACK] =
|
||||
SCTP_DEFAULT_TIMEOUT_SACK;
|
||||
ep->timeouts[SCTP_EVENT_TIMEOUT_AUTOCLOSE] =
|
||||
sp->autoclose * HZ;
|
||||
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;
|
||||
|
@ -1050,7 +1050,10 @@ SCTP_STATIC __init int sctp_init(void)
|
||||
sctp_sndbuf_policy = 0;
|
||||
|
||||
/* HB.interval - 30 seconds */
|
||||
sctp_hb_interval = 30 * HZ;
|
||||
sctp_hb_interval = SCTP_DEFAULT_TIMEOUT_HEARTBEAT;
|
||||
|
||||
/* delayed SACK timeout */
|
||||
sctp_sack_timeout = SCTP_DEFAULT_TIMEOUT_SACK;
|
||||
|
||||
/* Implementation specific variables. */
|
||||
|
||||
|
@ -47,6 +47,8 @@
|
||||
static ctl_handler sctp_sysctl_jiffies_ms;
|
||||
static long rto_timer_min = 1;
|
||||
static long rto_timer_max = 86400000; /* One day */
|
||||
static long sack_timer_min = 1;
|
||||
static long sack_timer_max = 500;
|
||||
|
||||
static ctl_table sctp_table[] = {
|
||||
{
|
||||
@ -187,6 +189,17 @@ static ctl_table sctp_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_SCTP_SACK_TIMEOUT,
|
||||
.procname = "sack_timeout",
|
||||
.data = &sctp_sack_timeout,
|
||||
.maxlen = sizeof(long),
|
||||
.mode = 0644,
|
||||
.proc_handler = &proc_doulongvec_ms_jiffies_minmax,
|
||||
.strategy = &sctp_sysctl_jiffies_ms,
|
||||
.extra1 = &sack_timer_min,
|
||||
.extra2 = &sack_timer_max,
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
};
|
||||
|
||||
|
@ -103,7 +103,6 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
|
||||
|
||||
/* Set up the heartbeat timer. */
|
||||
init_timer(&peer->hb_timer);
|
||||
peer->hb_interval = SCTP_DEFAULT_TIMEOUT_HEARTBEAT;
|
||||
peer->hb_timer.function = sctp_generate_heartbeat_event;
|
||||
peer->hb_timer.data = (unsigned long)peer;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user