From owner-p4-projects@FreeBSD.ORG Mon Jul 20 18:30:59 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9553E1065678; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 552D01065676 for ; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4306A8FC20 for ; Mon, 20 Jul 2009 18:30:59 +0000 (UTC) (envelope-from fangwang@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KIUxS9082196 for ; Mon, 20 Jul 2009 18:30:59 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6KIUx02082194 for perforce@freebsd.org; Mon, 20 Jul 2009 18:30:59 GMT (envelope-from fangwang@FreeBSD.org) Date: Mon, 20 Jul 2009 18:30:59 GMT Message-Id: <200907201830.n6KIUx02082194@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to fangwang@FreeBSD.org using -f From: Fang Wang To: Perforce Change Reviews Cc: Subject: PERFORCE change 166320 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2009 18:31:00 -0000 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");