From aba24c33fcaf2672047cb2b6a2ef77f204504510 Mon Sep 17 00:00:00 2001 From: Nick Kossifidis Date: Tue, 23 Nov 2010 20:52:24 +0200 Subject: [PATCH] --- yaml --- r: 224863 b: refs/heads/master c: e8325ed87457e07b9ceeb1e7a31df787dd7ee106 h: refs/heads/master i: 224861: 7f11be1a4768fd43b2d4eb570befc64413acaa4a 224859: 05f36aa4aea61a49b9fb078d014198b1dfdb5aff 224855: 316a40362757b1bb14d4ad2b17e5750565e1d15e 224847: 463f22e41a5da6cc7da31cf52195c0eb0af1fc5f 224831: 539e64f59ce848f68ad4e7bc11a87a5016b52d67 v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/ath/ath5k/ath5k.h | 2 +- trunk/drivers/net/wireless/ath/ath5k/dma.c | 11 +++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 29c9f44f306f..0da186f6ad8a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7317ba2d669c1b54fb31ed7834361a700a79217 +refs/heads/master: e8325ed87457e07b9ceeb1e7a31df787dd7ee106 diff --git a/trunk/drivers/net/wireless/ath/ath5k/ath5k.h b/trunk/drivers/net/wireless/ath/ath5k/ath5k.h index 629a5eebe302..b36d3a530258 100644 --- a/trunk/drivers/net/wireless/ath/ath5k/ath5k.h +++ b/trunk/drivers/net/wireless/ath/ath5k/ath5k.h @@ -1168,7 +1168,7 @@ void ath5k_hw_set_clockrate(struct ath5k_hw *ah); void ath5k_hw_start_rx_dma(struct ath5k_hw *ah); int ath5k_hw_stop_rx_dma(struct ath5k_hw *ah); u32 ath5k_hw_get_rxdp(struct ath5k_hw *ah); -void ath5k_hw_set_rxdp(struct ath5k_hw *ah, u32 phys_addr); +int ath5k_hw_set_rxdp(struct ath5k_hw *ah, u32 phys_addr); int ath5k_hw_start_tx_dma(struct ath5k_hw *ah, unsigned int queue); int ath5k_hw_stop_tx_dma(struct ath5k_hw *ah, unsigned int queue); u32 ath5k_hw_get_txdp(struct ath5k_hw *ah, unsigned int queue); diff --git a/trunk/drivers/net/wireless/ath/ath5k/dma.c b/trunk/drivers/net/wireless/ath/ath5k/dma.c index bfdfcff42a1e..3fe634f588c2 100644 --- a/trunk/drivers/net/wireless/ath/ath5k/dma.c +++ b/trunk/drivers/net/wireless/ath/ath5k/dma.c @@ -95,11 +95,18 @@ u32 ath5k_hw_get_rxdp(struct ath5k_hw *ah) * @ah: The &struct ath5k_hw * @phys_addr: RX descriptor address * - * XXX: Should we check if rx is enabled before setting rxdp ? + * Returns -EIO if rx is active */ -void ath5k_hw_set_rxdp(struct ath5k_hw *ah, u32 phys_addr) +int ath5k_hw_set_rxdp(struct ath5k_hw *ah, u32 phys_addr) { + if (ath5k_hw_reg_read(ah, AR5K_CR) & AR5K_CR_RXE) { + ATH5K_DBG(ah->ah_sc, ATH5K_DEBUG_DMA, + "tried to set RXDP while rx was active !\n"); + return -EIO; + } + ath5k_hw_reg_write(ah, phys_addr, AR5K_RXDP); + return 0; }