openwrt/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch
Gabor Juhos 6676527e58 rt2x00: cleanup patches
Remove 601-rt2x00-remove-mcu-requests-for-soc.patch as an equivalent patch
is already included in upstream.

Add 601-rt2x00-fix-hang-on-ifdown.patch which is not suitable for upstream
inclusion but fixes a hang on ifdown under some circumstances and thus also
fixes AP mode operation in OpenWRT.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>

SVN-Revision: 21975
2010-06-28 17:23:28 +00:00

35 lines
1.3 KiB
Diff

From 27ed5ec6924c17b76d65b697a162bafee7bd8e4e Mon Sep 17 00:00:00 2001
From: Helmut Schaa <helmut.schaa@googlemail.com>
Date: Mon, 21 Jun 2010 10:03:05 +0200
Subject: [PATCH] rt2x00: fix rt2800pci hang on ifdown
rt2800pci hangs the system on rt305x SoC devices on ifdown. Work around
this issue by disabling TX DMA prior to restting the TX queue indices.
This patch is not suitable for upstream inclusion but is just meant as
a workaround until a proper solution is implemented.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
---
drivers/net/wireless/rt2x00/rt2800pci.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 165da7b..bb35350 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -737,6 +737,10 @@ static void rt2800pci_kill_tx_queue(struct rt2x00_dev *rt2x00dev,
rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0);
return;
}
+
+ rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
+ rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
+ rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, &reg);
rt2x00_set_field32(&reg, WPDMA_RST_IDX_DTX_IDX0, (qid == QID_AC_BE));
--
1.6.4.2