X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;ds=sidebyside;f=package%2Fmac80211%2Fpatches%2F521-ath9k_aggr_race_fix.patch;fp=package%2Fmac80211%2Fpatches%2F521-ath9k_aggr_race_fix.patch;h=0000000000000000000000000000000000000000;hb=b1b81f3461afb7119ef9b42ca0b4b1d4fd71c340;hp=0dbbc13f9b601f9edebf7125960cf5f4f99421ec;hpb=9ed3e7f75ff90d84812170ccf4b03d516a943b91;p=openwrt-10.03%2F.git diff --git a/package/mac80211/patches/521-ath9k_aggr_race_fix.patch b/package/mac80211/patches/521-ath9k_aggr_race_fix.patch deleted file mode 100644 index 0dbbc13f9..000000000 --- a/package/mac80211/patches/521-ath9k_aggr_race_fix.patch +++ /dev/null @@ -1,55 +0,0 @@ ---- a/drivers/net/wireless/ath/ath9k/xmit.c -+++ b/drivers/net/wireless/ath/ath9k/xmit.c -@@ -784,17 +784,23 @@ static void ath_tx_sched_aggr(struct ath - status != ATH_AGGR_BAW_CLOSED); - } - --void ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, -- u16 tid, u16 *ssn) -+int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, -+ u16 tid, u16 *ssn) - { - struct ath_atx_tid *txtid; - struct ath_node *an; - - an = (struct ath_node *)sta->drv_priv; - txtid = ATH_AN_2_TID(an, tid); -+ -+ if (txtid->state & (AGGR_CLEANUP | AGGR_ADDBA_COMPLETE)) -+ return -EAGAIN; -+ - txtid->state |= AGGR_ADDBA_PROGRESS; - txtid->paused = true; - *ssn = txtid->seq_start; -+ -+ return 0; - } - - void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) ---- a/drivers/net/wireless/ath/ath9k/ath9k.h -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h -@@ -346,8 +346,8 @@ void ath_tx_tasklet(struct ath_softc *sc - void ath_tx_edma_tasklet(struct ath_softc *sc); - void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb); - bool ath_tx_aggr_check(struct ath_softc *sc, struct ath_node *an, u8 tidno); --void ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, -- u16 tid, u16 *ssn); -+int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, -+ u16 tid, u16 *ssn); - void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid); - void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid); - void ath9k_enable_ps(struct ath_softc *sc); ---- a/drivers/net/wireless/ath/ath9k/main.c -+++ b/drivers/net/wireless/ath/ath9k/main.c -@@ -1968,8 +1968,9 @@ static int ath9k_ampdu_action(struct iee - break; - case IEEE80211_AMPDU_TX_START: - ath9k_ps_wakeup(sc); -- ath_tx_aggr_start(sc, sta, tid, ssn); -- ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); -+ ret = ath_tx_aggr_start(sc, sta, tid, ssn); -+ if (!ret) -+ ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid); - ath9k_ps_restore(sc); - break; - case IEEE80211_AMPDU_TX_STOP: