mac80211/ath9k: improve pending patches based on review feedback
[openwrt/svn-archive/archive.git] / package / mac80211 / patches / 573-ath9k_beacon_stop.patch
index 7a9f63fc70d3496d3c94ddad947b8b59502d64c6..5574d171680b63c07d209616bf4046fbb5fd403a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/mac.c
 +++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -170,84 +170,30 @@ void ath9k_hw_abort_tx_dma(struct ath_hw
+@@ -171,84 +171,31 @@ void ath9k_hw_abort_tx_dma(struct ath_hw
  }
  EXPORT_SYMBOL(ath9k_hw_abort_tx_dma);
  
        REG_WRITE(ah, AR_Q_TXD, 1 << q);
  
        for (wait = wait_time; wait != 0; wait--) {
-               if (ath9k_hw_numtxpending(ah, q) == 0)
-                       break;
+-              if (ath9k_hw_numtxpending(ah, q) == 0)
+-                      break;
 -              udelay(ATH9K_TIME_QUANTUM);
 -      }
+-
 -      if (ath9k_hw_numtxpending(ah, q)) {
 -              ath_dbg(common, ATH_DBG_QUEUE,
 -                      "%s: Num of pending TX Frames %d on Q %d\n",
 -                                      "Failed to stop TX DMA in 100 msec after killing last frame\n");
 -                              break;
 -                      }
--                      udelay(ATH9K_TIME_QUANTUM);
++              if (wait != wait_time)
+                       udelay(ATH9K_TIME_QUANTUM);
 -              }
--
 -              REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_FORCE_CH_IDLE_HIGH);
-+              udelay(ATH9K_TIME_QUANTUM);
++              if (ath9k_hw_numtxpending(ah, q) == 0)
++                      break;
        }
  
        REG_WRITE(ah, AR_Q_TXD, 0);