X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/3b428936ad7386010d0beed1d31011e534ef3d14..a186e3031eebfb86e0ee43250fc4e1a91ca2f890:/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch?ds=sidebyside 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 a584d0009..50658f145 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. @@ -14,21 +14,16 @@ Signed-off-by: Helmut Schaa 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); +@@ -592,6 +592,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)); --- -1.6.4.2 - + 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));