From owner-p4-projects@FreeBSD.ORG Mon Jun 8 11:41:40 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 526C7106567A; Mon, 8 Jun 2009 11:41:40 +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 0D0511065673 for ; Mon, 8 Jun 2009 11:41:40 +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 EF74A8FC20 for ; Mon, 8 Jun 2009 11:41:39 +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 n58BfdiA018072 for ; Mon, 8 Jun 2009 11:41:39 GMT (envelope-from fangwang@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n58BfdLv018070 for perforce@freebsd.org; Mon, 8 Jun 2009 11:41:39 GMT (envelope-from fangwang@FreeBSD.org) Date: Mon, 8 Jun 2009 11:41:39 GMT Message-Id: <200906081141.n58BfdLv018070@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 163774 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, 08 Jun 2009 11:41:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=163774 Change 163774 by fangwang@fangwang_utobsd on 2009/06/08 11:40:57 Fix style. Remove bitfields, use bit operations instead. Affected files ... .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp.h#4 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#5 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_subr.c#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.c#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.h#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#3 edit .. //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#8 edit Differences ... ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp.h#4 (text+ko) ==== @@ -96,8 +96,8 @@ #define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ #define TCPOPT_SIGNATURE 19 /* Keyed MD5: RFC 2385 */ #define TCPOLEN_SIGNATURE 18 -#define TCPOPT_UTO 28 -#define TCPOLEN_UTO 4 +#define TCPOPT_UTO 28 +#define TCPOLEN_UTO 4 /* Miscellaneous constants */ #define MAX_SACK_BLKS 6 /* Max # SACK blocks stored at receiver side */ @@ -152,7 +152,7 @@ #define TCP_MD5SIG 0x10 /* use MD5 digests (RFC2385) */ #define TCP_INFO 0x20 /* retrieve tcp_info structure */ #define TCP_CONGESTION 0x40 /* get/set congestion control algorithm */ -#define TCP_UTO 0x80 /* set tcp user timeout */ +#define TCP_UTO 0x80 /* set tcp user timeout */ #define TCP_CA_NAME_MAX 16 /* max congestion control name length */ @@ -161,7 +161,7 @@ #define TCPI_OPT_WSCALE 0x04 #define TCPI_OPT_ECN 0x08 #define TCPI_OPT_TOE 0x10 -#define TCPI_OPT_UTO 0x20 +#define TCPI_OPT_UTO 0x20 /* * The TCP_INFO socket option comes from the Linux 2.6 TCP API, and permits ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_input.c#3 (text+ko) ==== @@ -1226,6 +1226,10 @@ if ((tp->t_flags & TF_SACK_PERMIT) && (to.to_flags & TOF_SACKPERM) == 0) tp->t_flags &= ~TF_SACK_PERMIT; + if (to.to_flags & TOF_UTO) { + tp->t_flags |= TF_RCVD_UTO; + tp->rcv_uto = to.to_uto; + } } /* @@ -2944,15 +2948,13 @@ TCPSTAT_INC(tcps_sack_rcv_blocks); break; case TCPOPT_UTO: - unsigned short uto_load; if (optlen != TCPOLEN_UTO) continue; to->to_flags |= TOF_UTO; bcopy((char *)cp + 2, - (char *)&uto_load, sizeof(uto_load)); - uto_load = ntohs(uto_load); - to->to_granularity = uto_load >> 15; - to->to_uto = uto_load - ((unsigned short)to->to_granularity << 15)); + (char *)&to->to_uto, sizeof(uto_load)); + to->to_uto = ntohs(to->to_uto); + break; default: continue; } ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_output.c#5 (text+ko) ==== @@ -1446,15 +1446,14 @@ } case TOF_UTO: { - unsigned short uto_load = (unsigned short)to->to_granularity << 15; - uto_load += to->to_uto; if (TCP_MAXOLEN - optlen < TCPOLEN_UTO) continue; *optp++ = TCPOPT_UTO; *optp++ = TCPOLEN_UTO; optlen += TCPOLEN_UTO; - bcopy((u_char *)&uto_load, optp, sizeof(uto_load)); - optp += sizeof(uto_load); + bcopy((u_char *)&to->to_uto, optp, sizeof(to->to_uto)); + optp += sizeof(to->to_uto); + break; } default: panic("%s: unknown TCP option type", __func__); ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_subr.c#3 (text+ko) ==== @@ -745,9 +745,7 @@ * but we make it available if a UTO request received or set it through * setsockopt system call. */ - tp->uto_impl = 0; - tp->uto_changeable = 1; - tp->uto_enable = 1; + tp->uto_flag = UTO_ENABLE | UTO_CHANGEABLE /* * IPv4 TTL initialization is necessary for an IPv6 socket as well, * because the socket may be bound to an IPv6 wildcard address, ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.c#3 (text+ko) ==== @@ -774,7 +774,6 @@ tp->t_flags |= TF_SACK_PERMIT; if (sc->sc_flags & SCF_UTO) { tp->t_flags |= TF_RCVD_UTO; - tp->rcv_uto_granularity = sc->sc_granularity; tp->rcv_uto = sc->sc_uto; } } @@ -1215,7 +1214,6 @@ if ((th->th_flags & (TH_ECE|TH_CWR)) && V_tcp_do_ecn) sc->sc_flags |= SCF_ECN; if (to->to_flags & TOF_UTO) { - sc->sc_granularity = to->to_granularity; sc->sc_uto = to->to_uto; sc->sc_flags |= SCF_UTO; } @@ -1387,7 +1385,6 @@ to.to_flags |= TOF_SIGNATURE; #endif if (sc->sc_flags & SCF_UTO) { - to.to_granularity = sc->sc_granularity; to.to_uto = sc->sc_uto; to.to_flags |= TOF_UTO; } ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_syncache.h#3 (text+ko) ==== @@ -69,8 +69,7 @@ u_int8_t sc_ip_tos; /* IPv4 TOS */ u_int8_t sc_requested_s_scale:4, sc_requested_r_scale:4; - u_int16_t sc_granularity:1, /* user timeout granularity */ - sc_uto:15; /* user timeout, UTO */ + u_int16_t sc_uto; /* user timeout */ u_int16_t sc_flags; #ifndef TCP_OFFLOAD_DISABLE struct toe_usrreqs *sc_tu; /* TOE operations */ @@ -93,7 +92,7 @@ #define SCF_SIGNATURE 0x20 /* send MD5 digests */ #define SCF_SACK 0x80 /* send SACK option */ #define SCF_ECN 0x100 /* send ECN setup packet */ -#define SCF_UTO 0x200 /* send UTO option */ +#define SCF_UTO 0x200 /* send UTO option */ #define SYNCOOKIE_SECRET_SIZE 8 /* dwords */ #define SYNCOOKIE_LIFETIME 16 /* seconds */ ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_timer.h#3 (text+ko) ==== @@ -91,8 +91,8 @@ #define TCPTV_FINWAIT2_TIMEOUT (60*hz) /* FIN_WAIT_2 timeout if no receiver */ -#define TCPTV_UTOMIN (120*hz) /* min user timeout */ -#define TCPTV_UTOMAX (720*hz) /* max user timeout */ +#define TCPTV_UTOMIN (120*hz) /* min user timeout */ +#define TCPTV_UTOMAX (720*hz) /* max user timeout */ /* * Minimum retransmit timer is 3 ticks, for algorithmic stability. ==== //depot/projects/soc2009/tcputo/src/sys/netinet/tcp_var.h#8 (text+ko) ==== @@ -192,13 +192,12 @@ int t_bytes_acked; /* # bytes acked during current RTT */ /* user timeout variables (RFC 5482) */ - u_int rcv_uto; /* received user timeout value, in seconds */ - u_int snd_uto; /* send user timeout value, in seconds */ - u_char rcv_uto_granularity:1; /* received user timeout granularity */ - u_char snd_uto_granularity:1; /* received user timeout granularity */ - u_char uto_enable:1; /* flag controls whether the UTO option is enabled */ - u_char uto_changeable:1; /* flag that controls whether USER_TIMEOUT may be changed based on rcv_uto */ - u_char uto_impl:1; /* flag that controls whether implement user timeout */ + uint16_t rcv_uto; /* received user timeout */ + uint16_t snd_uto; /* send user timeout */ + uint8_t uto_flag; +#define UTO_ENABLE 0x01 +#define UTO_CHANGEABLE 0x02 +#define UTO_IMPL 0x04 u_int t_impl_uto; /* implemented user timeout */ }; @@ -231,8 +230,8 @@ #define TF_ECN_PERMIT 0x4000000 /* connection ECN-ready */ #define TF_ECN_SND_CWR 0x8000000 /* ECN CWR in queue */ #define TF_ECN_SND_ECE 0x10000000 /* ECN ECE in queue */ -#define TF_RCVD_UTO 0x20000000 /* a user timeout was received */ -#define TF_NEEDUTO 0x40000000 /* send user timeout */ +#define TF_RCVD_UTO 0x20000000 /* a user timeout was received */ +#define TF_NEEDUTO 0x40000000 /* send user timeout */ #define IN_FASTRECOVERY(tp) (tp->t_flags & TF_FASTRECOVERY) #define ENTER_FASTRECOVERY(tp) tp->t_flags |= TF_FASTRECOVERY @@ -275,7 +274,7 @@ #define TOF_TS 0x0010 /* timestamp */ #define TOF_SIGNATURE 0x0040 /* TCP-MD5 signature option (RFC2385) */ #define TOF_SACK 0x0080 /* Peer sent SACK option */ -#define TOF_UTO 0x0100 /* user timeout (RFC5482) */ +#define TOF_UTO 0x0100 /* user timeout (RFC5482) */ #define TOF_MAXOPT 0x0200 u_int32_t to_tsval; /* new timestamp */ u_int32_t to_tsecr; /* reflected timestamp */ @@ -284,8 +283,7 @@ u_int8_t to_nsacks; /* number of SACK blocks */ u_char *to_sacks; /* pointer to the first SACK blocks */ u_char *to_signature; /* pointer to the TCP-MD5 signature */ - u_int16_t to_granularity:1,/* user timeout granularity */ - to_uto:15; /* user timeout */ + u_int16_t to_uto; /* user timeout */ }; /*