X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/9f4c2864868bd4d37d6bb2811584de15cea98e02..dfc66eb1b50769167f78fd3341dce51d77549bcd:/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch diff --git a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch index 5b1ae415a..3bee27105 100644 --- a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch +++ b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch @@ -4,7 +4,7 @@ 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 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. @@ -16,14 +16,14 @@ Signed-off-by: Helmut Schaa --- a/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c -@@ -749,6 +749,10 @@ static void rt2800pci_kill_tx_queue(stru - rt2800_register_write(rt2x00dev, BCN_TIME_CFG, 0); +@@ -593,6 +593,10 @@ static void rt2800pci_kill_tx_queue(stru return; } -+ + + rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, ®); + rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); + rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); - ++ rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); - rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, (qid == QID_AC_BE)); + rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, (queue->qid == QID_AC_BE)); + rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX1, (queue->qid == QID_AC_BK));