1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-01 12:19:28 +00:00

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)
This commit is contained in:
Lawrence Stewart 2009-07-12 09:14:28 +00:00
parent 31d22003dd
commit 962ebef8c0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=195634
3 changed files with 18 additions and 2 deletions

View File

@ -22,6 +22,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW:
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

View File

@ -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

View File

@ -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>