2009-12-09 19:25:55

by Larry Finger

[permalink] [raw]
Subject: [PATCH] b43: Remove reset after fatal DMA error

As shown in Kernel Bugzilla #14761, doing a controller restart after a
fatal DMA error does not accomplish anything other than consume the CPU
on an affected system. Accordingly, substitute a meaningful message for
the restart.

Signed-off-by: Larry Finger <[email protected]>
Cc: Stable <[email protected]> [2.6.32]
---

John,

If possible, this patch should be applied to 2.6.33. I made the message
be two parts as the second will be replaced once the patch to change PIO
from a compile-time to a run-time option is completed and tested.
It is working here, but needs further testing. I expected the performance
to be degraded, but it seems to be too much here.

Larry
---

Index: wireless-testing/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-testing.orig/drivers/net/wireless/b43/main.c
+++ wireless-testing/drivers/net/wireless/b43/main.c
@@ -1784,7 +1784,10 @@ static void b43_do_interrupt_thread(stru
dma_reason[0], dma_reason[1],
dma_reason[2], dma_reason[3],
dma_reason[4], dma_reason[5]);
- b43_controller_restart(dev, "DMA error");
+ b43err(dev->wl, "This device does not support DMA "
+ "on your system. Please use PIO instead.\n");
+ b43err(dev->wl, "CONFIG_B43_FORCE_PIO must be set in "
+ "your kernel configuration.\n");
return;
}
if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {