Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8116ffad authored by Vlad Yasevich's avatar Vlad Yasevich Committed by Sridhar Samudrala
Browse files

[SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs.



Change all the structure members that hold jiffies to be of type
unsigned long.  This also corrects bad sysctl formating on 64 bit
architectures.

Signed-off-by: default avatarVlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
parent 38b0e42a
Loading
Loading
Loading
Loading
+41 −37
Original line number Diff line number Diff line
@@ -127,9 +127,9 @@ extern struct sctp_globals {
	 * RTO.Alpha		    - 1/8  (3 when converted to right shifts.)
	 * RTO.Beta		    - 1/4  (2 when converted to right shifts.)
	 */
	__u32 rto_initial;
	__u32 rto_min;
	__u32 rto_max;
	unsigned long rto_initial;
	unsigned long rto_min;
	unsigned long rto_max;

	/* Note: rto_alpha and rto_beta are really defined as inverse
	 * powers of two to facilitate integer operations.
@@ -140,12 +140,18 @@ extern struct sctp_globals {
	/* Max.Burst		    - 4 */
	int max_burst;

	/* Valid.Cookie.Life	    - 60  seconds  */
	int valid_cookie_life;

	/* Whether Cookie Preservative is enabled(1) or not(0) */
	int cookie_preserve_enable;

	/* Valid.Cookie.Life	    - 60  seconds  */
	unsigned long valid_cookie_life;

	/* Delayed SACK timeout  200ms default*/
	unsigned long sack_timeout;

	/* HB.interval		    - 30 seconds  */
	unsigned long hb_interval;

	/* Association.Max.Retrans  - 10 attempts
	 * Path.Max.Retrans	    - 5	 attempts (per destination address)
	 * Max.Init.Retransmits	    - 8	 attempts
@@ -168,12 +174,6 @@ extern struct sctp_globals {
	 */
	int rcvbuf_policy;

	/* Delayed SACK timeout  200ms default*/
	int sack_timeout;

	/* HB.interval		    - 30 seconds  */
	int hb_interval;

	/* The following variables are implementation specific.	 */

	/* Default initialization values to be applied to new associations. */
@@ -828,7 +828,7 @@ struct sctp_transport {
	__u32 rtt;		/* This is the most recent RTT.	 */

	/* RTO	       : The current retransmission timeout value.  */
	__u32 rto;
	unsigned long rto;

	/* RTTVAR      : The current RTT variation.  */
	__u32 rttvar;
@@ -878,22 +878,10 @@ struct sctp_transport {
	/* Heartbeat interval: The endpoint sends out a Heartbeat chunk to
	 * the destination address every heartbeat interval.
	 */
	__u32 hbinterval;

	/* This is the max_retrans value for the transport and will
	 * be initialized from the assocs value.  This can be changed
	 * using SCTP_SET_PEER_ADDR_PARAMS socket option.
	 */
	__u16 pathmaxrxt;

	/* PMTU	      : The current known path MTU.  */
	__u32 pathmtu;
	unsigned long hbinterval;

	/* SACK delay timeout */
	__u32 sackdelay;

	/* Flags controling Heartbeat, SACK delay, and Path MTU Discovery. */
	__u32 param_flags;
	unsigned long sackdelay;

	/* When was the last time (in jiffies) that we heard from this
	 * transport?  We use this to pick new active and retran paths.
@@ -905,6 +893,18 @@ struct sctp_transport {
	 */
	unsigned long last_time_ecne_reduced;

	/* This is the max_retrans value for the transport and will
	 * be initialized from the assocs value.  This can be changed
	 * using SCTP_SET_PEER_ADDR_PARAMS socket option.
	 */
	__u16 pathmaxrxt;

	/* PMTU	      : The current known path MTU.  */
	__u32 pathmtu;

	/* Flags controling Heartbeat, SACK delay, and Path MTU Discovery. */
	__u32 param_flags;

	/* The number of times INIT has been sent on this transport. */
	int init_sent_count;

@@ -1500,9 +1500,9 @@ struct sctp_association {
	 * These values will be initialized by system defaults, but can
	 * be modified via the SCTP_RTOINFO socket option.
	 */
	__u32 rto_initial;
	__u32 rto_max;
	__u32 rto_min;
	unsigned long rto_initial;
	unsigned long rto_max;
	unsigned long rto_min;

	/* Maximum number of new data packets that can be sent in a burst.  */
	int max_burst;
@@ -1520,13 +1520,13 @@ struct sctp_association {
	__u16 init_retries;

	/* The largest timeout or RTO value to use in attempting an INIT */
	__u16 max_init_timeo;
	unsigned long max_init_timeo;

	/* Heartbeat interval: The endpoint sends out a Heartbeat chunk to
	 * the destination address every heartbeat interval. This value
	 * will be inherited by all new transports.
	 */
	__u32 hbinterval;
	unsigned long hbinterval;

	/* This is the max_retrans value for new transports in the
	 * association.
@@ -1538,13 +1538,14 @@ struct sctp_association {
	 */
	__u32 pathmtu;

	/* SACK delay timeout */
	__u32 sackdelay;

	/* Flags controling Heartbeat, SACK delay, and Path MTU Discovery. */
	__u32 param_flags;

	int timeouts[SCTP_NUM_TIMEOUT_TYPES];
	/* SACK delay timeout */
	unsigned long sackdelay;


	unsigned long timeouts[SCTP_NUM_TIMEOUT_TYPES];
	struct timer_list timers[SCTP_NUM_TIMEOUT_TYPES];

	/* Transport to which SHUTDOWN chunk was last sent.  */
@@ -1649,7 +1650,10 @@ struct sctp_association {
	/* How many duplicated TSNs have we seen?  */
	int numduptsns;

	/* Number of seconds of idle time before an association is closed.  */
	/* Number of seconds of idle time before an association is closed.
	 * In the association context, this is really used as a boolean
	 * since the real timeout is stored in the timeouts array
	 */
	__u32 autoclose;

	/* These are to support
+2 −2
Original line number Diff line number Diff line
@@ -1300,7 +1300,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
					"T1 INIT Timeout adjustment"
					" init_err_counter: %d"
					" cycle: %d"
					" timeout: %d\n",
					" timeout: %ld\n",
					asoc->init_err_counter,
					asoc->init_cycle,
					asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_INIT]);
@@ -1328,7 +1328,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
			SCTP_DEBUG_PRINTK(
				"T1 COOKIE Timeout adjustment"
				" init_err_counter: %d"
				" timeout: %d\n",
				" timeout: %ld\n",
				asoc->init_err_counter,
				asoc->timeouts[SCTP_EVENT_TIMEOUT_T1_COOKIE]);

+1 −1
Original line number Diff line number Diff line
@@ -2995,7 +2995,7 @@ SCTP_STATIC int sctp_init_sock(struct sock *sk)
	sp->hbinterval  = jiffies_to_msecs(sctp_hb_interval);
	sp->pathmaxrxt  = sctp_max_retrans_path;
	sp->pathmtu     = 0; // allow default discovery
	sp->sackdelay   = sctp_sack_timeout;
	sp->sackdelay   = jiffies_to_msecs(sctp_sack_timeout);
	sp->param_flags = SPP_HB_ENABLE |
	                  SPP_PMTUD_ENABLE |
	                  SPP_SACKDELAY_ENABLE;
+2 −5
Original line number Diff line number Diff line
@@ -159,12 +159,9 @@ static ctl_table sctp_table[] = {
		.ctl_name	= NET_SCTP_PRESERVE_ENABLE,
		.procname	= "cookie_preserve_enable",
		.data		= &sctp_cookie_preserve_enable,
		.maxlen		= sizeof(long),
		.maxlen		= sizeof(int),
		.mode		= 0644,
		.proc_handler	= &proc_doulongvec_ms_jiffies_minmax,
		.strategy	= &sctp_sysctl_jiffies_ms,
		.extra1         = &rto_timer_min,
		.extra2         = &rto_timer_max
		.proc_handler	= &proc_dointvec
	},
	{
		.ctl_name	= NET_SCTP_RTO_ALPHA,
+1 −1
Original line number Diff line number Diff line
@@ -350,7 +350,7 @@ void sctp_transport_update_rto(struct sctp_transport *tp, __u32 rtt)
	tp->rto_pending = 0;

	SCTP_DEBUG_PRINTK("%s: transport: %p, rtt: %d, srtt: %d "
			  "rttvar: %d, rto: %d\n", __FUNCTION__,
			  "rttvar: %d, rto: %ld\n", __FUNCTION__,
			  tp, rtt, tp->srtt, tp->rttvar, tp->rto);
}