Subject: Re: tcp_segsize() simplification
To: None <seanb@qnx.com>
From: Jason Thorpe <thorpej@shagadelic.org>
List: tech-net
Date: 03/24/2006 19:45:41
On Mar 24, 2006, at 4:53 PM, seanb@qnx.com wrote:

>
> Hi:
>
> The following is slightly cleaner / more readable.
> No functional change.  Any objections before I commit?

Looks good to me.

>
> Regards,
>
> -seanb
>
>
> Index: netinet/tcp_output.c
> ===================================================================
> RCS file: /cvsroot/src/sys/netinet/tcp_output.c,v
> retrieving revision 1.141
> diff -c -r1.141 tcp_output.c
> *** netinet/tcp_output.c	24 Dec 2005 20:45:09 -0000	1.141
> --- netinet/tcp_output.c	15 Mar 2006 19:54:36 -0000
> ***************
> *** 248,254 ****
>   	struct rtentry *rt;
>   	struct ifnet *ifp;
>   	int size;
> ! 	int iphlen;
>   	int optlen;
>
>   #ifdef DIAGNOSTIC
> --- 248,254 ----
>   	struct rtentry *rt;
>   	struct ifnet *ifp;
>   	int size;
> ! 	int hdrlen;
>   	int optlen;
>
>   #ifdef DIAGNOSTIC
> ***************
> *** 258,269 ****
>   	switch (tp->t_family) {
>   #ifdef INET
>   	case AF_INET:
> ! 		iphlen = sizeof(struct ip);
>   		break;
>   #endif
>   #ifdef INET6
>   	case AF_INET6:
> ! 		iphlen = sizeof(struct ip6_hdr);
>   		break;
>   #endif
>   	default:
> --- 258,269 ----
>   	switch (tp->t_family) {
>   #ifdef INET
>   	case AF_INET:
> ! 		hdrlen = sizeof(struct ip) + sizeof(struct tcphdr);
>   		break;
>   #endif
>   #ifdef INET6
>   	case AF_INET6:
> ! 		hdrlen = sizeof(struct ip6_hdr) + sizeof(struct tcphdr);
>   		break;
>   #endif
>   	default:
> ***************
> *** 300,320 ****
>   			 * smaller than 1280, use 1280 as packet size and
>   			 * attach fragment header.
>   			 */
> ! 			size = IPV6_MMTU - iphlen - sizeof(struct ip6_frag) -
> ! 			    sizeof(struct tcphdr);
>   		} else
> ! 			size = rt->rt_rmx.rmx_mtu - iphlen -
> ! 			    sizeof(struct tcphdr);
>   #else
> ! 		size = rt->rt_rmx.rmx_mtu - iphlen - sizeof(struct tcphdr);
>   #endif
>   	} else if (ifp->if_flags & IFF_LOOPBACK)
> ! 		size = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
>   #ifdef INET
>   	else if (inp && tp->t_mtudisc)
> ! 		size = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
>   	else if (inp && in_localaddr(inp->inp_faddr))
> ! 		size = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
>   #endif
>   #ifdef INET6
>   	else if (in6p) {
> --- 300,318 ----
>   			 * smaller than 1280, use 1280 as packet size and
>   			 * attach fragment header.
>   			 */
> ! 			size = IPV6_MMTU - hdrlen - sizeof(struct ip6_frag);
>   		} else
> ! 			size = rt->rt_rmx.rmx_mtu - hdrlen;
>   #else
> ! 		size = rt->rt_rmx.rmx_mtu - hdrlen;
>   #endif
>   	} else if (ifp->if_flags & IFF_LOOPBACK)
> ! 		size = ifp->if_mtu - hdrlen;
>   #ifdef INET
>   	else if (inp && tp->t_mtudisc)
> ! 		size = ifp->if_mtu - hdrlen;
>   	else if (inp && in_localaddr(inp->inp_faddr))
> ! 		size = ifp->if_mtu - hdrlen;
>   #endif
>   #ifdef INET6
>   	else if (in6p) {
> ***************
> *** 324,330 ****
>   			struct in_addr d;
>   			bcopy(&in6p->in6p_faddr.s6_addr32[3], &d, sizeof(d));
>   			if (tp->t_mtudisc || in_localaddr(d))
> ! 				size = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
>   		} else
>   #endif
>   		{
> --- 322,328 ----
>   			struct in_addr d;
>   			bcopy(&in6p->in6p_faddr.s6_addr32[3], &d, sizeof(d));
>   			if (tp->t_mtudisc || in_localaddr(d))
> ! 				size = ifp->if_mtu - hdrlen;
>   		} else
>   #endif
>   		{
> ***************
> *** 333,339 ****
>   			 * or the node must use packet size <= 1280.
>   			 */
>   			size = tp->t_mtudisc ? IN6_LINKMTU(ifp) : IPV6_MMTU;
> ! 			size -= (iphlen + sizeof(struct tcphdr));
>   		}
>   	}
>   #endif
> --- 331,337 ----
>   			 * or the node must use packet size <= 1280.
>   			 */
>   			size = tp->t_mtudisc ? IN6_LINKMTU(ifp) : IPV6_MMTU;
> ! 			size -= hdrlen;
>   		}
>   	}
>   #endif

-- thorpej