Date: Mon, 20 Jul 2009 18:30:59 GMT From: Fang Wang <fangwang@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 166320 for review Message-ID: <200907201830.n6KIUx02082194@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=166320 Change 166320 by fangwang@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");
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907201830.n6KIUx02082194>