![Clemens Ladisch](/assets/img/avatar_default.png)
Move the AR DMA descriptors out of the buffer pages, and map the buffer pages linearly into the kernel's address space. This allows the driver to ignore any page boundaries in the DMA data and thus to avoid any copying around of packet payloads. This fixes the bug where S800 packets that are so big (> 4080 bytes) that they can be split over three pages were not handled correctly. Due to the changed algorithm, we can now use arbitrarily many buffer pages, which improves performance because the controller can more easily unload its DMA FIFO. Furthermore, using streaming DMA mappings should improve perfomance on architectures where coherent DMA mappings are not cacheable. Even on other architectures, the caching behaviour should be improved slightly because the CPU no longer writes to the buffer pages. v2: Detect the last filled buffer page by searching the descriptor's residual count value fields in order (like in the old code), instead of going backwards through the transfer status fields; it looks as if some controllers do not set the latter correctly. v3: Fix an old resume bug that would now make the handler run into a BUG_ON, and replace that check with more useful error handling. Increase the buffer size for better performance with non-TI chips. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Maxim Levitsky writes: Works almost perfectly. I can still see RCODE_BUSY errors sometimes, not very often though. 64K here eliminates these errors completely. This is most likely due to nouveau drivers and lowest perf level I use to lower card temperature. That increases latencies too much I think. Besides that the IO is just perfect. Tested-by: Maxim Levitsky <maximlevitsky@gmail.com> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
89 lines
2.9 KiB
Text
89 lines
2.9 KiB
Text
menu "IEEE 1394 (FireWire) support"
|
|
depends on PCI || BROKEN
|
|
# firewire-core does not depend on PCI but is
|
|
# not useful without PCI controller driver
|
|
|
|
config FIREWIRE
|
|
tristate "FireWire driver stack"
|
|
select CRC_ITU_T
|
|
help
|
|
This is the new-generation IEEE 1394 (FireWire) driver stack
|
|
a.k.a. Juju, a new implementation designed for robustness and
|
|
simplicity.
|
|
See http://ieee1394.wiki.kernel.org/index.php/Juju_Migration
|
|
for information about migration from the older Linux 1394 stack
|
|
to the new driver stack.
|
|
|
|
To compile this driver as a module, say M here: the module will be
|
|
called firewire-core.
|
|
|
|
config FIREWIRE_OHCI
|
|
tristate "OHCI-1394 controllers"
|
|
depends on PCI && FIREWIRE && MMU
|
|
help
|
|
Enable this driver if you have a FireWire controller based
|
|
on the OHCI specification. For all practical purposes, this
|
|
is the only chipset in use, so say Y here.
|
|
|
|
To compile this driver as a module, say M here: The module will be
|
|
called firewire-ohci.
|
|
|
|
config FIREWIRE_OHCI_DEBUG
|
|
bool
|
|
depends on FIREWIRE_OHCI
|
|
default y
|
|
|
|
config FIREWIRE_SBP2
|
|
tristate "Storage devices (SBP-2 protocol)"
|
|
depends on FIREWIRE && SCSI
|
|
help
|
|
This option enables you to use SBP-2 devices connected to a
|
|
FireWire bus. SBP-2 devices include storage devices like
|
|
harddisks and DVD drives, also some other FireWire devices
|
|
like scanners.
|
|
|
|
To compile this driver as a module, say M here: The module will be
|
|
called firewire-sbp2.
|
|
|
|
You should also enable support for disks, CD-ROMs, etc. in the SCSI
|
|
configuration section.
|
|
|
|
config FIREWIRE_NET
|
|
tristate "IP networking over 1394 (EXPERIMENTAL)"
|
|
depends on FIREWIRE && INET && EXPERIMENTAL
|
|
help
|
|
This enables IPv4 over IEEE 1394, providing IP connectivity with
|
|
other implementations of RFC 2734 as found on several operating
|
|
systems. Multicast support is currently limited.
|
|
|
|
NOTE, this driver is not stable yet!
|
|
|
|
To compile this driver as a module, say M here: The module will be
|
|
called firewire-net.
|
|
|
|
config FIREWIRE_NOSY
|
|
tristate "Nosy - a FireWire traffic sniffer for PCILynx cards"
|
|
depends on PCI
|
|
help
|
|
Nosy is an IEEE 1394 packet sniffer that is used for protocol
|
|
analysis and in development of IEEE 1394 drivers, applications,
|
|
or firmwares.
|
|
|
|
This driver lets you use a Texas Instruments PCILynx 1394 to PCI
|
|
link layer controller TSB12LV21/A/B as a low-budget bus analyzer.
|
|
PCILynx is a nowadays very rare IEEE 1394 controller which is
|
|
not OHCI 1394 compliant.
|
|
|
|
The following cards are known to be based on PCILynx or PCILynx-2:
|
|
IOI IOI-1394TT (PCI card), Unibrain Fireboard 400 PCI Lynx-2
|
|
(PCI card), Newer Technology FireWire 2 Go (CardBus card),
|
|
Apple Power Mac G3 blue & white (onboard controller).
|
|
|
|
To compile this driver as a module, say M here: The module will be
|
|
called nosy. Source code of a userspace interface to nosy, called
|
|
nosy-dump, can be found in tools/firewire/ of the kernel sources.
|
|
|
|
If unsure, say N.
|
|
|
|
endmenu
|