|
@@ -1930,6 +1930,7 @@ EXPORT_SYMBOL(ar9003_hw_bb_watchdog_dbg_info);
|
|
|
|
|
|
void ar9003_hw_disable_phy_restart(struct ath_hw *ah)
|
|
|
{
|
|
|
+ u8 result;
|
|
|
u32 val;
|
|
|
|
|
|
/* While receiving unsupported rate frame rx state machine
|
|
@@ -1937,15 +1938,13 @@ void ar9003_hw_disable_phy_restart(struct ath_hw *ah)
|
|
|
* state, BB would go hang. If RXSM is in 0xb state after
|
|
|
* first bb panic, ensure to disable the phy_restart.
|
|
|
*/
|
|
|
- if (!((MS(ah->bb_watchdog_last_status,
|
|
|
- AR_PHY_WATCHDOG_RX_OFDM_SM) == 0xb) ||
|
|
|
- ah->bb_hang_rx_ofdm))
|
|
|
- return;
|
|
|
-
|
|
|
- ah->bb_hang_rx_ofdm = true;
|
|
|
- val = REG_READ(ah, AR_PHY_RESTART);
|
|
|
- val &= ~AR_PHY_RESTART_ENA;
|
|
|
+ result = MS(ah->bb_watchdog_last_status, AR_PHY_WATCHDOG_RX_OFDM_SM);
|
|
|
|
|
|
- REG_WRITE(ah, AR_PHY_RESTART, val);
|
|
|
+ if ((result == 0xb) || ah->bb_hang_rx_ofdm) {
|
|
|
+ ah->bb_hang_rx_ofdm = true;
|
|
|
+ val = REG_READ(ah, AR_PHY_RESTART);
|
|
|
+ val &= ~AR_PHY_RESTART_ENA;
|
|
|
+ REG_WRITE(ah, AR_PHY_RESTART, val);
|
|
|
+ }
|
|
|
}
|
|
|
EXPORT_SYMBOL(ar9003_hw_disable_phy_restart);
|