ath5k: Check RXE when setting RXDP
* Make sure we are not trying to set RXDP while RX is active, for now ignore the return value. Signed-off-by: Nick Kossifidis <mickflemm@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
f7317ba2d6
commit
e8325ed874
@@ -1168,7 +1168,7 @@ void ath5k_hw_set_clockrate(struct ath5k_hw *ah);
|
|||||||
void ath5k_hw_start_rx_dma(struct ath5k_hw *ah);
|
void ath5k_hw_start_rx_dma(struct ath5k_hw *ah);
|
||||||
int ath5k_hw_stop_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);
|
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_start_tx_dma(struct ath5k_hw *ah, unsigned int queue);
|
||||||
int ath5k_hw_stop_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);
|
u32 ath5k_hw_get_txdp(struct ath5k_hw *ah, unsigned int queue);
|
||||||
|
@@ -95,11 +95,18 @@ u32 ath5k_hw_get_rxdp(struct ath5k_hw *ah)
|
|||||||
* @ah: The &struct ath5k_hw
|
* @ah: The &struct ath5k_hw
|
||||||
* @phys_addr: RX descriptor address
|
* @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);
|
ath5k_hw_reg_write(ah, phys_addr, AR5K_RXDP);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user