Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Apr 2018 19:44:41 +0000 (UTC)
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r332212 - stable/11/sys/netinet
Message-ID:  <201804071944.w37JifIa067245@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tuexen
Date: Sat Apr  7 19:44:41 2018
New Revision: 332212
URL: https://svnweb.freebsd.org/changeset/base/332212

Log:
  MFC r324615:
  
  Code cleanup, not functional change.
  
  This avoids taking a pointer of a packed structure which allows simpler
  compilation of the userland stack.

Modified:
  stable/11/sys/netinet/sctp_constants.h
  stable/11/sys/netinet/sctp_indata.c
  stable/11/sys/netinet/sctp_input.c
  stable/11/sys/netinet/sctp_output.c
  stable/11/sys/netinet/sctputil.c
  stable/11/sys/netinet/sctputil.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/netinet/sctp_constants.h
==============================================================================
--- stable/11/sys/netinet/sctp_constants.h	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctp_constants.h	Sat Apr  7 19:44:41 2018	(r332212)
@@ -97,10 +97,6 @@ __FBSDID("$FreeBSD$");
  */
 #define SCTP_DEFAULT_VRF_SIZE 4
 
-/* constants for rto calc */
-#define sctp_align_safe_nocopy 0
-#define sctp_align_unsafe_makecopy 1
-
 /* JRS - Values defined for the HTCP algorithm */
 #define ALPHA_BASE	(1<<7)	/* 1.0 with shift << 7 */
 #define BETA_MIN	(1<<6)	/* 0.5 with shift << 7 */

Modified: stable/11/sys/netinet/sctp_indata.c
==============================================================================
--- stable/11/sys/netinet/sctp_indata.c	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctp_indata.c	Sat Apr  7 19:44:41 2018	(r332212)
@@ -3058,7 +3058,6 @@ sctp_process_segment_range(struct sctp_tcb *stcb, stru
 									    &stcb->asoc,
 									    tp1->whoTo,
 									    &tp1->sent_rcv_time,
-									    sctp_align_safe_nocopy,
 									    SCTP_RTT_FROM_DATA);
 									*rto_ok = 0;
 								}
@@ -4030,7 +4029,6 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32
 								    sctp_calculate_rto(stcb,
 								    asoc, tp1->whoTo,
 								    &tp1->sent_rcv_time,
-								    sctp_align_safe_nocopy,
 								    SCTP_RTT_FROM_DATA);
 								rto_ok = 0;
 							}
@@ -4636,7 +4634,6 @@ hopeless_peer:
 								    sctp_calculate_rto(stcb,
 								    asoc, tp1->whoTo,
 								    &tp1->sent_rcv_time,
-								    sctp_align_safe_nocopy,
 								    SCTP_RTT_FROM_DATA);
 								rto_ok = 0;
 							}

Modified: stable/11/sys/netinet/sctp_input.c
==============================================================================
--- stable/11/sys/netinet/sctp_input.c	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctp_input.c	Sat Apr  7 19:44:41 2018	(r332212)
@@ -519,7 +519,7 @@ sctp_process_init_ack(struct mbuf *m, int iphlen, int 
 	    asoc->primary_destination, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3);
 
 	/* calculate the RTO */
