d4734bb3d4
HPC1 does not mark transmitted descriptors like HPC3. We must query the HPC1 chip to determine what it expects the next descriptor to be, reclaim used ones, and restart if necessary. Each revision's corresponding logic now lives in its own sq_txring_hpc{1,3} function. HPC1's transmit interrupt conditions also differ from HPC3, so remove the INTR bits from descriptors when tagging new packets on to the end of the chain in order to avoid unwanted interrupts. Also, be extra careful when restarting the transmit ring. Since transmit interrupts seem to be relatively slow on HPC1, sq_start may be called while the DMA engine is quiescent, and before a transmit interrupt is asserted. We cannot behave like HPC3, which begins transmission from the first packet pulled from IFQ if the DMA engine is quiescent as this would skip enqueued packets. It appears that sq_start is never called before HPC3 asserts an interrupt, which restarts the transmit queue at the appropriate place. However, this often happens with HPC1 and we cannot assume that if DMA is inactive in sq_start, then all previously queued packets have fled the coop. XXX Is there a similar race possible with HPC3? HPC3 logic should remain functionally unchanged, and HPC1 should finally work properly. |
||
---|---|---|
.. | ||
acorn26 | ||
acorn32 | ||
algor | ||
alpha | ||
amd64 | ||
amiga | ||
amigappc | ||
arc | ||
arm | ||
atari | ||
bebox | ||
cats | ||
cesfic | ||
cobalt | ||
dreamcast | ||
evbarm | ||
evbmips | ||
evbppc | ||
evbsh3 | ||
evbsh5 | ||
hp300 | ||
hp700 | ||
hpc | ||
hpcarm | ||
hpcmips | ||
hpcsh | ||
hppa | ||
i386 | ||
ibmnws | ||
iyonix | ||
luna68k | ||
m68k | ||
mac68k | ||
macppc | ||
mips | ||
mipsco | ||
mmeye | ||
mvme68k | ||
mvmeppc | ||
netwinder | ||
news68k | ||
newsmips | ||
next68k | ||
ofppc | ||
openblocks405 | ||
pc532 | ||
pdp10 | ||
playstation2 | ||
pmax | ||
pmppc | ||
powerpc | ||
prep | ||
sandpoint | ||
sbmips | ||
sgimips | ||
sh3 | ||
sh5 | ||
shark | ||
sparc | ||
sparc64 | ||
sun2 | ||
sun3 | ||
sun68k | ||
vax | ||
x68k | ||
x86 | ||
xen | ||
Makefile | ||
README |
$NetBSD: README,v 1.37 2004/11/08 00:49:19 wiz Exp $ acorn26: Acorn ARM2- and ARM3-based machines (arm, 20000509) acorn32: Acorn computers Ltd. ARM 6/7/SA based machines (arm, 20011118) algor: Algorithmics, Ltd. MIPS evaluation boards (mips, 20010528) alpha: Compaq (formerly Digital Equipment Corp.) Alpha (alpha, 19950213) amd64: AMD's x86 64 bit architecture (x86_64, 20010619) amiga: Commodore et al. Amiga (m68k, 19930902) amigappc: Phase 5 Amiga (powerpc, 20000525) arc: MIPS Advanced Risc Computing spec machines (mips, 20000123) atari: Atari TT30, Falcon, and Hades (m68k, 19950326) bebox: Be Inc. BeBox (powerpc, 19971014) cats: Chalice Technologies, CATS motherboard (arm, 19981005) cesfic: FIC8234 VME processor board (m68k, 20010514) cobalt: Cobalt Networks Microservers (mips, 20000319) dreamcast: SEGA Dreamcast (sh3, 20010107) evbarm: ARM-based eval boards (arm, 20010905) evbmips: MIPS-based eval boards (mips, 20020307) evbppc: PowerPC-based eval boards (powerpc, 20021209) evbsh3: Hitachi SuperH(TM) sh3 and sh4 eval boards (sh3, 20010206) evbsh5: Hitachi SuperH(TM) sh5 eval boards (sh5, 20020705) hp300: Hewlett Packard 300- and 400-series machines (m68k, 19930512) hp700: Hewlett Packard 700-series machines (hppa, 20020606) hpcarm: ARM based handheld PCs (arm, 20010220) hpcmips: MIPS based handheld PCs (mips, 19990925) hpcsh: Hitachi SuperH(TM) based handheld PCs (sh3, 20010117) i386: Intel/AMD etc. x86 processor line (i386, 19930321) ibmnws: IBM Network Station Thin Clients (powerpc, -) iyonix: Castle Technology xscale based workstations (arm, 20040713) luna68k: LUNA product line of OMRON Tateishi Electric (m68k, 20000105) mac68k: Apple Macintosh (m68k, 19930929) macppc: Apple Power Macintosh and clones (powerpc, 19980515) mipsco: MIPS Corp Magnum 3000 computers (mips, 20000812) mmeye: Hitachi SuperH(TM) computer controlled camera (sh3) mvme68k: Motorola's VMEbus 68K based single board computers (m68k, 19950725) mvmeppc: Motorola's VMEbus PowerPC based single board computers (powerpc, 20020227) mvme88k: Motorola's VMEbus 88K based single board computers (m88k, -) netwinder: StrongARM based Netwinder machines (arm, 20010609) news68k: Sony's NET WORK STATION (m68k, 19991209) newsmips: Sony's NET WORK STATION (mips, 19980218) next68k: NeXT Computer's cubes and slabs (m68k, 19980609) ofppc: Open Firmware based PowerPC machines (powerpc, 19980528) pdp10: Digital PDP 10 emulators; a 9 bit byte, 36 bit word machine (pdp10, 20030831) pc532: "PC-532" kit computer, based on NS 32532 CPU (ns32k, 19930909) playstation2: SONY PlayStation 2 (mips, 20011016) pmax: Digital Equipment Corp. MIPS based machines (mips, 19931012) pmppc: Artesyn PMPPC card (powerpc, 20020531) prep: PowerPC Reference Platform machines (powerpc, 20000229) sandpoint: Motorola Sandpoint reference platform (powerpc, 20010211) sbmips: Broadcom's SiByte processor evaluation boards (mips, 20020306) sgimips: MIPS based Silicon Graphics machines (mips, 20000614) shark: Digital Network Appliance Reference Design ("Shark") (arm, 19960131) sparc: Sun Microsystems SPARC (sun4, sun4c, sun4m) 32 bit machines (sparc, 19931002) sparc64: Sun Microsystems UltraSPARC 64 bit machines (sparc64/sparc, 19980620) sun2: Sun m68010 based machines (m68k, 20010328) sun3: Sun m680[23]0 based machines (m68k, 19930625) vax: Digital Equipment Corp. VAX machines (vax, 19940802) x68k: Sharp X68000, X68030 (m68k, 19960505) xen: Xen virtual machine monitor (xen, 20040311) Generic cpu features shared among multiple ports arm: ARM CPU based platform files hppa: Hewlett Packard PA-RISC CPU based platform files m68k: Motorola 680x0 CPU based platform files mips: MIPS CPU based platform files powerpc: PowerPC CPU based platform files sh3: Hitachi SuperH(TM) sh3 and sh4 CPU based platform files sh5: Hitachi SuperH(TM) sh5 CPU based platform files sparc: Sun Microsystems SPARC(TM) CPU based platform files x86: Intel x86 based platform files. Generic architectural features shared among multiple ports hpc: Handheld PC reference platform files sun68k: Sun Microsystems Motorola 680x0 CPU based platform files Single port cpu families alpha: Digital Equipment Alpha processor m88k: Motorola 88xxx CPU based platform files ns32k: National Semiconductor NS 32532 processor pdp10: Digital Equipment PDP 10 processor