aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/571-ath9k_send_bar_fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/571-ath9k_send_bar_fix.patch')
-rw-r--r--package/mac80211/patches/571-ath9k_send_bar_fix.patch157
1 files changed, 0 insertions, 157 deletions
diff --git a/package/mac80211/patches/571-ath9k_send_bar_fix.patch b/package/mac80211/patches/571-ath9k_send_bar_fix.patch
deleted file mode 100644
index aa162b6547..0000000000
--- a/package/mac80211/patches/571-ath9k_send_bar_fix.patch
+++ /dev/null
@@ -1,157 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -246,6 +246,7 @@ struct ath_atx_tid {
- };
-
- struct ath_node {
-+ struct ieee80211_vif *vif;
- #ifdef CONFIG_ATH9K_DEBUGFS
- struct list_head list; /* for sc->nodes */
- struct ieee80211_sta *sta; /* station struct we're part of */
-@@ -274,7 +275,6 @@ struct ath_tx_control {
-
- #define ATH_TX_ERROR 0x01
- #define ATH_TX_XRETRY 0x02
--#define ATH_TX_BAR 0x04
-
- /**
- * @txq_map: Index is mac80211 queue number. This is
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1801,6 +1801,7 @@ static int ath9k_sta_add(struct ieee8021
- struct ieee80211_key_conf ps_key = { };
-
- ath_node_attach(sc, sta);
-+ an->vif = vif;
-
- if (vif->type != NL80211_IFTYPE_AP &&
- vif->type != NL80211_IFTYPE_AP_VLAN)
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -51,7 +51,7 @@ static void ath_tx_send_normal(struct at
- struct list_head *bf_head);
- static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
- struct ath_txq *txq, struct list_head *bf_q,
-- struct ath_tx_status *ts, int txok, int sendbar);
-+ struct ath_tx_status *ts, int txok);
- static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
- struct list_head *head, bool internal);
- static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, int len);
-@@ -166,7 +166,7 @@ static void ath_tx_flush_tid(struct ath_
- fi = get_frame_info(bf->bf_mpdu);
- if (fi->retries) {
- ath_tx_update_baw(sc, tid, fi->seqno);
-- ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 1);
-+ ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0);
- } else {
- ath_tx_send_normal(sc, txq, NULL, &bf_head);
- }
-@@ -238,7 +238,7 @@ static void ath_tid_drain(struct ath_sof
- ath_tx_update_baw(sc, tid, fi->seqno);
-
- spin_unlock(&txq->axq_lock);
-- ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
-+ ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0);
- spin_lock(&txq->axq_lock);
- }
-
-@@ -381,8 +381,7 @@ static void ath_tx_complete_aggr(struct
- list_move_tail(&bf->list, &bf_head);
-
- ath_tx_rc_status(sc, bf, ts, 1, 1, 0, false);
-- ath_tx_complete_buf(sc, bf, txq, &bf_head, ts,
-- 0, 0);
-+ ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, 0);
-
- bf = bf_next;
- }
-@@ -426,7 +425,7 @@ static void ath_tx_complete_aggr(struct
-
- ath_tx_count_frames(sc, bf, ts, txok, &nframes, &nbad);
- while (bf) {
-- txfail = txpending = sendbar = 0;
-+ txfail = txpending = 0;
- bf_next = bf->bf_next;
-
- skb = bf->bf_mpdu;
-@@ -489,7 +488,7 @@ static void ath_tx_complete_aggr(struct
- }
-
- ath_tx_complete_buf(sc, bf, txq, &bf_head, ts,
-- !txfail, sendbar);
-+ !txfail);
- } else {
- /* retry the un-acked ones */
- ath9k_hw_set_clrdmask(sc->sc_ah, bf->bf_desc, false);
-@@ -514,7 +513,7 @@ static void ath_tx_complete_aggr(struct
- nbad, 0, false);
- ath_tx_complete_buf(sc, bf, txq,
- &bf_head,
-- ts, 0, 0);
-+ ts, 0);
- break;
- }
-
-@@ -564,6 +563,9 @@ static void ath_tx_complete_aggr(struct
- }
- }
-
-+ if (sendbar || (tid->state & AGGR_CLEANUP))
-+ ieee80211_send_bar(an->vif, sta->addr, tidno, tid->seq_start << 4);
-+
- rcu_read_unlock();
-
- if (needreset)
-@@ -900,6 +902,7 @@ void ath_tx_aggr_stop(struct ath_softc *
- spin_unlock_bh(&txq->axq_lock);
-
- ath_tx_flush_tid(sc, txtid);
-+ ieee80211_send_bar(an->vif, sta->addr, tid, txtid->seq_start << 4);
- }
-
- bool ath_tx_aggr_sleep(struct ath_softc *sc, struct ath_node *an)
-@@ -1178,7 +1181,7 @@ static void ath_drain_txq_list(struct at
- ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, 0,
- retry_tx);
- else
-- ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
-+ ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0);
- spin_lock_bh(&txq->axq_lock);
- }
- }
-@@ -1885,9 +1888,6 @@ static void ath_tx_complete(struct ath_s
-
- ath_dbg(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb);
-
-- if (tx_flags & ATH_TX_BAR)
-- tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
--
- if (!(tx_flags & (ATH_TX_ERROR | ATH_TX_XRETRY))) {
- /* Frame was ACKed */
- tx_info->flags |= IEEE80211_TX_STAT_ACK;
-@@ -1932,15 +1932,12 @@ static void ath_tx_complete(struct ath_s
-
- static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
- struct ath_txq *txq, struct list_head *bf_q,
-- struct ath_tx_status *ts, int txok, int sendbar)
-+ struct ath_tx_status *ts, int txok)
- {
- struct sk_buff *skb = bf->bf_mpdu;
- unsigned long flags;
- int tx_flags = 0;
-
-- if (sendbar)
-- tx_flags = ATH_TX_BAR;
--
- if (!txok) {
- tx_flags |= ATH_TX_ERROR;
-
-@@ -2056,7 +2053,7 @@ static void ath_tx_process_buffer(struct
- if (ts->ts_status & ATH9K_TXERR_XRETRY)
- bf->bf_state.bf_type |= BUF_XRETRY;
- ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok, true);
-- ath_tx_complete_buf(sc, bf, txq, bf_head, ts, txok, 0);
-+ ath_tx_complete_buf(sc, bf, txq, bf_head, ts, txok);
- } else
- ath_tx_complete_aggr(sc, txq, bf, bf_head, ts, txok, true);
-