linux/drivers
Linas Vepstas 204e5fa17c [PATCH] powerpc/cell spidernet low watermark patch.
Implement basic low-watermark support for the transmit queue.
Hardware low-watermarks allow a properly configured kernel
to continously stream data to a device and not have to handle
any interrupts at all in doing so. Correct zero-interrupt
operation can be actually observed for this driver, when the
socket buffer is made large enough.

The basic idea of a low-watermark interrupt is as follows.
The device driver queues up a bunch of packets for the hardware
to transmit, and then kicks the hardware to get it started.
As the hardware drains the queue of pending, untransmitted
packets, the device driver will want to know when the queue
is almost empty, so that it can queue some more packets.

If the queue drains down to the low waterark, then an interrupt
will be generated. However, if the kernel/driver continues
to add enough packets to keep the queue partially filled,
no interrupt will actually be generated, and the hardware
can continue streaming packets indefinitely in this mode.

The impelmentation is done by setting the DESCR_TXDESFLG flag
in one of the packets. When the hardware sees this flag, it will
interrupt the device driver. Because this flag is on a fixed
packet, rather than at  fixed location in the queue, the
code below needs to move the flag as more packets are
queued up. This implementation attempts to keep the flag
at about 1/4 from "empty".

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: James K Lewis <jklewis@us.ibm.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2006-10-11 04:04:26 -04:00
..
acorn IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
acpi ACPI: Allow setting SCI_EN bit in PM1_CONTROL register 2006-10-10 17:14:44 -07:00
amba
ata [PATCH] trivial iomem annotations: sata_promise 2006-10-10 15:37:23 -07:00
atm Various drivers' irq handlers: kill dead code, needless casts 2006-10-06 15:00:58 -04:00
base [PATCH] hot-add-mem x86_64: use CONFIG_MEMORY_HOTPLUG_SPARSE 2006-10-01 00:39:18 -07:00
block [PATCH] __user annotations: loop.c 2006-10-10 15:37:23 -07:00
bluetooth IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
cdrom [PATCH] cdrom: add endianness annotations 2006-10-10 16:15:33 -07:00
char [PATCH] trivial iomem annotations: istallion 2006-10-10 15:37:22 -07:00
clocksource [PATCH] scx200_hrt: fix precedence bug manifesting as 27x clock in 1 MHz mode 2006-10-04 07:55:14 -07:00
connector [PATCH] Process Events: Fix biarch compatibility issue. use __u64 timestamp 2006-07-31 13:28:36 -07:00
cpufreq [PATCH] cpufreq: make the transition_notifier chain use SRCU 2006-10-04 07:55:30 -07:00
crypto [CRYPTO] padlock: Convert padlock-sha to use crypto_hash 2006-09-21 11:46:22 +10:00
dio
dma [PATCH] drivers/dma trivial annotations 2006-10-10 15:37:21 -07:00
edac [PATCH] drivers/edac/edac_mc.h must #include <linux/platform_device.h> 2006-08-06 08:57:46 -07:00
eisa [PATCH] EISA bus MODALIAS attributes support 2006-09-27 08:26:19 -07:00
fc4 IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
firmware [PATCH] firmware/dcdbas: fix bug in error cleanup 2006-10-10 16:29:37 -07:00
hwmon Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
i2c [POWERPC] Fix i2c-powermac platform device usage 2006-10-10 13:56:13 +10:00
ide [PATCH] swarm: Actually initialize the IDE driver 2006-10-06 08:53:41 -07:00
ieee1394 Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2006-10-08 12:28:41 -07:00
infiniband IB/mthca: Fix off-by-one in mthca SRQ creation 2006-10-10 12:50:38 -07:00
input [PATCH] m68k/HP300: Enable HIL configuration options 2006-10-09 14:54:45 -07:00
isdn drivers/isdn/act2000: kill irq2card_map 2006-10-06 15:04:35 -04:00
leds Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
macintosh [POWERPC] Fix windfarm platform device usage 2006-10-10 13:56:13 +10:00
mca
md [PATCH] md: fix bug where new drives added to an md array sometimes don't sync properly 2006-10-06 08:53:41 -07:00
media [PATCH] em28xx NULL noise removal 2006-10-10 15:37:23 -07:00
message IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
mfd IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
misc [PATCH] tifm __iomem annotations, NULL noise removal 2006-10-09 14:19:08 -07:00
mmc [PATCH] passing pointer to setup_timer() should be via unsigned long 2006-10-10 15:37:22 -07:00
mtd [PATCH] mtd: remove several bogus casts to void * in iounmap() argument 2006-10-10 15:37:22 -07:00
net [PATCH] powerpc/cell spidernet low watermark patch. 2006-10-11 04:04:26 -04:00
nubus
oprofile [PATCH] inode-diet: Eliminate i_blksize from the inode structure 2006-09-27 08:26:18 -07:00
parisc Build fixes for struct pt_regs removal 2006-10-06 20:47:23 -06:00
parport [PATCH] sparc32 pt_regs fixes 2006-10-08 12:32:35 -07:00
pci IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
pcmcia Merge branch 'irqclean-submit1' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6 2006-10-09 14:21:45 -07:00
pnp IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
rapidio Fix several typos in drivers/ 2006-10-03 22:31:37 +02:00
rtc IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
s390 [PATCH] drivers/s390 misc sparse annotations 2006-10-10 15:37:20 -07:00
sbus [PATCH] use %p for pointers 2006-10-10 15:37:24 -07:00
scsi [PATCH] use %zu for size_t 2006-10-10 15:37:24 -07:00
serial [PATCH] __iomem annotations in sunzilog 2006-10-10 15:37:20 -07:00
sh
sn Various drivers' irq handlers: kill dead code, needless casts 2006-10-06 15:00:58 -04:00
spi Various drivers' irq handlers: kill dead code, needless casts 2006-10-06 15:00:58 -04:00
tc [MIPS] Fix DECserial build error by IRQ hander change 2006-10-08 02:38:28 +01:00
telephony
usb [PATCH] devio __user annotations 2006-10-10 15:37:21 -07:00
video IRQ: Maintain regs pointer globally rather than passing to IRQ handlers 2006-10-05 15:10:12 +01:00
w1 Fix several typos in drivers/ 2006-10-03 22:31:37 +02:00
zorro
Kconfig Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00
Makefile Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00