- npend = ath9k_hw_numtxpending(ah, i);
- if (npend)
- break;
-- }
--
-- if (ah->external_reset &&
-- (npend || type == ATH9K_RESET_COLD)) {
-- int reset_err = 0;
--
-- ath_dbg(ath9k_hw_common(ah), RESET,
-- "reset MAC via external reset\n");
--
-- reset_err = ah->external_reset();
-- if (reset_err) {
-- ath_err(ath9k_hw_common(ah),
-- "External reset failed, err=%d\n",
-- reset_err);
-- return false;
+ if (type == ATH9K_RESET_COLD)
+ return true;
+
+ for (i = 0; i < AR_NUM_QCU; i++) {
+ if (ath9k_hw_numtxpending(ah, i))
+ return true;
- }
-+ }
-+
++ }
+ }
+
+- if (ah->external_reset &&
+- (npend || type == ATH9K_RESET_COLD)) {
+- int reset_err = 0;
+ return false;
+}
-+
+
+- ath_dbg(ath9k_hw_common(ah), RESET,
+- "reset MAC via external reset\n");
+static bool ath9k_hw_external_reset(struct ath_hw *ah, int type)
+{
+ int err;
-+
+
+- reset_err = ah->external_reset();
+- if (reset_err) {
+- ath_err(ath9k_hw_common(ah),
+- "External reset failed, err=%d\n",
+- reset_err);
+- return false;
+- }
+ if (!ah->external_reset || !ath9k_hw_need_external_reset(ah, type))
+ return true;
-+
-+ ath_dbg(ath9k_hw_common(ah), RESET,
-+ "reset MAC via external reset\n");
- REG_WRITE(ah, AR_RTC_RESET, 1);
++ ath_dbg(ath9k_hw_common(ah), RESET,
++ "reset MAC via external reset\n");
++
+ err = ah->external_reset();
+ if (err) {
+ ath_err(ath9k_hw_common(ah),
+ "External reset failed, err=%d\n", err);
+ return false;
- }
-
++ }
++
+ if (AR_SREV_9550(ah)) {
+ REG_WRITE(ah, AR_RTC_RESET, 0);
+ udelay(10);
-+ }
-+
+ }
+
+ REG_WRITE(ah, AR_RTC_RESET, 1);
+ udelay(10);
+