PERFORCE change 50945 for review
Robert Watson
rwatson at FreeBSD.org
Mon Apr 12 17:12:26 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=50945
Change 50945 by rwatson at rwatson_paprika on 2004/04/12 17:12:14
Integrate netperf_socket:
sx device driver.
if_nge, if_re, if_sis have user configurable polling.
More cardbus allocation mayhem.
Mutex fix for /dev/random.
specfs Giant warning on poll() fixed.
vm_page_wire() replaced with vm_page_hold() in execve().
procstopevent() lock order fix.
Old VFS sysctls under BURN_BRIDGES.
if_omcasts also billed for broadcasts.
NFS server no longer exports negative free space.
Affected files ...
.. //depot/projects/netperf_socket/sys/conf/NOTES#13 integrate
.. //depot/projects/netperf_socket/sys/conf/files#16 integrate
.. //depot/projects/netperf_socket/sys/conf/options#9 integrate
.. //depot/projects/netperf_socket/sys/dev/acpica/acpi_thermal.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/cardbus/cardbus_cis.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/em/if_em.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/nge/if_nge.c#7 integrate
.. //depot/projects/netperf_socket/sys/dev/pccard/pccard_cis.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/pccbb/pccbb.c#5 integrate
.. //depot/projects/netperf_socket/sys/dev/random/randomdev.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/re/if_re.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/sx/cd1865.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sx.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sx.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sx_pci.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sx_util.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sx_util.h#1 branch
.. //depot/projects/netperf_socket/sys/dev/sx/sxvar.h#1 branch
.. //depot/projects/netperf_socket/sys/fs/specfs/spec_vnops.c#5 integrate
.. //depot/projects/netperf_socket/sys/i386/conf/NOTES#15 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_exec.c#7 integrate
.. //depot/projects/netperf_socket/sys/kern/kern_sig.c#7 integrate
.. //depot/projects/netperf_socket/sys/kern/subr_rman.c#2 integrate
.. //depot/projects/netperf_socket/sys/kern/vfs_subr.c#7 integrate
.. //depot/projects/netperf_socket/sys/net/if_var.h#7 integrate
.. //depot/projects/netperf_socket/sys/net/route.c#5 integrate
.. //depot/projects/netperf_socket/sys/net/rtsock.c#3 integrate
.. //depot/projects/netperf_socket/sys/nfsserver/nfs_serv.c#4 integrate
.. //depot/projects/netperf_socket/sys/pci/if_sis.c#5 integrate
.. //depot/projects/netperf_socket/sys/sys/mount.h#7 integrate
.. //depot/projects/netperf_socket/sys/sys/param.h#8 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/conf/NOTES#13 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1212 2004/04/02 18:50:56 vkashyap Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1214 2004/04/12 02:36:51 imp Exp $
#
# NOTES -- Lines that can be cut/pasted into kernel and hints configs.
#
==== //depot/projects/netperf_socket/sys/conf/files#16 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.884 2004/04/10 19:43:15 marcel Exp $
+# $FreeBSD: src/sys/conf/files,v 1.885 2004/04/11 20:01:18 imp Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -719,6 +719,10 @@
dev/stg/tmc18c30_pccard.c optional stg pccard
dev/stg/tmc18c30_pci.c optional stg pci
dev/stg/tmc18c30_isa.c optional stg isa
+dev/sx/sx.c optional sx
+dev/sx/sx_util.c optional sx
+#dev/sx/sx_isa.c optional sx isa
+dev/sx/sx_pci.c optional sx pci
dev/sym/sym_hipd.c optional sym \
dependency "$S/dev/sym/sym_{conf,defs}.h"
dev/syscons/blank/blank_saver.c optional blank_saver
==== //depot/projects/netperf_socket/sys/conf/options#9 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.439 2004/04/06 19:12:24 jhb Exp $
+# $FreeBSD: src/sys/conf/options,v 1.440 2004/04/11 20:01:18 imp Exp $
#
# On the handling of kernel options
#
@@ -430,6 +430,7 @@
NPX_DEBUG opt_debug_npx.h
NETATALKDEBUG opt_atalk.h
SI_DEBUG opt_debug_si.h
+SX_DEBUG opt_debug_sx.h
# Fb options
FB_DEBUG opt_fb.h
==== //depot/projects/netperf_socket/sys/dev/acpica/acpi_thermal.c#8 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.42 2004/04/09 18:14:32 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.43 2004/04/12 05:04:47 njl Exp $");
#include "opt_acpi.h"
#include <sys/param.h>
@@ -551,9 +551,7 @@
static void
acpi_tz_switch_cooler_off(ACPI_OBJECT *obj, void *arg)
{
- struct acpi_tz_softc *sc = (struct acpi_tz_softc *)arg;
ACPI_HANDLE cooler;
- ACPI_STATUS status;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
@@ -567,12 +565,7 @@
ACPI_DEBUG_PRINT((ACPI_DB_OBJECTS, "called to turn %s off\n",
acpi_name(cooler)));
- status = acpi_pwr_switch_consumer(cooler, ACPI_STATE_D3);
- if (ACPI_FAILURE(status)) {
- ACPI_VPRINT(sc->tz_dev, acpi_device_get_parent_softc(sc->tz_dev),
- "failed to deactivate %s - %s\n", acpi_name(cooler),
- AcpiFormatException(status));
- }
+ acpi_pwr_switch_consumer(cooler, ACPI_STATE_D3);
return_VOID;
}
==== //depot/projects/netperf_socket/sys/dev/cardbus/cardbus_cis.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus_cis.c,v 1.45 2004/03/17 17:50:29 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cardbus/cardbus_cis.c,v 1.46 2004/04/11 19:22:25 imp Exp $");
/*
* CIS Handling for the Cardbus Bus
@@ -374,6 +374,25 @@
if (reg & TPL_BAR_REG_PREFETCHABLE)
dinfo->mprefetchable |= BARBIT(bar);
#if 0
+ /*
+ * XXX: It appears from a careful reading of the spec
+ * that we're not supposed to honor this when the bridge
+ * is not on the main system bus. PCI spec doesn't appear
+ * to allow for memory ranges not listed in the bridge's
+ * decode range to be decoded. The PC Card spec seems to
+ * indicate that this should only be done on x86 based
+ * machines, which seems to imply that on non-x86 machines
+ * the adddresses can be anywhere. This further implies that
+ * since the hardware can do it on non-x86 machines, it should
+ * be able to do it on x86 machines. Therefore, we can and
+ * should ignore this hint. Furthermore, the PC Card spec
+ * recommends always allocating memory above 1MB, contradicting
+ * the other part of the PC Card spec.
+ *
+ * NetBSD ignores this bit, but it also ignores the
+ * prefetchable bit too, so that's not an indication of
+ * correctness.
+ */
if (reg & TPL_BAR_REG_BELOW1MB)
dinfo->mbelow1mb |= BARBIT(bar);
#endif
==== //depot/projects/netperf_socket/sys/dev/em/if_em.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
***************************************************************************/
-/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.38 2004/03/17 17:50:31 njl Exp $*/
+/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.39 2004/04/11 21:01:12 ru Exp $*/
#include <dev/em/if_em.h>
@@ -727,11 +727,10 @@
case SIOCSIFCAP:
IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFCAP (Set Capabilities)");
mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+ if (mask & IFCAP_POLLING)
+ ifp->if_capenable ^= IFCAP_POLLING;
if (mask & IFCAP_HWCSUM) {
- if (IFCAP_HWCSUM & ifp->if_capenable)
- ifp->if_capenable &= ~IFCAP_HWCSUM;
- else
- ifp->if_capenable |= IFCAP_HWCSUM;
+ ifp->if_capenable ^= IFCAP_HWCSUM;
if (ifp->if_flags & IFF_RUNNING)
em_init(adapter);
}
@@ -888,6 +887,10 @@
mtx_assert(&adapter->mtx, MA_OWNED);
+ if (!(ifp->if_capenable & IFCAP_POLLING)) {
+ ether_poll_deregister(ifp);
+ cmd = POLL_DEREGISTER;
+ }
if (cmd == POLL_DEREGISTER) { /* final call, enable interrupts */
em_enable_intr(adapter);
return;
@@ -945,7 +948,8 @@
return;
}
- if (ether_poll_register(em_poll, ifp)) {
+ if ((ifp->if_capenable & IFCAP_POLLING) &&
+ ether_poll_register(em_poll, ifp)) {
em_disable_intr(adapter);
em_poll_locked(ifp, 0, 1);
EM_UNLOCK(adapter);
@@ -1864,6 +1868,10 @@
ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_MTU;
#endif
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+ ifp->if_capenable |= IFCAP_POLLING;
+#endif
/*
* Specify the media types supported by this adapter and register
==== //depot/projects/netperf_socket/sys/dev/nge/if_nge.c#7 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.57 2004/04/11 18:28:14 ru Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.58 2004/04/11 19:25:56 ru Exp $");
/*
* National Semiconductor DP83820/DP83821 gigabit ethernet driver
@@ -948,6 +948,9 @@
ifp->if_snd.ifq_maxlen = NGE_TX_LIST_CNT - 1;
ifp->if_hwassist = NGE_CSUM_FEATURES;
ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_VLAN_HWTAGGING;
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+#endif
ifp->if_capenable = ifp->if_capabilities;
/*
@@ -1523,6 +1526,10 @@
{
struct nge_softc *sc = ifp->if_softc;
+ if (!(ifp->if_capenable & IFCAP_POLLING)) {
+ ether_poll_deregister(ifp);
+ cmd = POLL_DEREGISTER;
+ }
if (cmd == POLL_DEREGISTER) { /* final call, enable interrupts */
CSR_WRITE_4(sc, NGE_IER, 1);
return;
@@ -1575,7 +1582,8 @@
#ifdef DEVICE_POLLING
if (ifp->if_flags & IFF_POLLING)
return;
- if (ether_poll_register(nge_poll, ifp)) { /* ok, disable interrupts */
+ if ((ifp->if_capenable & IFCAP_POLLING) &&
+ ether_poll_register(nge_poll, ifp)) { /* ok, disable interrupts */
CSR_WRITE_4(sc, NGE_IER, 0);
nge_poll(ifp, 0, 1);
return;
@@ -2156,6 +2164,9 @@
command);
}
break;
+ case SIOCSIFCAP:
+ ifp->if_capenable = ifr->ifr_reqcap;
+ break;
default:
error = ether_ioctl(ifp, command, data);
break;
==== //depot/projects/netperf_socket/sys/dev/pccard/pccard_cis.c#2 (text+ko) ====
@@ -1,5 +1,5 @@
/* $NetBSD: pcmcia_cis.c,v 1.17 2000/02/10 09:01:52 chopps Exp $ */
-/* $FreeBSD: src/sys/dev/pccard/pccard_cis.c,v 1.27 2003/10/07 03:33:53 imp Exp $ */
+/* $FreeBSD: src/sys/dev/pccard/pccard_cis.c,v 1.28 2004/04/12 20:56:34 imp Exp $ */
/*
* Copyright (c) 1997 Marc Horowitz. All rights reserved.
@@ -60,7 +60,7 @@
#define DEVPRINTF(arg)
#endif
-#define PCCARD_CIS_SIZE 1024
+#define PCCARD_CIS_SIZE 4096
struct cis_state {
int count;
@@ -96,6 +96,7 @@
state.pf = NULL;
+ tsleep(&state, 0, "pccard", hz);
if (pccard_scan_cis(sc->dev, pccard_parse_cis_tuple,
&state) == -1)
state.card->error++;
@@ -126,9 +127,15 @@
/* allocate some memory */
+ /*
+ * Some reports from the field suggest that a 64k memory boundary
+ * helps card CIS being able to be read. Try it here and see what
+ * the results actually are. I'm not sure I understand why this
+ * would make cards work better, but it is easy enough to test.
+ */
rid = 0;
- res = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0,
- PCCARD_CIS_SIZE, RF_ACTIVE);
+ res = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, 0, ~0,
+ PCCARD_CIS_SIZE, RF_ACTIVE | rman_make_alignment_flags(64*1024));
if (res == NULL) {
device_printf(dev, "can't alloc memory to read attributes\n");
return -1;
==== //depot/projects/netperf_socket/sys/dev/pccbb/pccbb.c#5 (text+ko) ====
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.106 2004/04/06 22:50:50 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pccbb/pccbb.c,v 1.107 2004/04/12 21:04:54 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1123,7 +1123,6 @@
*/
sockevent = cbb_get(sc, CBB_SOCKET_EVENT);
if (sockevent != 0) {
- DPRINTF(("CBB EVENT 0x%x\n", sockevent));
/* ack the interrupt */
cbb_setb(sc, CBB_SOCKET_EVENT, sockevent);
@@ -1145,7 +1144,6 @@
cbb_setb(sc, CBB_SOCKET_MASK, CBB_SOCKET_MASK_CD);
sc->flags &= ~CBB_CARD_OK;
cbb_disable_func_intr(sc);
- DPRINTF(("Waking up thread\n"));
cv_signal(&sc->cv);
mtx_unlock(&sc->mtx);
}
@@ -1768,6 +1766,7 @@
{
struct resource *res = NULL;
struct cbb_softc *sc = device_get_softc(brdev);
+ int align;
int tmp;
switch (type) {
@@ -1776,8 +1775,20 @@
start = cbb_start_mem;
if (end < start)
end = start;
- flags = (flags & ~RF_ALIGNMENT_MASK) |
- rman_make_alignment_flags(CBB_MEMALIGN);
+ if (count < CBB_MEMALIGN)
+ align = CBB_MEMALIGN;
+ else
+ align = count;
+ if (align > (1 << RF_ALIGNMENT(flags)))
+ flags = (flags & ~RF_ALIGNMENT_MASK) |
+ rman_make_alignment_flags(align);
+ if (count < CBB_MEMALIGN)
+ align = CBB_MEMALIGN;
+ else
+ align = count;
+ if (align > (1 << RF_ALIGNMENT(flags)))
+ flags = (flags & ~RF_ALIGNMENT_MASK) |
+ rman_make_alignment_flags(align);
break;
case SYS_RES_IOPORT:
if (start < cbb_start_16_io)
==== //depot/projects/netperf_socket/sys/dev/random/randomdev.c#4 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/random/randomdev.c,v 1.49 2004/04/09 15:47:09 markm Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/random/randomdev.c,v 1.50 2004/04/12 09:13:24 markm Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -103,25 +103,28 @@
{
int c, error = 0;
+ mtx_lock(&random_systat.lock);
+
/* Blocking logic */
while (!random_systat.seeded && !error) {
if (flag & IO_NDELAY)
error = EWOULDBLOCK;
else
- error = tsleep(&random_systat,
+ error = msleep(&random_systat, &random_systat.lock,
PUSER | PCATCH, "block", 0);
}
/* The actual read */
if (!error) {
- mtx_lock(&random_systat.lock);
while (uio->uio_resid > 0 && !error) {
c = MIN(uio->uio_resid, PAGE_SIZE);
c = (*random_systat.read)(random_buf, c);
error = uiomove(random_buf, c, uio);
}
- mtx_unlock(&random_systat.lock);
}
+
+ mtx_unlock(&random_systat.lock);
+
return (error);
}
==== //depot/projects/netperf_socket/sys/dev/re/if_re.c#4 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.19 2004/03/17 17:50:40 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $");
/*
* RealTek 8139C+/8169/8169S/8110S PCI NIC driver
@@ -1256,6 +1256,9 @@
ifp->if_start = re_start;
ifp->if_hwassist = RE_CSUM_FEATURES;
ifp->if_capabilities |= IFCAP_HWCSUM|IFCAP_VLAN_HWTAGGING;
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+#endif
ifp->if_watchdog = re_watchdog;
ifp->if_init = re_init;
if (sc->rl_type == RL_8169)
@@ -1766,6 +1769,10 @@
struct rl_softc *sc = ifp->if_softc;
RL_LOCK(sc);
+ if (!(ifp->if_capenable & IFCAP_POLLING)) {
+ ether_poll_deregister(ifp);
+ cmd = POLL_DEREGISTER;
+ }
if (cmd == POLL_DEREGISTER) { /* final call, enable interrupts */
CSR_WRITE_2(sc, RL_IMR, RL_INTRS_CPLUS);
goto done;
@@ -1826,7 +1833,8 @@
#ifdef DEVICE_POLLING
if (ifp->if_flags & IFF_POLLING)
goto done;
- if (ether_poll_register(re_poll, ifp)) { /* ok, disable interrupts */
+ if ((ifp->if_capenable & IFCAP_POLLING) &&
+ ether_poll_register(re_poll, ifp)) { /* ok, disable interrupts */
CSR_WRITE_2(sc, RL_IMR, 0x0000);
re_poll(ifp, 0, 1);
goto done;
==== //depot/projects/netperf_socket/sys/fs/specfs/spec_vnops.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95
- * $FreeBSD: src/sys/fs/specfs/spec_vnops.c,v 1.220 2004/04/07 20:46:02 imp Exp $
+ * $FreeBSD: src/sys/fs/specfs/spec_vnops.c,v 1.221 2004/04/12 21:52:52 phk Exp $
*/
#include <sys/param.h>
@@ -382,9 +382,9 @@
("spec_poll() on un-referenced dev_t (%s)", devtoname(dev)));
cdevsw_ref(dsw);
if (!(dsw->d_flags & D_NEEDGIANT)) {
- DROP_GIANT();
+ /* XXX: not yet DROP_GIANT(); */
error = dsw->d_poll(dev, ap->a_events, ap->a_td);
- PICKUP_GIANT();
+ /* XXX: not yet PICKUP_GIANT(); */
} else
error = dsw->d_poll(dev, ap->a_events, ap->a_td);
cdevsw_rel(dsw);
==== //depot/projects/netperf_socket/sys/i386/conf/NOTES#15 (text+ko) ====
@@ -4,7 +4,7 @@
# This file contains machine dependent kernel configuration notes. For
# machine independent notes, look in /sys/conf/NOTES.
#
-# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1150 2004/04/05 19:31:18 bde Exp $
+# $FreeBSD: src/sys/i386/conf/NOTES,v 1.1151 2004/04/12 02:36:51 imp Exp $
#
#
@@ -931,6 +931,10 @@
#
#---------------------------------------------------------------------------
+# sx device is i386 (and pc98?) only at the moment.
+device sx
+options SX_DEBUG
+
#
# Set the number of PV entries per process. Increasing this can
# stop panics related to heavy use of shared memory. However, that can
==== //depot/projects/netperf_socket/sys/kern/kern_exec.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.241 2004/04/01 00:10:44 pjd Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_exec.c,v 1.242 2004/04/11 19:57:11 alc Exp $");
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -795,7 +795,7 @@
}
}
vm_page_lock_queues();
- vm_page_wire(ma[0]);
+ vm_page_hold(ma[0]);
vm_page_wakeup(ma[0]);
vm_page_unlock_queues();
VM_OBJECT_UNLOCK(object);
@@ -814,7 +814,7 @@
if (imgp->firstpage != NULL) {
pmap_qremove((vm_offset_t)imgp->image_header, 1);
vm_page_lock_queues();
- vm_page_unwire(imgp->firstpage, 1);
+ vm_page_unhold(imgp->firstpage);
vm_page_unlock_queues();
imgp->firstpage = NULL;
}
==== //depot/projects/netperf_socket/sys/kern/kern_sig.c#7 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.275 2004/04/05 21:03:35 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.276 2004/04/12 15:56:05 cperciva Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -2020,8 +2020,8 @@
PROC_LOCK(p->p_pptr);
psignal(p->p_pptr, SIGCHLD);
PROC_UNLOCK(p->p_pptr);
+ stop(p);
mtx_lock_spin(&sched_lock);
- stop(p); /* uses schedlock too eventually */
thread_suspend_one(td);
PROC_UNLOCK(p);
DROP_GIANT();
@@ -2216,8 +2216,7 @@
/*
* Put the argument process into the stopped state and notify the parent
* via wakeup. Signals are handled elsewhere. The process must not be
- * on the run queue. Must be called with the proc p locked and the scheduler
- * lock held.
+ * on the run queue. Must be called with the proc p locked.
*/
static void
stop(struct proc *p)
==== //depot/projects/netperf_socket/sys/kern/subr_rman.c#2 (text+ko) ====
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_rman.c,v 1.31 2003/06/11 00:56:57 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_rman.c,v 1.32 2004/04/12 23:02:21 imp Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -234,7 +234,7 @@
rstart += bound - (rstart & ~bmask);
} while ((rstart & amask) != 0 && rstart < end &&
rstart < s->r_end);
- rend = ulmin(s->r_end, ulmax(rstart + count, end));
+ rend = ulmin(s->r_end, ulmax(rstart + count - 1, end));
if (rstart > rend) {
DPRINTF(("adjusted start exceeds end\n"));
continue;
@@ -334,7 +334,7 @@
if ((s->r_flags & flags) != flags)
continue;
rstart = ulmax(s->r_start, start);
- rend = ulmin(s->r_end, ulmax(start + count, end));
+ rend = ulmin(s->r_end, ulmax(start + count - 1, end));
if (s->r_start >= start && s->r_end <= end
&& (s->r_end - s->r_start + 1) == count &&
(s->r_start & amask) == 0 &&
==== //depot/projects/netperf_socket/sys/kern/vfs_subr.c#7 (text+ko) ====
@@ -39,7 +39,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.489 2004/04/05 21:03:37 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_subr.c,v 1.490 2004/04/11 21:09:22 mux Exp $");
#include "opt_ddb.h"
#include "opt_mac.h"
@@ -2763,6 +2763,9 @@
xvfsp->vfc_next = NULL;
}
+/*
+ * Top level filesystem related information gathering.
+ */
static int
sysctl_vfs_conflist(SYSCTL_HANDLER_ARGS)
{
@@ -2794,9 +2797,7 @@
SYSCTL_PROC(_vfs, OID_AUTO, conflist, CTLFLAG_RD, NULL, 0, sysctl_vfs_conflist,
"S,xvfsconf", "List of all configured filesystems");
-/*
- * Top level filesystem related information gathering.
- */
+#ifndef BURN_BRIDGES
static int sysctl_ovfs_conf(SYSCTL_HANDLER_ARGS);
static int
@@ -2861,6 +2862,7 @@
}
#endif /* 1 || COMPAT_PRELITE2 */
+#endif /* !BURN_BRIDGES */
#define KINFO_VNODESLOP 10
#ifdef notyet
==== //depot/projects/netperf_socket/sys/net/if_var.h#7 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* From: @(#)if.h 8.1 (Berkeley) 6/10/93
- * $FreeBSD: src/sys/net/if_var.h,v 1.68 2004/04/11 16:35:53 rwatson Exp $
+ * $FreeBSD: src/sys/net/if_var.h,v 1.69 2004/04/12 14:59:25 ru Exp $
*/
#ifndef _NET_IF_VAR_H_
@@ -313,7 +313,7 @@
}
if (ifp != NULL) {
ifp->if_obytes += m->m_pkthdr.len + adjust;
- if (m->m_flags & M_MCAST)
+ if (m->m_flags & (M_BCAST|M_MCAST))
ifp->if_omcasts++;
active = ifp->if_flags & IFF_OACTIVE;
}
==== //depot/projects/netperf_socket/sys/net/route.c#5 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)route.c 8.3.1.1 (Berkeley) 2/23/95
- * $FreeBSD: src/sys/net/route.c,v 1.95 2004/04/07 20:46:12 imp Exp $
+ * $FreeBSD: src/sys/net/route.c,v 1.96 2004/04/12 20:24:30 luigi Exp $
*/
#include "opt_inet.h"
@@ -1148,16 +1148,12 @@
int
rtinit(struct ifaddr *ifa, int cmd, int flags)
{
- register struct rtentry *rt;
- register struct sockaddr *dst;
- register struct sockaddr *deldst;
+ struct sockaddr *dst;
struct sockaddr *netmask;
struct mbuf *m = 0;
- struct rtentry *nrt = 0;
- struct radix_node_head *rnh;
- struct radix_node *rn;
+ struct rtentry *rt = 0;
+ struct rt_addrinfo info;
int error;
- struct rt_addrinfo info;
if (flags & RTF_HOST) {
dst = ifa->ifa_dstaddr;
@@ -1172,6 +1168,10 @@
* be confusing at best and possibly worse.
*/
if (cmd == RTM_DELETE) {
+ struct sockaddr *deldst;
+ struct radix_node_head *rnh;
+ struct radix_node *rn;
+
/*
* It's a delete, so it should already exist..
* If it's a net, mask off the host bits
@@ -1213,8 +1213,8 @@
info.rti_info[RTAX_DST] = dst;
info.rti_info[RTAX_GATEWAY] = ifa->ifa_addr;
info.rti_info[RTAX_NETMASK] = netmask;
- error = rtrequest1(cmd, &info, &nrt);
- if (error == 0 && (rt = nrt) != NULL) {
+ error = rtrequest1(cmd, &info, &rt);
+ if (error == 0 && rt != NULL) {
/*
* notify any listening routing agents of the change
*/
==== //depot/projects/netperf_socket/sys/net/rtsock.c#3 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)rtsock.c 8.7 (Berkeley) 10/12/95
- * $FreeBSD: src/sys/net/rtsock.c,v 1.98 2004/04/07 20:46:12 imp Exp $
+ * $FreeBSD: src/sys/net/rtsock.c,v 1.99 2004/04/12 20:26:01 luigi Exp $
*/
#include <sys/param.h>
@@ -1080,8 +1080,8 @@
int *name = (int *)arg1;
u_int namelen = arg2;
struct radix_node_head *rnh;
- int i, s, error = EINVAL;
- u_char af;
+ int i, lim, s, error = EINVAL;
+ u_char af;
struct walkarg w;
name ++;
@@ -1103,25 +1103,19 @@
case NET_RT_DUMP:
case NET_RT_FLAGS:
- if (af != 0) {
- if ((rnh = rt_tables[af]) != NULL) {
+ if (af == 0) { /* dump all tables */
+ i = 1;
+ lim = AF_MAX;
+ } else /* dump only one table */
+ i = lim = af;
+ for (error = 0; error == 0 && i <= lim; i++)
+ if ((rnh = rt_tables[i]) != NULL) {
/* RADIX_NODE_HEAD_LOCK(rnh); */
error = rnh->rnh_walktree(rnh,
sysctl_dumpentry, &w);/* could sleep XXX */
/* RADIX_NODE_HEAD_UNLOCK(rnh); */
- } else
+ } else if (af != 0)
error = EAFNOSUPPORT;
- } else {
- for (i = 1; i <= AF_MAX; i++)
- if ((rnh = rt_tables[i]) != NULL) {
- /* RADIX_NODE_HEAD_LOCK(rnh); */
- error = rnh->rnh_walktree(rnh,
- sysctl_dumpentry, &w);
- /* RADIX_NODE_HEAD_UNLOCK(rnh); */
- if (error)
- break;
- }
- }
break;
case NET_RT_IFLIST:
==== //depot/projects/netperf_socket/sys/nfsserver/nfs_serv.c#4 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/nfsserver/nfs_serv.c,v 1.139 2004/04/07 04:59:57 imp Exp $");
+__FBSDID("$FreeBSD: src/sys/nfsserver/nfs_serv.c,v 1.140 2004/04/12 13:02:21 mux Exp $");
/*
* nfs version 2 and 3 server calls to vnode ops
@@ -3808,7 +3808,16 @@
tval = (u_quad_t)sf->f_bfree;
tval *= (u_quad_t)sf->f_bsize;
txdr_hyper(tval, &sfp->sf_fbytes);
- tval = (u_quad_t)sf->f_bavail;
+ /*
+ * Don't send negative values for available space,
+ * since this field is unsigned in the NFS protocol.
+ * Otherwise, the client would see absurdly high
+ * numbers for free space.
+ */
+ if (sf->f_bavail < 0)
+ tval = 0;
+ else
+ tval = (u_quad_t)sf->f_bavail;
tval *= (u_quad_t)sf->f_bsize;
txdr_hyper(tval, &sfp->sf_abytes);
sfp->sf_tfiles.nfsuquad[0] = 0;
@@ -3823,7 +3832,10 @@
sfp->sf_bsize = txdr_unsigned(sf->f_bsize);
sfp->sf_blocks = txdr_unsigned(sf->f_blocks);
sfp->sf_bfree = txdr_unsigned(sf->f_bfree);
- sfp->sf_bavail = txdr_unsigned(sf->f_bavail);
+ if (sf->f_bavail < 0)
+ sfp->sf_bavail = 0;
+ else
+ sfp->sf_bavail = txdr_unsigned(sf->f_bavail);
}
nfsmout:
if (vp)
==== //depot/projects/netperf_socket/sys/pci/if_sis.c#5 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_sis.c,v 1.96 2004/03/17 17:50:53 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_sis.c,v 1.97 2004/04/11 20:34:08 ru Exp $");
/*
* SiS 900/SiS 7016 fast ethernet PCI NIC driver. Datasheets are
@@ -1391,6 +1391,11 @@
ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
ifp->if_capabilities |= IFCAP_VLAN_MTU;
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+#endif
+ ifp->if_capenable = ifp->if_capabilities;
+
/* Hook interrupt last to avoid having to lock softc */
error = bus_setup_intr(dev, sc->sis_irq, INTR_TYPE_NET | INTR_MPSAFE,
sis_intr, sc, &sc->sis_intrhand);
@@ -1773,6 +1778,10 @@
struct sis_softc *sc = ifp->if_softc;
SIS_LOCK(sc);
+ if (!(ifp->if_capenable & IFCAP_POLLING)) {
+ ether_poll_deregister(ifp);
+ cmd = POLL_DEREGISTER;
+ }
if (cmd == POLL_DEREGISTER) { /* final call, enable interrupts */
CSR_WRITE_4(sc, SIS_IER, 1);
goto done;
@@ -1829,7 +1838,8 @@
#ifdef DEVICE_POLLING
if (ifp->if_flags & IFF_POLLING)
goto done;
- if (ether_poll_register(sis_poll, ifp)) { /* ok, disable interrupts */
+ if ((ifp->if_capenable & IFCAP_POLLING) &&
+ ether_poll_register(sis_poll, ifp)) { /* ok, disable interrupts */
CSR_WRITE_4(sc, SIS_IER, 0);
goto done;
}
@@ -2329,6 +2339,9 @@
error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command);
SIS_UNLOCK(sc);
break;
+ case SIOCSIFCAP:
+ ifp->if_capenable = ifr->ifr_reqcap;
+ break;
default:
error = ether_ioctl(ifp, command, data);
break;
==== //depot/projects/netperf_socket/sys/sys/mount.h#7 (text+ko) ====
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*
* @(#)mount.h 8.21 (Berkeley) 5/20/95
- * $FreeBSD: src/sys/sys/mount.h,v 1.159 2004/04/07 04:19:49 imp Exp $
+ * $FreeBSD: src/sys/sys/mount.h,v 1.161 2004/04/11 21:36:31 mux Exp $
*/
#ifndef _SYS_MOUNT_H_
@@ -353,6 +353,7 @@
struct vfsconf *vfc_next; /* next in list */
};
+#ifndef BURN_BRIDGES
struct ovfsconf {
void *vfc_vfsops;
char vfc_name[32];
@@ -360,6 +361,7 @@
int vfc_refcount;
int vfc_flags;
};
+#endif
/*
* NB: these flags refer to IMPLEMENTATION properties, not properties of
@@ -553,13 +555,7 @@
int unmount(const char *, int);
/* C library stuff */
-void endvfsent(void);
int getvfsbyname(const char *, struct xvfsconf *);
-struct ovfsconf *getvfsbytype(int);
-struct ovfsconf *getvfsent(void);
-void setvfsent(int);
-int vfsisloadable(const char *);
-int vfsload(const char *);
__END_DECLS
#endif /* _KERNEL */
==== //depot/projects/netperf_socket/sys/sys/param.h#8 (text+ko) ====
@@ -32,7 +32,7 @@
* SUCH DAMAGE.
*
* @(#)param.h 8.3 (Berkeley) 4/4/95
- * $FreeBSD: src/sys/sys/param.h,v 1.189 2004/04/07 04:19:49 imp Exp $
+ * $FreeBSD: src/sys/sys/param.h,v 1.190 2004/04/11 21:57:07 mux Exp $
*/
#ifndef _SYS_PARAM_H_
@@ -55,7 +55,7 @@
* scheme is: <major><two digit minor><0 if release branch, otherwise 1>xx
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 502110 /* Master, propagated to newvers */
+#define __FreeBSD_version 502111 /* Master, propagated to newvers */
#ifndef LOCORE
#include <sys/types.h>
More information about the p4-projects
mailing list