Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Jul 2011 21:15:21 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r224151 - in head/sys: net netinet
Message-ID:  <201107172115.p6HLFLxq090534@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bz
Date: Sun Jul 17 21:15:20 2011
New Revision: 224151
URL: http://svn.freebsd.org/changeset/base/224151

Log:
  Add spares to the network stack for FreeBSD-9:
  - TCP keep* timers
  - TCP UTO (adjust from what was there already)
  - netmap
  - route caching
  - user cookie (temporary to allow for the real fix)
  
  Slightly re-shuffle struct ifnet moving fields out of the middle
  of spares and to better align.
  
  Discussed with:	rwatson (slightly earlier version)

Modified:
  head/sys/net/if_var.h
  head/sys/net/radix.h
  head/sys/netinet/in_pcb.h
  head/sys/netinet/tcp_syncache.h
  head/sys/netinet/tcp_var.h

Modified: head/sys/net/if_var.h
==============================================================================
--- head/sys/net/if_var.h	Sun Jul 17 21:08:16 2011	(r224150)
+++ head/sys/net/if_var.h	Sun Jul 17 21:15:20 2011	(r224151)
@@ -195,8 +195,9 @@ struct ifnet {
 					/* protected by if_addr_mtx */
 	void	*if_pf_kif;
 	void	*if_lagg;		/* lagg glue */
-	u_char	if_alloctype;		/* if_type at time of allocation */
+	char	*if_description;	/* interface description */
 	u_int	if_fib;			/* interface FIB */
+	u_char	if_alloctype;		/* if_type at time of allocation */
 
 	/*
 	 * Spare fields are added so that we can modify sensitive data
@@ -204,9 +205,8 @@ struct ifnet {
 	 * be used with care where binary compatibility is required.
 	 */
 	char	if_cspare[3];
-	char	*if_description;	/* interface description */
-	void	*if_pspare[7];
 	int	if_ispare[4];
+	void	*if_pspare[8];		/* 1 netmap, 7 TDB */
 };
 
 typedef void if_init_f_t(void *);

Modified: head/sys/net/radix.h
==============================================================================
--- head/sys/net/radix.h	Sun Jul 17 21:08:16 2011	(r224150)
+++ head/sys/net/radix.h	Sun Jul 17 21:15:20 2011	(r224151)
@@ -132,6 +132,7 @@ struct radix_node_head {
 		(struct radix_node *rn, struct radix_node_head *head);
 	struct	radix_node rnh_nodes[3];	/* empty tree for common case */
 	int	rnh_multipath;			/* multipath capable ? */
+	u_int	rnh_spare;			/* route caching */
 #ifdef _KERNEL
 	struct	rwlock rnh_lock;		/* locks entire radix tree */
 #endif

Modified: head/sys/netinet/in_pcb.h
==============================================================================
--- head/sys/netinet/in_pcb.h	Sun Jul 17 21:08:16 2011	(r224150)
+++ head/sys/netinet/in_pcb.h	Sun Jul 17 21:15:20 2011	(r224151)
@@ -179,8 +179,9 @@ struct inpcb {
 	u_char	inp_ip_minttl;		/* (i) minimum TTL or drop */
 	uint32_t inp_flowid;		/* (x) flow id / queue id */
 	u_int	inp_refcount;		/* (i) refcount */
-	void	*inp_pspare[4];		/* (x) rtentry / general use */
-	u_int	inp_ispare[4];		/* general use */
+	void	*inp_pspare[5];		/* (x) route caching / general use */
+	u_int	inp_ispare[6];		/* (x) route caching / user cookie /
+					 *     general use */
 
 	/* Local and foreign ports, local and foreign addr. */
 	struct	in_conninfo inp_inc;	/* (i/p) list for PCB's local port */

Modified: head/sys/netinet/tcp_syncache.h
==============================================================================
--- head/sys/netinet/tcp_syncache.h	Sun Jul 17 21:08:16 2011	(r224150)
+++ head/sys/netinet/tcp_syncache.h	Sun Jul 17 21:15:20 2011	(r224151)
@@ -81,6 +81,8 @@ struct syncache {
 #endif			
 	struct label	*sc_label;		/* MAC label reference */
 	struct ucred	*sc_cred;		/* cred cache for jail checks */
+
+	u_int32_t	sc_spare[2];		/* UTO */
 };
 
 /*

Modified: head/sys/netinet/tcp_var.h
==============================================================================
--- head/sys/netinet/tcp_var.h	Sun Jul 17 21:08:16 2011	(r224150)
+++ head/sys/netinet/tcp_var.h	Sun Jul 17 21:15:20 2011	(r224151)
@@ -203,9 +203,9 @@ struct tcpcb {
 	struct cc_var	*ccv;		/* congestion control specific vars */
 	struct osd	*osd;		/* storage for Khelp module data */
 
-	int	t_ispare;		/* explicit pad for 64bit alignment */
+	uint32_t t_ispare[12];		/* 4 keep timers, 5 UTO, 3 TBD */
 	void	*t_pspare2[4];		/* 4 TBD */
-	uint64_t _pad[12];		/* 7 UTO, 5 TBD (1-2 CC/RTT?) */
+	uint64_t _pad[6];		/* 6 TBD (1-2 CC/RTT?) */
 };
 
 /*
@@ -300,6 +300,7 @@ struct tcpopt {
 	u_int16_t	to_mss;		/* maximum segment size */
 	u_int8_t	to_wscale;	/* window scaling */
 	u_int8_t	to_nsacks;	/* number of SACK blocks */
+	u_int32_t	to_spare;	/* UTO */
 };
 
 /*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107172115.p6HLFLxq090534>