-	net->RTO = sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered, sctp_align_safe_nocopy,
+	net->RTO = sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered,
 	    SCTP_RTT_FROM_NON_DATA);
 	retval = sctp_send_cookie_echo(m, offset, stcb, net);
 	if (retval < 0) {
@@ -641,7 +641,7 @@ sctp_handle_heartbeat_ack(struct sctp_heartbeat_chunk 
 	tv.tv_sec = cp->heartbeat.hb_info.time_value_1;
 	tv.tv_usec = cp->heartbeat.hb_info.time_value_2;
 	/* Now lets do a RTO with this */
-	r_net->RTO = sctp_calculate_rto(stcb, &stcb->asoc, r_net, &tv, sctp_align_safe_nocopy,
+	r_net->RTO = sctp_calculate_rto(stcb, &stcb->asoc, r_net, &tv,
 	    SCTP_RTT_FROM_NON_DATA);
 	if (!(r_net->dest_state & SCTP_ADDR_REACHABLE)) {
 		r_net->dest_state |= SCTP_ADDR_REACHABLE;
@@ -1489,6 +1489,7 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
 	struct sctp_init_ack_chunk *initack_cp, initack_buf;
 	struct sctp_nets *net;
 	struct mbuf *op_err;
+	struct timeval old;
 	int init_offset, initack_offset, i;
 	int retval;
 	int spec_flag = 0;
@@ -1650,10 +1651,11 @@ sctp_process_cookie_existing(struct mbuf *m, int iphle
 			 * since we did not send a HB make sure we don't
 			 * double things
 			 */
+			old.tv_sec = cookie->time_entered.tv_sec;
+			old.tv_usec = cookie->time_entered.tv_usec;
 			net->hb_responded = 1;
 			net->RTO = sctp_calculate_rto(stcb, asoc, net,
-			    &cookie->time_entered,
-			    sctp_align_unsafe_makecopy,
+			    &old,
 			    SCTP_RTT_FROM_NON_DATA);
 
 			if (stcb->asoc.sctp_autoclose_ticks &&
@@ -2370,10 +2372,13 @@ sctp_process_cookie_new(struct mbuf *m, int iphlen, in
 	}
 	(void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered);
 	if ((netp != NULL) && (*netp != NULL)) {
+		struct timeval old;
+
 		/* calculate the RTT and set the encaps port */
+		old.tv_sec = cookie->time_entered.tv_sec;
+		old.tv_usec = cookie->time_entered.tv_usec;
 		(*netp)->RTO = sctp_calculate_rto(stcb, asoc, *netp,
-		    &cookie->time_entered, sctp_align_unsafe_makecopy,
-		    SCTP_RTT_FROM_NON_DATA);
+		    &old, SCTP_RTT_FROM_NON_DATA);
 	}
 	/* respond with a COOKIE-ACK */
 	sctp_send_cookie_ack(stcb);
@@ -2939,7 +2944,7 @@ sctp_handle_cookie_ack(struct sctp_cookie_ack_chunk *c
 		SCTP_STAT_INCR_GAUGE32(sctps_currestab);
 		if (asoc->overall_error_count == 0) {
 			net->RTO = sctp_calculate_rto(stcb, asoc, net,
-			    &asoc->time_entered, sctp_align_safe_nocopy,
+			    &asoc->time_entered,
 			    SCTP_RTT_FROM_NON_DATA);
 		}
 		(void)SCTP_GETTIME_TIMEVAL(&asoc->time_entered);

Modified: stable/11/sys/netinet/sctp_output.c
==============================================================================
--- stable/11/sys/netinet/sctp_output.c	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctp_output.c	Sat Apr  7 19:44:41 2018	(r332212)
@@ -5501,6 +5501,7 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct 
 	struct sctp_paramhdr *ph;
 	union sctp_sockstore *over_addr;
 	struct sctp_scoping scp;
+	struct timeval now;
 #ifdef INET
 	struct sockaddr_in *dst4 = (struct sockaddr_in *)dst;
 	struct sockaddr_in *src4 = (struct sockaddr_in *)src;
@@ -5601,7 +5602,9 @@ do_a_abort:
 	memset(&stc, 0, sizeof(struct sctp_state_cookie));
 
 	/* the time I built cookie */
-	(void)SCTP_GETTIME_TIMEVAL(&stc.time_entered);
+	(void)SCTP_GETTIME_TIMEVAL(&now);
+	stc.time_entered.tv_sec = now.tv_sec;
+	stc.time_entered.tv_usec = now.tv_usec;
 
 	/* populate any tie tags */
 	if (asoc != NULL) {

Modified: stable/11/sys/netinet/sctputil.c
==============================================================================
--- stable/11/sys/netinet/sctputil.c	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctputil.c	Sat Apr  7 19:44:41 2018	(r332212)
@@ -2422,8 +2422,8 @@ uint32_t
 sctp_calculate_rto(struct sctp_tcb *stcb,
     struct sctp_association *asoc,
     struct sctp_nets *net,
-    struct timeval *told,
-    int safe, int rtt_from_sack)
+    struct timeval *old,
+    int rtt_from_sack)
 {
 	/*-
 	 * given an association and the starting time of the current RTT
@@ -2432,19 +2432,8 @@ sctp_calculate_rto(struct sctp_tcb *stcb,
 	int32_t rtt;		/* RTT in ms */
 	uint32_t new_rto;
 	int first_measure = 0;
-	struct timeval now, then, *old;
+	struct timeval now;
 
-	/* Copy it out for sparc64 */
-	if (safe == sctp_align_unsafe_makecopy) {
-		old = &then;
-		memcpy(&then, told, sizeof(struct timeval));
-	} else if (safe == sctp_align_safe_nocopy) {
-		old = told;
-	} else {
-		/* error */
-		SCTP_PRINTF("Huh, bad rto calc call\n");
-		return (0);
-	}
 	/************************/
 	/* 1. calculate new RTT */
 	/************************/

Modified: stable/11/sys/netinet/sctputil.h
==============================================================================
--- stable/11/sys/netinet/sctputil.h	Sat Apr  7 19:42:53 2018	(r332211)
+++ stable/11/sys/netinet/sctputil.h	Sat Apr  7 19:44:41 2018	(r332212)
@@ -135,7 +135,7 @@ void
 
 uint32_t
 sctp_calculate_rto(struct sctp_tcb *, struct sctp_association *,
-    struct sctp_nets *, struct timeval *, int, int);
+    struct sctp_nets *, struct timeval *, int);
 
 uint32_t sctp_calculate_len(struct mbuf *);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804071944.w37JifIa067245>