mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| @@ -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, (queue->qid == QID_AC_BE));
 | |
|  	rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX1, (queue->qid == QID_AC_BK));
 |