svn commit: r197236 - in head/sys: conf kern netinet

Andre Oppermann andre at freebsd.org
Tue Sep 15 22:54:38 UTC 2009


Andre Oppermann wrote:
> Author: andre
> Date: Tue Sep 15 22:23:45 2009
> New Revision: 197236
> URL: http://svn.freebsd.org/changeset/base/197236
> 
> Log:
>   -Put the optimized soreceive_stream() under a compile time option called
>   TCP_SORECEIVE_STREAM for the time being.
>   
>   Requested by:	brooks
>   
>   Once compiled in make it easily switchable for testers by using a tuneable
>    net.inet.tcp.soreceive_stream
>   and a corresponding read-only sysctl to report the current state.
>   
>   Suggested by:	rwatson
>   
>   MFC after:	2 days
>   -This line, and those below, will be ignored--

This is funny... :-)  Missed the dash.

>   > Description of fields to fill in above:                     76 columns --|
>   > PR:            If a GNATS PR is affected by the change.
>   > Submitted by:  If someone else sent in the change.
>   > Reviewed by:   If someone else reviewed your modification.
>   > Approved by:   If you needed approval for this commit.
>   > Obtained from: If the change is from a third party.
>   > MFC after:     N [day[s]|week[s]|month[s]].  Request a reminder email.
>   > Security:      Vulnerability reference (one per line) or description.
>   > Empty fields above will be automatically removed.
>   
>   M    sys/conf/options
>   M    sys/kern/uipc_socket.c
>   M    sys/netinet/tcp_subr.c
>   M    sys/netinet/tcp_usrreq.c
> 
> Modified:
>   head/sys/conf/options
>   head/sys/kern/uipc_socket.c
>   head/sys/netinet/tcp_subr.c
>   head/sys/netinet/tcp_usrreq.c
> 
> Modified: head/sys/conf/options
> ==============================================================================
> --- head/sys/conf/options	Tue Sep 15 22:09:42 2009	(r197235)
> +++ head/sys/conf/options	Tue Sep 15 22:23:45 2009	(r197236)
> @@ -416,6 +416,7 @@ SLIP_IFF_OPTS		opt_slip.h
>  TCPDEBUG
>  TCP_OFFLOAD_DISABLE	opt_inet.h #Disable code to dispatch tcp offloading
>  TCP_SIGNATURE		opt_inet.h
> +TCP_SORECEIVE_STREAM	opt_inet.h
>  VLAN_ARRAY		opt_vlan.h
>  XBONEHACK
>  FLOWTABLE		opt_route.h
> 
> Modified: head/sys/kern/uipc_socket.c
> ==============================================================================
> --- head/sys/kern/uipc_socket.c	Tue Sep 15 22:09:42 2009	(r197235)
> +++ head/sys/kern/uipc_socket.c	Tue Sep 15 22:23:45 2009	(r197236)
> @@ -1870,6 +1870,7 @@ release:
>  /*
>   * Optimized version of soreceive() for stream (TCP) sockets.
>   */
> +#ifdef TCP_SORECEIVE_STREAM
>  int
>  soreceive_stream(struct socket *so, struct sockaddr **psa, struct uio *uio,
>      struct mbuf **mp0, struct mbuf **controlp, int *flagsp)
> @@ -2062,6 +2063,7 @@ out:
>  	sbunlock(sb);
>  	return (error);
>  }
> +#endif /* TCP_SORECEIVE_STREAM */
>  
>  /*
>   * Optimized version of soreceive() for simple datagram cases from userspace.
> 
> Modified: head/sys/netinet/tcp_subr.c
> ==============================================================================
> --- head/sys/netinet/tcp_subr.c	Tue Sep 15 22:09:42 2009	(r197235)
> +++ head/sys/netinet/tcp_subr.c	Tue Sep 15 22:23:45 2009	(r197236)
> @@ -259,6 +259,12 @@ SYSCTL_VNET_INT(_net_inet_tcp_inflight, 
>      &VNET_NAME(tcp_inflight_stab), 0,
>      "Inflight Algorithm Stabilization 20 = 2 packets");
>  
> +#ifdef TCP_SORECEIVE_STREAM
> +static int	tcp_soreceive_stream = 0;
> +SYSCTL_INT(_net_inet_tcp, OID_AUTO, soreceive_stream, CTLFLAG_RDTUN,
> +    &tcp_soreceive_stream, 0, "Using soreceive_stream for TCP sockets");
> +#endif
> +
>  VNET_DEFINE(uma_zone_t, sack_hole_zone);
>  #define	V_sack_hole_zone		VNET(sack_hole_zone)
>  
> @@ -420,6 +426,14 @@ tcp_init(void)
>  	tcp_finwait2_timeout = TCPTV_FINWAIT2_TIMEOUT;
>  	tcp_tcbhashsize = hashsize;
>  
> +#ifdef TCP_SORECEIVE_STREAM
> +	TUNABLE_INT_FETCH("net.inet.tcp.soreceive_stream", &tcp_soreceive_stream);
> +	if (tcp_soreceive_stream) {
> +		tcp_usrreqs.pru_soreceive = soreceive_stream;
> +		tcp6_usrreqs.pru_soreceive = soreceive_stream;
> +	}
> +#endif
> +
>  #ifdef INET6
>  #define TCP_MINPROTOHDR (sizeof(struct ip6_hdr) + sizeof(struct tcphdr))
>  #else /* INET6 */
> 
> Modified: head/sys/netinet/tcp_usrreq.c
> ==============================================================================
> --- head/sys/netinet/tcp_usrreq.c	Tue Sep 15 22:09:42 2009	(r197235)
> +++ head/sys/netinet/tcp_usrreq.c	Tue Sep 15 22:23:45 2009	(r197236)
> @@ -1015,9 +1015,6 @@ struct pr_usrreqs tcp_usrreqs = {
>  	.pru_send =		tcp_usr_send,
>  	.pru_shutdown =		tcp_usr_shutdown,
>  	.pru_sockaddr =		in_getsockaddr,
> -#if 0
> -	.pru_soreceive =	soreceive_stream,
> -#endif
>  	.pru_sosetlabel =	in_pcbsosetlabel,
>  	.pru_close =		tcp_usr_close,
>  };
> @@ -1039,9 +1036,6 @@ struct pr_usrreqs tcp6_usrreqs = {
>  	.pru_send =		tcp_usr_send,
>  	.pru_shutdown =		tcp_usr_shutdown,
>  	.pru_sockaddr =		in6_mapped_sockaddr,
> -#if 0
> -	.pru_soreceive =	soreceive_stream,
> -#endif
>   	.pru_sosetlabel =	in_pcbsosetlabel,
>  	.pru_close =		tcp_usr_close,
>  };
> 
> 



More information about the svn-src-head mailing list