1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-24 20:53:07 +02:00
openwrt-xburst/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch
nbd d250cd4ca7 mac80211: sync latest version from trunk - improves stability and performance
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@24678 3c298f89-4303-0410-b956-a3cf2f4a3e73
2010-12-18 18:37:58 +00:00

30 lines
1.2 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 resetting 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(-)
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -481,6 +481,10 @@ static void rt2800pci_disable_radio(stru
rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001280);
+ 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, 1);
rt2x00_set_field32(&reg, WPDMA_RST_IDX_DTX_IDX1, 1);