PERFORCE change 64860 for review
Marcel Moolenaar
marcel at FreeBSD.org
Wed Nov 10 19:49:39 PST 2004
http://perforce.freebsd.org/chv.cgi?CH=64860
Change 64860 by marcel at marcel_nfs on 2004/11/11 03:49:01
IFC @64859
Affected files ...
.. //depot/projects/uart/arm/arm/pmap.c#3 integrate
.. //depot/projects/uart/arm/conf/IQ31244#4 integrate
.. //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#3 integrate
.. //depot/projects/uart/conf/files#33 integrate
.. //depot/projects/uart/conf/files.sparc64#7 integrate
.. //depot/projects/uart/conf/options.arm#2 integrate
.. //depot/projects/uart/dev/ed/if_ed.c#5 integrate
.. //depot/projects/uart/dev/ed/if_ed_cbus.c#5 integrate
.. //depot/projects/uart/dev/esp/esp_sbus.c#2 integrate
.. //depot/projects/uart/dev/esp/lsi64854.c#2 delete
.. //depot/projects/uart/dev/esp/lsi64854reg.h#2 delete
.. //depot/projects/uart/dev/esp/lsi64854var.h#2 delete
.. //depot/projects/uart/fs/autofs/autofs.h#2 delete
.. //depot/projects/uart/fs/autofs/autofs_util.c#2 delete
.. //depot/projects/uart/fs/autofs/autofs_vfsops.c#3 delete
.. //depot/projects/uart/fs/autofs/autofs_vnops.c#2 delete
.. //depot/projects/uart/i386/i386/autoconf.c#3 integrate
.. //depot/projects/uart/kern/vfs_mount.c#7 integrate
.. //depot/projects/uart/modules/Makefile#13 integrate
.. //depot/projects/uart/modules/autofs/Makefile#2 delete
.. //depot/projects/uart/modules/esp/Makefile#2 integrate
.. //depot/projects/uart/netgraph/ng_device.c#5 integrate
.. //depot/projects/uart/pc98/conf/NOTES#6 integrate
.. //depot/projects/uart/pci/if_sf.c#5 integrate
.. //depot/projects/uart/pci/if_sfreg.h#3 integrate
.. //depot/projects/uart/sparc64/sbus/lsi64854.c#2 integrate
Differences ...
==== //depot/projects/uart/arm/arm/pmap.c#3 (text+ko) ====
@@ -144,8 +144,10 @@
*/
/* Include header files */
+#include "opt_vm.h"
+
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.15 2004/11/07 23:01:36 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.17 2004/11/10 22:11:08 cognet Exp $");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -2811,7 +2813,6 @@
if (flags & KENTER_CACHE)
*pte |= pte_l2_s_cache_mode;
PTE_SYNC(pte);
- cpu_dcache_wbinv_all(); /* XXX: shouldn't be needed */
}
void
@@ -2895,6 +2896,7 @@
KENTER_CACHE);
va += PAGE_SIZE;
}
+ cpu_dcache_wbinv_all(); /* XXX: shouldn't be needed */
}
@@ -3392,7 +3394,6 @@
pmap_vac_me_harder(m, pmap, va);
}
- pmap_dcache_wbinv_all(pmap) /* XXX: Shouldn't be needed. */;
vm_page_unlock_queues();
}
@@ -3411,6 +3412,7 @@
pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
{
pmap_enter(pmap, va, m, VM_PROT_READ|VM_PROT_EXECUTE, FALSE);
+ pmap_dcache_wbinv_all(pmap); /* XXX: shouldn't be needed */
return (NULL);
}
==== //depot/projects/uart/arm/conf/IQ31244#4 (text+ko) ====
@@ -15,7 +15,7 @@
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
-# $FreeBSD: src/sys/arm/conf/IQ31244,v 1.4 2004/11/07 23:02:15 cognet Exp $
+# $FreeBSD: src/sys/arm/conf/IQ31244,v 1.5 2004/11/10 22:09:39 cognet Exp $
machine arm
ident IQ31244
@@ -25,6 +25,7 @@
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options STARTUP_PAGETABLE_ADDR=0xa0000000
+options ARM32_NEW_VM_LAYOUT
include "../xscale/i80321/std.iq31244"
#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" #Default places to look for devices.
==== //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#3 (text+ko) ====
@@ -48,7 +48,7 @@
#include "opt_msgbuf.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.2 2004/11/05 19:52:55 cognet Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.3 2004/11/10 22:09:39 cognet Exp $");
#define _ARM32_BUS_DMA_PRIVATE
#include <sys/param.h>
@@ -105,7 +105,7 @@
#define KERNEL_PT_IOPXS (KERNEL_PT_KERNEL + KERNEL_PT_KERNEL_NUM)
#define KERNEL_PT_VMDATA (KERNEL_PT_IOPXS + 1)
-#define KERNEL_PT_VMDATA_NUM 4
+#define KERNEL_PT_VMDATA_NUM 10
#define NUM_KERNEL_PTS (KERNEL_PT_VMDATA + KERNEL_PT_VMDATA_NUM)
/* Define various stack sizes in pages */
@@ -262,8 +262,17 @@
freemempos -= PAGE_SIZE;
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
for (loop = 0; loop < NUM_KERNEL_PTS; ++loop) {
- valloc_pages(kernel_pt_table[loop],
- L2_TABLE_SIZE / PAGE_SIZE);
+ if (!(loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL))) {
+ valloc_pages(kernel_pt_table[loop],
+ L2_TABLE_SIZE / PAGE_SIZE);
+ } else {
+ kernel_pt_table[loop].pv_pa = freemempos -
+ (loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL)) *
+ L2_TABLE_SIZE_REAL;
+ kernel_pt_table[loop].pv_va =
+ kernel_pt_table[loop].pv_pa + 0x20000000;
+ }
+ i++;
}
/*
@@ -301,14 +310,14 @@
/* Map the L2 pages tables in the L1 page table */
- pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH & ~(0x00400000 - 1),
+ pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH & ~(0x00100000 - 1),
&kernel_pt_table[KERNEL_PT_SYS]);
for (i = 0; i < KERNEL_PT_KERNEL_NUM; i++) {
- pmap_link_l2pt(l1pagetable, KERNBASE + i * 0x00400000,
+ pmap_link_l2pt(l1pagetable, KERNBASE + i * 0x00100000,
&kernel_pt_table[KERNEL_PT_KERNEL + i]);
}
for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
- pmap_link_l2pt(l1pagetable, KERNBASE + (i + loop) * 0x00400000,
+ pmap_link_l2pt(l1pagetable, KERNBASE + (i + loop) * 0x00100000,
&kernel_pt_table[KERNEL_PT_VMDATA + loop]);
pmap_link_l2pt(l1pagetable, IQ80321_IOPXS_VBASE,
&kernel_pt_table[KERNEL_PT_IOPXS]);
==== //depot/projects/uart/conf/files#33 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.961 2004/11/08 19:05:21 phk Exp $
+# $FreeBSD: src/sys/conf/files,v 1.962 2004/11/10 19:54:17 markm Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -853,9 +853,6 @@
dev/zs/zs.c optional zs
dev/zs/zs_sbus.c optional zs fhc
dev/zs/zs_sbus.c optional zs sbus
-fs/autofs/autofs_vnops.c optional autofs
-fs/autofs/autofs_vfsops.c optional autofs
-fs/autofs/autofs_util.c optional autofs
fs/deadfs/dead_vnops.c standard
fs/devfs/devfs_devs.c standard
fs/devfs/devfs_rule.c standard
==== //depot/projects/uart/conf/files.sparc64#7 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.sparc64,v 1.61 2004/10/25 10:29:56 yongari Exp $
+# $FreeBSD: src/sys/conf/files.sparc64,v 1.62 2004/11/10 14:09:51 trhodes Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -15,7 +15,6 @@
dev/auxio/auxio.c optional auxio sbus
dev/auxio/auxio.c optional auxio ebus
dev/esp/esp_sbus.c optional esp sbus
-dev/esp/lsi64854.c optional esp sbus
dev/fb/creator.c optional creator sc
dev/fb/fb.c optional sc
dev/fb/splash.c optional splash
@@ -68,6 +67,7 @@
sparc64/pci/ofw_pci_if.m standard
sparc64/pci/psycho.c optional pci
sparc64/sbus/sbus.c optional sbus
+sparc64/sbus/lsi64854.c optional esp sbus
sparc64/sparc64/autoconf.c standard
sparc64/sparc64/bus_machdep.c standard
sparc64/sparc64/cache.c standard
==== //depot/projects/uart/conf/options.arm#2 (text+ko) ====
@@ -1,4 +1,6 @@
-#$FreeBSD: src/sys/conf/options.arm,v 1.2 2004/09/23 22:52:25 cognet Exp $
+#$FreeBSD: src/sys/conf/options.arm,v 1.3 2004/11/10 22:08:27 cognet Exp $
+ARM32_NEW_VM_LAYOUT opt_vm.h
+ARM9_CACHE_WRITE_THROUGH opt_global.h
ARMFPE opt_global.h
CPU_SA1100 opt_global.h
CPU_SA1110 opt_global.h
==== //depot/projects/uart/dev/ed/if_ed.c#5 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.234 2004/09/06 21:14:32 glebius Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ed/if_ed.c,v 1.235 2004/11/10 13:16:12 nyan Exp $");
/*
* Device driver for National Semiconductor DS8390/WD83C690 based ethernet
@@ -370,8 +370,8 @@
if (error)
return (error);
-#if ED_DEBUG
- printf("type = %x type_str=%s isa16bit=%d memsize=%d id_msize=%d\n",
+#ifdef ED_DEBUG
+ printf("type = %x type_str=%s isa16bit=%d memsize=%d id_msize=%lu\n",
sc->type, sc->type_str, isa16bit, memsize, conf_msize);
for (i = 0; i < 8; i++)
printf("%x -> %x\n", i, ed_asic_inb(sc, i));
==== //depot/projects/uart/dev/ed/if_ed_cbus.c#5 (text+ko) ====
@@ -24,7 +24,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/ed/if_ed_cbus.c,v 1.12 2003/10/31 18:31:58 brooks Exp $
+ * $FreeBSD: src/sys/dev/ed/if_ed_cbus.c,v 1.13 2004/11/10 13:16:12 nyan Exp $
*/
#include <sys/param.h>
@@ -1682,7 +1682,7 @@
ed_nic_outb(sc, ED_P0_PSTART, page_offset / ED_PAGE_SIZE);
ed_nic_outb(sc, ED_P0_PSTOP, (page_offset + memsize) / ED_PAGE_SIZE);
#ifdef ED_DEBUG
- printf("ed?: ed_pio_testmem: page start=%x, end=%x",
+ printf("ed?: ed_pio_testmem: page start=%x, end=%lx",
page_offset, page_offset + memsize);
#endif
==== //depot/projects/uart/dev/esp/esp_sbus.c#2 (text+ko) ====
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/esp/esp_sbus.c,v 1.7 2004/09/13 15:15:38 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/esp/esp_sbus.c,v 1.8 2004/11/10 14:11:10 trhodes Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -82,14 +82,14 @@
#include <machine/ofw_machdep.h>
#include <machine/resource.h>
#include <sys/rman.h>
-#include <sparc64/sbus/sbusvar.h>
#include <cam/cam.h>
#include <cam/cam_ccb.h>
#include <cam/scsi/scsi_all.h>
-#include <dev/esp/lsi64854reg.h>
-#include <dev/esp/lsi64854var.h>
+#include <sparc64/sbus/lsi64854reg.h>
+#include <sparc64/sbus/lsi64854var.h>
+#include <sparc64/sbus/sbusvar.h>
#include <dev/esp/ncr53c9xreg.h>
#include <dev/esp/ncr53c9xvar.h>
==== //depot/projects/uart/i386/i386/autoconf.c#3 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/autoconf.c,v 1.179 2004/10/01 15:57:23 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/autoconf.c,v 1.180 2004/11/10 12:28:06 nyan Exp $");
/*
* Setup the system to run on the current machine.
@@ -130,8 +130,8 @@
if (bootverbose) {
#ifdef PC98
- {
int i;
+
/*
* Print out the BIOS's idea of the disk geometries.
*/
@@ -147,11 +147,7 @@
* when the get-disk-geometry interrupt fails. Skip
* drives that have this geometry.
*/
-#ifdef PC98
if (bios_geom == 0x4f020f)
-#else
- if (bios_geom == 0x4f010f)
-#endif
continue;
printf(" %x:%08lx ", i, bios_geom);
@@ -165,7 +161,6 @@
max_sector, max_sector);
}
printf(" %d accounted for\n", bootinfo.bi_n_bios_used);
- }
#endif
printf("Device configuration finished.\n");
==== //depot/projects/uart/kern/vfs_mount.c#7 (text+ko) ====
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.146 2004/11/10 07:36:09 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_mount.c,v 1.147 2004/11/10 09:56:28 phk Exp $");
#include <sys/param.h>
#include <sys/conf.h>
@@ -1290,7 +1290,6 @@
{
struct mount *mp;
char *vfsname, *path;
- const char *devname;
int error;
char patt[32];
int s;
==== //depot/projects/uart/modules/Makefile#13 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/modules/Makefile,v 1.406 2004/11/08 19:05:22 phk Exp $
+# $FreeBSD: src/sys/modules/Makefile,v 1.407 2004/11/10 19:54:18 markm Exp $
# pcic -- currently broken and being worked on out of tree.
# oldcard -- specialized use for debugging only.
@@ -27,7 +27,6 @@
ath \
${_ath_hal} \
aue \
- autofs \
${_auxio} \
${_awi} \
axe \
==== //depot/projects/uart/modules/esp/Makefile#2 (text+ko) ====
@@ -1,6 +1,6 @@
-# $FreeBSD: src/sys/modules/esp/Makefile,v 1.3 2004/08/12 17:41:30 marius Exp $
+# $FreeBSD: src/sys/modules/esp/Makefile,v 1.4 2004/11/10 14:09:51 trhodes Exp $
-.PATH: ${.CURDIR}/../../dev/esp
+.PATH: ${.CURDIR}/../../dev/esp ${.CURDIR}/../../sparc64/sbus
KMOD= esp
==== //depot/projects/uart/netgraph/ng_device.c#5 (text+ko) ====
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2002 Mark Santcroos <marks at ripe.net>
+ * Copyright (c) 2004 Gleb Smirnoff <glebius at FreeBSD.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,7 +27,7 @@
* This node presents a /dev/ngd%d device that interfaces to an other
* netgraph node.
*
- * $FreeBSD: src/sys/netgraph/ng_device.c,v 1.14 2004/10/31 17:32:51 glebius Exp $
+ * $FreeBSD: src/sys/netgraph/ng_device.c,v 1.15 2004/11/10 11:18:05 glebius Exp $
*
*/
==== //depot/projects/uart/pc98/conf/NOTES#6 (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/pc98/conf/NOTES,v 1.43 2004/09/02 12:50:47 ru Exp $
+# $FreeBSD: src/sys/pc98/conf/NOTES,v 1.44 2004/11/10 12:24:30 nyan Exp $
#
#
@@ -88,9 +88,11 @@
# I/O device(s).
#
# CPU_DISABLE_CMPXCHG disables the CMPXCHG instruction on > i386 IA32
-# machines. VmWare seems to emulate this instruction poorly, causing
-# the guest OS to run very slowly. Enabling this with an SMP kernel
-# will cause the kernel to be unusable.
+# machines. VmWare 3.x seems to emulate this instruction poorly, causing
+# the guest OS to run very slowly. This problem appears to be fixed in
+# VmWare 4.x, at least in version 4.5.2, so that enabling this option with
+# VmWare 4.x will result in locking operations to be 20-30 times slower.
+# Enabling this with an SMP kernel will cause the kernel to be unusable.
#
# CPU_DISABLE_SSE explicitly prevents I686_CPU from turning on SSE.
#
==== //depot/projects/uart/pci/if_sf.c#5 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_sf.c,v 1.73 2004/08/28 15:10:35 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_sf.c,v 1.74 2004/11/10 23:04:39 brueffer Exp $");
/*
* Adaptec AIC-6915 "Starfire" PCI fast ethernet driver for FreeBSD.
@@ -164,6 +164,12 @@
static int sf_miibus_readreg (device_t, int, int);
static int sf_miibus_writereg (device_t, int, int, int);
static void sf_miibus_statchg (device_t);
+#ifdef DEVICE_POLLING
+static void sf_poll (struct ifnet *ifp, enum poll_cmd cmd,
+ int count);
+static void sf_poll_locked (struct ifnet *ifp, enum poll_cmd cmd,
+ int count);
+#endif /* DEVICE_POLLING */
static u_int32_t csr_read_4 (struct sf_softc *, int);
static void csr_write_4 (struct sf_softc *, int, u_int32_t);
@@ -534,6 +540,10 @@
mii = device_get_softc(sc->sf_miibus);
error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command);
break;
+ case SIOCSIFCAP:
+ ifp->if_capenable &= ~IFCAP_POLLING;
+ ifp->if_capenable |= ifr->ifr_reqcap & IFCAP_POLLING;
+ break;
default:
error = ether_ioctl(ifp, command, data);
break;
@@ -714,6 +724,10 @@
ifp->if_init = sf_init;
ifp->if_baudrate = 10000000;
ifp->if_snd.ifq_maxlen = SF_TX_DLIST_CNT - 1;
+#ifdef DEVICE_POLLING
+ ifp->if_capabilities |= IFCAP_POLLING;
+#endif /* DEVICE_POLLING */
+ ifp->if_capenable = ifp->if_capabilities;
/*
* Call MI attach routine.
@@ -903,6 +917,14 @@
while (cmpconsidx != cmpprodidx) {
struct mbuf *m0;
+#ifdef DEVICE_POLLING
+ if (ifp->if_flags & IFF_POLLING) {
+ if (sc->rxcycles <= 0)
+ break;
+ sc->rxcycles--;
+ }
+#endif /* DEVICE_POLLING */
+
cur_rx = &sc->sf_ldata->sf_rx_clist[cmpconsidx];
desc = &sc->sf_ldata->sf_rx_dlist_big[cur_rx->sf_endidx];
m = desc->sf_mbuf;
@@ -1010,6 +1032,63 @@
}
}
+#ifdef DEVICE_POLLING
+static void
+sf_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+{
+ struct sf_softc *sc = ifp->if_softc;
+
+ SF_LOCK(sc);
+ sf_poll_locked(ifp, cmd, count);
+ SF_UNLOCK(sc);
+}
+
+static void
+sf_poll_locked(struct ifnet *ifp, enum poll_cmd cmd, int count)
+{
+ struct sf_softc *sc = ifp->if_softc;
+
+ SF_LOCK_ASSERT(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, SF_IMR, SF_INTRS);
+ return;
+ }
+
+ sc->rxcycles = count;
+ sf_rxeof(sc);
+ sf_txeof(sc);
+ if (ifp->if_snd.ifq_head != NULL)
+ sf_start(ifp);
+
+ if (cmd == POLL_AND_CHECK_STATUS) {
+ u_int32_t status;
+
+ status = csr_read_4(sc, SF_ISR);
+ if (status)
+ csr_write_4(sc, SF_ISR, status);
+
+ if (status & SF_ISR_TX_LOFIFO)
+ sf_txthresh_adjust(sc);
+
+ if (status & SF_ISR_ABNORMALINTR) {
+ if (status & SF_ISR_STATSOFLOW) {
+ untimeout(sf_stats_update, sc,
+ sc->sf_stat_ch);
+ sf_stats_update(sc);
+ } else
+ sf_init(sc);
+ }
+ }
+}
+#endif /* DEVICE_POLLING */
+
static void
sf_intr(arg)
void *arg;
@@ -1023,6 +1102,19 @@
ifp = &sc->arpcom.ac_if;
+#ifdef DEVICE_POLLING
+ if (ifp->if_flags & IFF_POLLING)
+ goto done_locked;
+
+ if ((ifp->if_capenable & IFCAP_POLLING) &&
+ ether_poll_register(sf_poll, ifp)) {
+ /* OK, disable interrupts. */
+ csr_write_4(sc, SF_IMR, 0x00000000);
+ sf_poll_locked(ifp, 0, 1);
+ goto done_locked;
+ }
+#endif /* DEVICE_POLLING */
+
if (!(csr_read_4(sc, SF_ISR_SHADOW) & SF_ISR_PCIINT_ASSERTED)) {
SF_UNLOCK(sc);
return;
@@ -1066,6 +1158,9 @@
if (ifp->if_snd.ifq_head != NULL)
sf_start(ifp);
+#ifdef DEVICE_POLLING
+done_locked:
+#endif /* DEVICE_POLLING */
SF_UNLOCK(sc);
}
@@ -1163,6 +1258,13 @@
/* Enable autopadding of short TX frames. */
SF_SETBIT(sc, SF_MACCFG_1, SF_MACCFG1_AUTOPAD);
+#ifdef DEVICE_POLLING
+ /* Disable interrupts if we are polling. */
+ if (ifp->if_flags & IFF_POLLING)
+ csr_write_4(sc, SF_IMR, 0x00000000);
+ else
+#endif /* DEVICE_POLLING */
+
/* Enable interrupts. */
csr_write_4(sc, SF_IMR, SF_INTRS);
SF_SETBIT(sc, SF_PCI_DEVCFG, SF_PCIDEVCFG_INTR_ENB);
@@ -1339,6 +1441,10 @@
untimeout(sf_stats_update, sc, sc->sf_stat_ch);
+#ifdef DEVICE_POLLING
+ ether_poll_deregister(ifp);
+#endif /* DEVICE_POLLING */
+
csr_write_4(sc, SF_GEN_ETH_CTL, 0);
csr_write_4(sc, SF_CQ_CONSIDX, 0);
csr_write_4(sc, SF_CQ_PRODIDX, 0);
==== //depot/projects/uart/pci/if_sfreg.h#3 (text+ko) ====
@@ -29,7 +29,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/pci/if_sfreg.h,v 1.10 2003/11/14 19:00:31 sam Exp $
+ * $FreeBSD: src/sys/pci/if_sfreg.h,v 1.11 2004/11/10 23:04:39 brueffer Exp $
*/
/*
@@ -1046,6 +1046,9 @@
int sf_if_flags;
struct callout_handle sf_stat_ch;
struct mtx sf_mtx;
+#ifdef DEVICE_POLLING
+ int rxcycles;
+#endif
};
==== //depot/projects/uart/sparc64/sbus/lsi64854.c#2 (text+ko) ====
@@ -64,7 +64,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/sparc64/sbus/lsi64854.c,v 1.1 2004/06/10 05:11:39 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/sparc64/sbus/lsi64854.c,v 1.2 2004/11/10 14:09:52 trhodes Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -80,8 +80,8 @@
#include <cam/cam_ccb.h>
#include <cam/scsi/scsi_all.h>
-#include <dev/esp/lsi64854reg.h>
-#include <dev/esp/lsi64854var.h>
+#include <sparc64/sbus/lsi64854reg.h>
+#include <sparc64/sbus/lsi64854var.h>
#include <dev/esp/ncr53c9xreg.h>
#include <dev/esp/ncr53c9xvar.h>
More information about the p4-projects
mailing list