PERFORCE change 166320 for review

Fang Wang fangwang at FreeBSD.org
Mon Jul 20 18:31:00 UTC 2009


http://perforce.freebsd.org/chv.cgi?CH=166320

Change 166320 by fangwang at fangwang_utobsd on 2009/07/20 18:30:27

	Add uto packets stats for netstat -s.

Affected files ...

.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#7 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#9 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#8 edit
.. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#12 edit
.. //depot/projects/soc2009/tcputo/src/usr.bin/netstat/inet.c#2 edit

Differences ...

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#7 (text+ko) ====

@@ -1197,6 +1197,7 @@
 	if (to.to_flags & TOF_UTO) {
 		tp->uto_flags |= TCPUTO_RCVD;
 		tp->rcv_uto = to.to_uto;
+		TCPSTAT_INC(tcps_rcvuto);
 	}
 	
 	/*

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#9 (text+ko) ====

@@ -718,12 +718,14 @@
 		*  the amount of state information TCP must keep for  connections in non-synchronized states." 
 		* So even though UTO options is put in SYN segment successfully, we still transmit it.
 		*/
-		if ((flags & TH_SYN) == 0 &&
-		    tp->uto_flags & (TCPUTO_NEED | TCPUTO_SENDING) &&
+		if (tp->uto_flags & (TCPUTO_NEED | TCPUTO_SENDING) &&
 		    (to.to_flags & TOF_UTO) == 0) {
-			tp->uto_flags &= ~(TCPUTO_NEED | TCPUTO_SENDING);
-			tp->uto_flags |= TCPUTO_SENDING;
-			tp->uto_carrier = tp->snd_nxt + len;
+			if ((flags & TH_SYN) == 0) {
+				tp->uto_flags &= ~(TCPUTO_NEED | TCPUTO_SENDING);
+				tp->uto_flags |= TCPUTO_SENDING;
+				tp->uto_carrier = tp->snd_nxt + len;
+			}
+			TCPSTAT_INC(tcps_snduto);
 		}
 	}
 

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_usrreq.c#8 (text+ko) ====

@@ -1212,6 +1212,10 @@
 		ti->tcpi_snd_wscale = tp->snd_scale;
 		ti->tcpi_rcv_wscale = tp->rcv_scale;
 	}
+	if (tp->uto_flags & TCPUTO_IMPL) {
+		ti->tcpi_options |= TCPI_OPT_UTO;
+		ti->tcpi_uto = tp->t_uto_impl / hz;
+	}
 
 	ti->tcpi_rtt = ((u_int64_t)tp->t_srtt * tick) >> TCP_RTT_SHIFT;
 	ti->tcpi_rttvar = ((u_int64_t)tp->t_rttvar * tick) >> TCP_RTTVAR_SHIFT;

==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#12 (text+ko) ====

@@ -403,6 +403,7 @@
 	u_long	tcps_sndurg;		/* packets sent with URG only */
 	u_long	tcps_sndwinup;		/* window update-only packets sent */
 	u_long	tcps_sndctrl;		/* control (SYN|FIN|RST) packets sent */
+	u_long	tcps_snduto;		/* packets sent with tcp UTO option */
 
 	u_long	tcps_rcvtotal;		/* total packets received */
 	u_long	tcps_rcvpack;		/* packets received in sequence */
@@ -426,6 +427,7 @@
 	u_long	tcps_rcvackpack;	/* rcvd ack packets */
 	u_long	tcps_rcvackbyte;	/* bytes acked by rcvd acks */
 	u_long	tcps_rcvwinupd;		/* rcvd window update packets */
+	u_long	tcps_rcvuto;		/* packets received with tcp UTO option */
 	u_long	tcps_pawsdrop;		/* segments dropped due to PAWS */
 	u_long	tcps_predack;		/* times hdr predict ok for acks */
 	u_long	tcps_preddat;		/* times hdr predict ok for data pkts */

==== //depot/projects/soc2009/tcputo/src/usr.bin/netstat/inet.c#2 (text+ko) ====

@@ -607,6 +607,7 @@
 	p(tcps_sndprobe, "\t\t%lu window probe packet%s\n");
 	p(tcps_sndwinup, "\t\t%lu window update packet%s\n");
 	p(tcps_sndctrl, "\t\t%lu control packet%s\n");
+	p(tcps_snduto, "\t\t%lu tcp uto enabled packet%s\n");
 	p(tcps_rcvtotal, "\t%lu packet%s received\n");
 	p2(tcps_rcvackpack, tcps_rcvackbyte,
 	    "\t\t%lu ack%s (for %lu byte%s)\n");
@@ -623,6 +624,7 @@
 	    "\t\t%lu out-of-order packet%s (%lu byte%s)\n");
 	p2(tcps_rcvpackafterwin, tcps_rcvbyteafterwin,
 	    "\t\t%lu packet%s (%lu byte%s) of data after window\n");
+	p(tcps_rcvuto, "\t\t%lu tcp uto enabled packet%s\n");
 	p(tcps_rcvwinprobe, "\t\t%lu window probe%s\n");
 	p(tcps_rcvwinupd, "\t\t%lu window update packet%s\n");
 	p(tcps_rcvafterclose, "\t\t%lu packet%s received after close\n");


More information about the p4-projects mailing list