PERFORCE change 96015 for review
Marcel Moolenaar
marcel at FreeBSD.org
Mon Apr 24 21:28:05 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=96015
Change 96015 by marcel at marcel_nfs on 2006/04/24 21:27:06
IFC @96013
Affected files ...
.. //depot/projects/uart/alpha/conf/GENERIC#13 integrate
.. //depot/projects/uart/amd64/amd64/mp_machdep.c#13 integrate
.. //depot/projects/uart/amd64/conf/GENERIC#17 integrate
.. //depot/projects/uart/i386/conf/GENERIC#16 integrate
.. //depot/projects/uart/i386/i386/mp_machdep.c#21 integrate
.. //depot/projects/uart/kern/serdev_if.m#7 integrate
.. //depot/projects/uart/kern/uipc_usrreq.c#13 integrate
.. //depot/projects/uart/netinet/tcp_usrreq.c#13 integrate
.. //depot/projects/uart/sparc64/conf/GENERIC#18 integrate
Differences ...
==== //depot/projects/uart/alpha/conf/GENERIC#13 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.192 2006/01/10 09:19:07 phk Exp $
+# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.193 2006/04/24 08:44:33 delphij Exp $
cpu EV4
cpu EV5
@@ -70,8 +70,6 @@
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
# Debugging for use in -current
@@ -106,6 +104,8 @@
# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device isp # Qlogic family
device ispfw # Firmware module for Qlogic host adapters
device mpt # LSI-Logic MPT-Fusion
==== //depot/projects/uart/amd64/amd64/mp_machdep.c#13 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.271 2006/03/18 19:32:46 ups Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.272 2006/04/24 21:17:01 cperciva Exp $");
#include "opt_cpu.h"
#include "opt_kstack_pages.h"
@@ -385,8 +385,8 @@
* are available, use them.
*/
if (cpu_high >= 4) {
- /* Ask the processor about up to 32 caches. */
- for (i = 0; i < 32; i++) {
+ /* Ask the processor about the L1 cache. */
+ for (i = 0; i < 1; i++) {
cpuid_count(4, i, p);
threads_per_cache = ((p[0] & 0x3ffc000) >> 14) + 1;
if (hyperthreading_cpus < threads_per_cache)
==== //depot/projects/uart/amd64/conf/GENERIC#17 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.452 2006/04/10 20:04:22 ps Exp $
+# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.453 2006/04/24 08:44:33 delphij Exp $
cpu HAMMER
ident GENERIC
@@ -57,10 +57,6 @@
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
@@ -98,7 +94,11 @@
# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
+options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
==== //depot/projects/uart/i386/conf/GENERIC#16 (text+ko) ====
@@ -16,7 +16,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.441 2006/04/10 20:04:22 ps Exp $
+# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.442 2006/04/24 08:44:34 delphij Exp $
cpu I486_CPU
cpu I586_CPU
@@ -57,10 +57,6 @@
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
-options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
options STOP_NMI # Stop CPUS using NMI instead of IPI
@@ -96,7 +92,11 @@
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
+options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
==== //depot/projects/uart/i386/i386/mp_machdep.c#21 (text+ko) ====
@@ -24,7 +24,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.264 2006/03/09 16:38:52 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/mp_machdep.c,v 1.265 2006/04/24 21:17:01 cperciva Exp $");
#include "opt_apic.h"
#include "opt_cpu.h"
@@ -434,8 +434,8 @@
* are available, use them.
*/
if (cpu_high >= 4) {
- /* Ask the processor about up to 32 caches. */
- for (i = 0; i < 32; i++) {
+ /* Ask the processor about the L1 cache. */
+ for (i = 0; i < 1; i++) {
cpuid_count(4, i, p);
threads_per_cache = ((p[0] & 0x3ffc000) >> 14) + 1;
if (hyperthreading_cpus < threads_per_cache)
==== //depot/projects/uart/kern/serdev_if.m#7 (text+ko) ====
@@ -23,7 +23,7 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $FreeBSD: src/sys/kern/serdev_if.m,v 1.1 2006/03/30 18:33:22 marcel Exp $
+# $FreeBSD: src/sys/kern/serdev_if.m,v 1.2 2006/04/23 22:12:39 marcel Exp $
#
#include <sys/bus.h>
==== //depot/projects/uart/kern/uipc_usrreq.c#13 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.166 2006/04/21 09:25:39 ps Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.167 2006/04/24 19:09:33 maxim Exp $");
#include "opt_mac.h"
@@ -950,6 +950,8 @@
memcpy(&unp->unp_peercred, &unp2->unp_peercred,
sizeof(unp->unp_peercred));
unp->unp_flags |= UNP_HAVEPC;
+ if (unp2->unp_flags & UNP_WANTCRED)
+ unp3->unp_flags |= UNP_WANTCRED;
#ifdef MAC
SOCK_LOCK(so);
mac_set_socket_peer_from_socket(so, so3);
==== //depot/projects/uart/netinet/tcp_usrreq.c#13 (text+ko) ====
@@ -29,7 +29,7 @@
* SUCH DAMAGE.
*
* From: @(#)tcp_usrreq.c 8.2 (Berkeley) 1/3/94
- * $FreeBSD: src/sys/netinet/tcp_usrreq.c,v 1.135 2006/04/03 12:43:56 rwatson Exp $
+ * $FreeBSD: src/sys/netinet/tcp_usrreq.c,v 1.136 2006/04/24 08:20:02 rwatson Exp $
*/
#include "opt_inet.h"
@@ -139,46 +139,27 @@
}
/*
- * pru_detach() detaches the TCP protocol from the socket.
- * If the protocol state is non-embryonic, then can't
- * do this directly: have to initiate a pru_disconnect(),
- * which may finish later; embryonic TCB's can just
- * be discarded here.
+ * tcp_detach() releases any protocol state that can be reasonably released
+ * when a socket shutdown is requested, and is a shared code path for
+ * tcp_usr_detach() and tcp_usr_abort(), the two socket close entry points.
+ *
+ * Accepts pcbinfo, inpcb locked, will unlock the inpcb (if needed) on
+ * return.
*/
static void
-tcp_usr_detach(struct socket *so)
+tcp_detach(struct socket *so, struct inpcb *inp)
{
- struct inpcb *inp;
struct tcpcb *tp;
#ifdef INET6
int isipv6 = INP_CHECK_SOCKAF(so, AF_INET6) != 0;
#endif
- TCPDEBUG0;
- inp = sotoinpcb(so);
- KASSERT(inp != NULL, ("tcp_usr_detach: inp == NULL"));
- INP_INFO_WLOCK(&tcbinfo);
- INP_LOCK(inp);
- KASSERT(inp->inp_socket != NULL,
- ("tcp_usr_detach: inp_socket == NULL"));
- TCPDEBUG1();
+ INP_INFO_WLOCK_ASSERT(&tcbinfo);
+ INP_LOCK_ASSERT(inp);
- /*
- * First, if we still have full TCP state, and we're not dropped,
- * initiate a disconnect.
- */
- if (!(inp->inp_vflag & INP_TIMEWAIT) &&
- !(inp->inp_vflag & INP_DROPPED)) {
- tp = intotcpcb(inp);
- tcp_disconnect(tp);
- }
+ KASSERT(so->so_pcb == inp, ("tcp_detach: so_pcb != inp"));
+ KASSERT(inp->inp_socket == so, ("tcp_detach: inp_socket != so"));
- /*
- * Second, release any protocol state that we can reasonably release.
- * Note that the call to tcp_disconnect() may actually have changed
- * the TCP state, so we have to re-evaluate INP_TIMEWAIT and
- * INP_DROPPED.
- */
if (inp->inp_vflag & INP_TIMEWAIT) {
if (inp->inp_vflag & INP_DROPPED) {
/*
@@ -248,6 +229,40 @@
INP_UNLOCK(inp);
}
}
+}
+
+/*
+ * pru_detach() detaches the TCP protocol from the socket.
+ * If the protocol state is non-embryonic, then can't
+ * do this directly: have to initiate a pru_disconnect(),
+ * which may finish later; embryonic TCB's can just
+ * be discarded here.
+ */
+static void
+tcp_usr_detach(struct socket *so)
+{
+ struct inpcb *inp;
+ struct tcpcb *tp;
+ TCPDEBUG0;
+
+ inp = sotoinpcb(so);
+ KASSERT(inp != NULL, ("tcp_usr_detach: inp == NULL"));
+ INP_INFO_WLOCK(&tcbinfo);
+ INP_LOCK(inp);
+ KASSERT(inp->inp_socket != NULL,
+ ("tcp_usr_detach: inp_socket == NULL"));
+ TCPDEBUG1();
+
+ /*
+ * First, if we still have full TCP state, and we're not dropped,
+ * initiate a disconnect.
+ */
+ if (!(inp->inp_vflag & INP_TIMEWAIT) &&
+ !(inp->inp_vflag & INP_DROPPED)) {
+ tp = intotcpcb(inp);
+ tcp_disconnect(tp);
+ }
+ tcp_detach(so, inp);
tp = NULL;
TCPDEBUG2(PRU_DETACH);
INP_INFO_WUNLOCK(&tcbinfo);
@@ -916,41 +931,38 @@
/*
* Abort the TCP.
+ *
+ * First, drop the connection. Then collect state if possible.
*/
static void
tcp_usr_abort(struct socket *so)
{
-#if 0
struct inpcb *inp;
struct tcpcb *tp;
-#endif
+ TCPDEBUG0;
- /*
- * XXXRW: This is not really quite the same, as we want to tcp_drop()
- * rather than tcp_disconnect(), I think, but for now I'll avoid
- * replicating all the tear-down logic here.
- */
- tcp_usr_detach(so);
+ inp = sotoinpcb(so);
+ KASSERT(inp != NULL, ("tcp_usr_abort: inp == NULL"));
-#if 0
- TCPDEBUG0;
INP_INFO_WLOCK(&tcbinfo);
- inp = sotoinpcb(so);
INP_LOCK(inp);
+ KASSERT(inp->inp_socket != NULL,
+ ("tcp_usr_abort: inp_socket == NULL"));
+ TCPDEBUG1();
+
/*
- * Do we need to handle timewait here? Aborted connections should
- * never generate a FIN?
+ * First, if we still have full TCP state, and we're not dropped,
+ * drop.
*/
- KASSERT((inp->inp_vflag & INP_TIMEWAIT) == 0,
- ("tcp_usr_abort: timewait"));
- tp = intotcpcb(inp);
- TCPDEBUG1();
- tp = tcp_drop(tp, ECONNABORTED);
- TCPDEBUG2(PRU_ABORT);
- if (tp != NULL)
- INP_UNLOCK(inp);
+ if (!(inp->inp_vflag & INP_TIMEWAIT) &&
+ !(inp->inp_vflag & INP_DROPPED)) {
+ tp = intotcpcb(inp);
+ tcp_drop(tp, ECONNABORTED);
+ }
+ tcp_detach(so, inp);
+ tp = NULL;
+ TCPDEBUG2(PRU_DETACH);
INP_INFO_WUNLOCK(&tcbinfo);
-#endif
}
/*
==== //depot/projects/uart/sparc64/conf/GENERIC#18 (text+ko) ====
@@ -18,7 +18,7 @@
#
# For hardware specific information check HARDWARE.TXT
#
-# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.106 2006/03/30 18:40:25 marcel Exp $
+# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.107 2006/04/24 08:44:34 delphij Exp $
cpu SUN4U
ident GENERIC
@@ -58,8 +58,6 @@
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
-options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
- # output. Adds ~128k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
# Debugging for use in -current
@@ -97,6 +95,8 @@
# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
+options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
+ # output. Adds ~128k to driver.
device isp # Qlogic family
device ispfw # Firmware module for Qlogic host adapters
#device mpt # LSI-Logic MPT-Fusion (not yet)
More information about the p4-projects
mailing list