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>