Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Jul 2009 09:14:28 +0000 (UTC)
From:      Lawrence Stewart <lstewart@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r195634 - in head: . sys/netinet sys/sys
Message-ID:  <200907120914.n6C9ESBM077612@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: lstewart
Date: Sun Jul 12 09:14:28 2009
New Revision: 195634
URL: http://svn.freebsd.org/changeset/base/195634

Log:
  Pad the following TCP related structs to allow MFCs of upcoming features/fixes
  back to the 8 branch:
  
  tcp_var.h
  - struct sackhint
  - struct tcpcb
  - struct tcpstat
  
  The patch breaks the ABI. Bump __FreeBSD_version to 800102 accordingly. User
  space tools that rely on the size of any of these structs (e.g. sockstat) need
  to be recompiled.
  
  Reviewed by:	rpaulo, sam, andre, rwatson
  Approved by:	re & mentor (gnn)

Modified:
  head/UPDATING
  head/sys/netinet/tcp_var.h
  head/sys/sys/param.h

Modified: head/UPDATING
==============================================================================
--- head/UPDATING	Sun Jul 12 04:48:47 2009	(r195633)
+++ head/UPDATING	Sun Jul 12 09:14:28 2009	(r195634)
@@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
 	to maximize performance.  (To disable malloc debugging, run
 	ln -s aj /etc/malloc.conf.)
 
+20090712:
+	Padding has been added to struct tcpcb, sackhint and tcpstat in
+	<netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
+	maintainig the ABI. However, this change breaks the ABI, so bump
+	__FreeBSD_version to 800102. User space tools that rely on the size of
+	any of these structs (e.g. sockstat) need to be recompiled.
+
 20090630:
 	The NFS_LEGACYRPC option has been removed along with the old
 	kernel RPC implementation that this option selected. Kernel

Modified: head/sys/netinet/tcp_var.h
==============================================================================
--- head/sys/netinet/tcp_var.h	Sun Jul 12 04:48:47 2009	(r195633)
+++ head/sys/netinet/tcp_var.h	Sun Jul 12 09:14:28 2009	(r195634)
@@ -72,6 +72,9 @@ struct sackhole {
 struct sackhint {
 	struct sackhole	*nexthole;
 	int		sack_bytes_rexmit;
+
+	int		ispare;		/* explicit pad for 64bit alignment */
+	uint64_t	_pad[2];	/* 1 sacked_bytes, 1 TBD */
 };
 
 struct tcptemp {
@@ -99,6 +102,7 @@ do {								\
  */
 struct tcpcb {
 	struct	tsegqe_head t_segq;	/* segment reassembly queue */
+	void	*t_pspare[2];		/* new reassembly queue */
 	int	t_segqlen;		/* segment reassembly queue length */
 	int	t_dupacks;		/* consecutive dup acks recd */
 
@@ -190,10 +194,13 @@ struct tcpcb {
 	int	t_rttlow;		/* smallest observerved RTT */
 	u_int32_t	rfbuf_ts;	/* recv buffer autoscaling timestamp */
 	int	rfbuf_cnt;		/* recv buffer autoscaling byte count */
-	void	*t_pspare[3];		/* toe usrreqs / toepcb * / congestion algo / 1 general use */
 	struct toe_usrreqs *t_tu;	/* offload operations vector */
 	void	*t_toe;			/* TOE pcb pointer */
 	int	t_bytes_acked;		/* # bytes acked during current RTT */
+
+	int	t_ispare;		/* explicit pad for 64bit alignment */
+	void	*t_pspare2[6];		/* 2 CC / 4 TBD */
+	uint64_t _pad[12];		/* 7 UTO, 5 TBD (1-2 CC/RTT?) */
 };
 
 /*
@@ -460,6 +467,8 @@ struct	tcpstat {
 	u_long	tcps_ecn_ect1;		/* ECN Capable Transport */
 	u_long	tcps_ecn_shs;		/* ECN successful handshakes */
 	u_long	tcps_ecn_rcwnd;		/* # times ECN reduced the cwnd */
+
+	u_long	_pad[12];		/* 6 UTO, 6 TBD */
 };
 
 #ifdef _KERNEL

Modified: head/sys/sys/param.h
==============================================================================
--- head/sys/sys/param.h	Sun Jul 12 04:48:47 2009	(r195633)
+++ head/sys/sys/param.h	Sun Jul 12 09:14:28 2009	(r195634)
@@ -58,7 +58,7 @@
  *		in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 800101	/* Master, propagated to newvers */
+#define __FreeBSD_version 800102	/* Master, propagated to newvers */
 
 #ifndef LOCORE
 #include <sys/types.h>



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