+--- a/drivers/net/wireless/ath/ath9k/beacon.c
++++ b/drivers/net/wireless/ath/ath9k/beacon.c
+@@ -204,9 +204,15 @@ static struct ath_buf *ath9k_beacon_gene
+ }
+
+ ath9k_beacon_setup(sc, vif, bf, info->control.rates[0].idx);
++ sc->beacon.cabq_dur = 0;
+
+ while (skb) {
+ ath9k_tx_cabq(hw, skb);
++
++ if (sc->beacon.cabq_dur / 1000 - 1 >
++ sc->cur_beacon_conf.beacon_interval / ATH_BCBUF)
++ break;
++
+ skb = ieee80211_get_buffered_bc(hw, vif);
+ }
+