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