From 41a169115b56cee08ba5ac0c85275c91b3193830 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 31 May 2011 23:07:29 +0000 Subject: mac80211: update to wireless-testing 2011-05-27 SVN-Revision: 27071 --- .../patches/572-ath9k_tx_last_beacon.patch | 111 --------------------- 1 file changed, 111 deletions(-) delete mode 100644 package/mac80211/patches/572-ath9k_tx_last_beacon.patch (limited to 'package/mac80211/patches/572-ath9k_tx_last_beacon.patch') diff --git a/package/mac80211/patches/572-ath9k_tx_last_beacon.patch b/package/mac80211/patches/572-ath9k_tx_last_beacon.patch deleted file mode 100644 index 8b2950d654..0000000000 --- a/package/mac80211/patches/572-ath9k_tx_last_beacon.patch +++ /dev/null @@ -1,111 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -397,6 +397,9 @@ struct ath_beacon { - struct ath_descdma bdma; - struct ath_txq *cabq; - struct list_head bbuf; -+ -+ bool tx_processed; -+ bool tx_last; - }; - - void ath_beacon_tasklet(unsigned long data); ---- a/drivers/net/wireless/ath/ath9k/beacon.c -+++ b/drivers/net/wireless/ath/ath9k/beacon.c -@@ -18,6 +18,12 @@ - - #define FUDGE 2 - -+static void ath9k_reset_beacon_status(struct ath_softc *sc) -+{ -+ sc->beacon.tx_processed = false; -+ sc->beacon.tx_last = false; -+} -+ - /* - * This function will modify certain transmit queue properties depending on - * the operating mode of the station (AP or AdHoc). Parameters are AIFS -@@ -72,6 +78,8 @@ static void ath_beacon_setup(struct ath_ - struct ieee80211_supported_band *sband; - u8 rate = 0; - -+ ath9k_reset_beacon_status(sc); -+ - ds = bf->bf_desc; - flags = ATH9K_TXDESC_NOACK; - -@@ -134,6 +142,8 @@ static struct ath_buf *ath_beacon_genera - struct ieee80211_tx_info *info; - int cabq_depth; - -+ ath9k_reset_beacon_status(sc); -+ - avp = (void *)vif->drv_priv; - cabq = sc->beacon.cabq; - -@@ -644,6 +654,8 @@ static void ath_beacon_config_adhoc(stru - struct ath_common *common = ath9k_hw_common(ah); - u32 tsf, delta, intval, nexttbtt; - -+ ath9k_reset_beacon_status(sc); -+ - tsf = ath9k_hw_gettsf32(ah) + TU_TO_USEC(FUDGE); - intval = TU_TO_USEC(conf->beacon_interval & ATH9K_BEACON_PERIOD); - ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -2316,6 +2316,48 @@ static bool ath9k_tx_frames_pending(stru - return false; - } - -+int ath9k_tx_last_beacon(struct ieee80211_hw *hw) -+{ -+ struct ath_softc *sc = hw->priv; -+ struct ath_hw *ah = sc->sc_ah; -+ struct ieee80211_vif *vif; -+ struct ath_vif *avp; -+ struct ath_buf *bf; -+ struct ath_tx_status ts; -+ int status; -+ -+ if (ah->opmode != NL80211_IFTYPE_ADHOC) -+ return 0; -+ -+ vif = sc->beacon.bslot[0]; -+ if (!vif) -+ return 0; -+ -+ avp = (void *)vif->drv_priv; -+ if (!avp->is_bslot_active) -+ return 0; -+ -+ if (!sc->beacon.tx_processed) { -+ tasklet_disable(&sc->bcon_tasklet); -+ -+ bf = avp->av_bcbuf; -+ if (!bf || !bf->bf_mpdu) -+ goto skip; -+ -+ status = ath9k_hw_txprocdesc(ah, bf->bf_desc, &ts); -+ if (status == -EINPROGRESS) -+ goto skip; -+ -+ sc->beacon.tx_processed = true; -+ sc->beacon.tx_last = !(ts.ts_status & ATH9K_TXERR_MASK); -+ -+skip: -+ tasklet_enable(&sc->bcon_tasklet); -+ } -+ -+ return sc->beacon.tx_last; -+} -+ - struct ieee80211_ops ath9k_ops = { - .tx = ath9k_tx, - .start = ath9k_start, -@@ -2340,4 +2382,5 @@ struct ieee80211_ops ath9k_ops = { - .set_coverage_class = ath9k_set_coverage_class, - .flush = ath9k_flush, - .tx_frames_pending = ath9k_tx_frames_pending, -+ .tx_last_beacon = ath9k_tx_last_beacon, - }; -- cgit v1.2.3