firewire: net: Use posted writes
Change memory region to ohci "middle address space". This effectively reduces the number of packets by 50%. [Stefan R.:] This eliminates 1394 ack packets and improved throughput by a few percent in some tests with an S400a connection with and without gap count optimization. Since firewire-net taxes the AR-req DMA unit of a FireWire controller much more than firewire-sbp2 (which uses the middle address space with PCI posted writes too), this commit also changes a related error printk into a ratelimited one as a precaution. Side note: The IPv4-over-1394 drivers of Mac OS X 10.4, Windows XP SP3, and the Thesycon 1394 bus driver for Windows all use the middle address space too. Signed-off-by: Stephan Gatzka <stephan@gatzka.org> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
4ec4a67aa1
commit
a74477db91
2 changed files with 4 additions and 8 deletions
|
@ -1121,17 +1121,12 @@ static int fwnet_broadcast_start(struct fwnet_device *dev)
|
|||
unsigned u;
|
||||
|
||||
if (dev->local_fifo == FWNET_NO_FIFO_ADDR) {
|
||||
/* outside OHCI posted write area? */
|
||||
static const struct fw_address_region region = {
|
||||
.start = 0xffff00000000ULL,
|
||||
.end = CSR_REGISTER_BASE,
|
||||
};
|
||||
|
||||
dev->handler.length = 4096;
|
||||
dev->handler.address_callback = fwnet_receive_packet;
|
||||
dev->handler.callback_data = dev;
|
||||
|
||||
retval = fw_core_add_address_handler(&dev->handler, ®ion);
|
||||
retval = fw_core_add_address_handler(&dev->handler,
|
||||
&fw_high_memory_region);
|
||||
if (retval < 0)
|
||||
goto failed_initial;
|
||||
|
||||
|
|
|
@ -2045,7 +2045,8 @@ static irqreturn_t irq_handler(int irq, void *data)
|
|||
reg_read(ohci, OHCI1394_PostedWriteAddressLo);
|
||||
reg_write(ohci, OHCI1394_IntEventClear,
|
||||
OHCI1394_postedWriteErr);
|
||||
fw_error("PCI posted write error\n");
|
||||
if (printk_ratelimit())
|
||||
fw_error("PCI posted write error\n");
|
||||
}
|
||||
|
||||
if (unlikely(event & OHCI1394_cycleTooLong)) {
|
||||
|
|
Loading…
Reference in a new issue