aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/542-ath9k_remove_bf_aphy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/542-ath9k_remove_bf_aphy.patch')
-rw-r--r--package/mac80211/patches/542-ath9k_remove_bf_aphy.patch170
1 files changed, 170 insertions, 0 deletions
diff --git a/package/mac80211/patches/542-ath9k_remove_bf_aphy.patch b/package/mac80211/patches/542-ath9k_remove_bf_aphy.patch
new file mode 100644
index 0000000000..0238fab253
--- /dev/null
+++ b/package/mac80211/patches/542-ath9k_remove_bf_aphy.patch
@@ -0,0 +1,170 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -57,8 +57,9 @@ static void ath_tx_complete_buf(struct a
+ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
+ struct list_head *head);
+ static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, int len);
+-static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
+- int nframes, int nbad, int txok, bool update_rc);
++static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
++ struct ath_tx_status *ts, int nframes, int nbad,
++ int txok, bool update_rc);
+ static void ath_tx_update_baw(struct ath_softc *sc, struct ath_atx_tid *tid,
+ int seqno);
+
+@@ -297,7 +298,6 @@ static struct ath_buf* ath_clone_txbuf(s
+
+ ATH_TXBUF_RESET(tbf);
+
+- tbf->aphy = bf->aphy;
+ tbf->bf_mpdu = bf->bf_mpdu;
+ tbf->bf_buf_addr = bf->bf_buf_addr;
+ memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len);
+@@ -345,7 +345,7 @@ static void ath_tx_complete_aggr(struct
+ struct ath_node *an = NULL;
+ struct sk_buff *skb;
+ struct ieee80211_sta *sta;
+- struct ieee80211_hw *hw;
++ struct ieee80211_hw *hw = sc->hw;
+ struct ieee80211_hdr *hdr;
+ struct ieee80211_tx_info *tx_info;
+ struct ath_atx_tid *tid = NULL;
+@@ -364,7 +364,6 @@ static void ath_tx_complete_aggr(struct
+ hdr = (struct ieee80211_hdr *)skb->data;
+
+ tx_info = IEEE80211_SKB_CB(skb);
+- hw = bf->aphy->hw;
+
+ memcpy(rates, tx_info->control.rates, sizeof(rates));
+
+@@ -383,7 +382,7 @@ static void ath_tx_complete_aggr(struct
+ !bf->bf_stale || bf_next != NULL)
+ list_move_tail(&bf->list, &bf_head);
+
+- ath_tx_rc_status(bf, ts, 1, 1, 0, false);
++ ath_tx_rc_status(sc, bf, ts, 1, 1, 0, false);
+ ath_tx_complete_buf(sc, bf, txq, &bf_head, ts,
+ 0, 0);
+
+@@ -489,10 +488,10 @@ static void ath_tx_complete_aggr(struct
+
+ if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) {
+ memcpy(tx_info->control.rates, rates, sizeof(rates));
+- ath_tx_rc_status(bf, ts, nframes, nbad, txok, true);
++ ath_tx_rc_status(sc, bf, ts, nframes, nbad, txok, true);
+ rc_update = false;
+ } else {
+- ath_tx_rc_status(bf, ts, nframes, nbad, txok, false);
++ ath_tx_rc_status(sc, bf, ts, nframes, nbad, txok, false);
+ }
+
+ ath_tx_complete_buf(sc, bf, txq, &bf_head, ts,
+@@ -516,7 +515,7 @@ static void ath_tx_complete_aggr(struct
+
+ bf->bf_state.bf_type |=
+ BUF_XRETRY;
+- ath_tx_rc_status(bf, ts, nframes,
++ ath_tx_rc_status(sc, bf, ts, nframes,
+ nbad, 0, false);
+ ath_tx_complete_buf(sc, bf, txq,
+ &bf_head,
+@@ -1677,7 +1676,6 @@ static struct ath_buf *ath_tx_setup_buff
+
+ ATH_TXBUF_RESET(bf);
+
+- bf->aphy = aphy;
+ bf->bf_flags = setup_tx_flags(skb);
+ bf->bf_mpdu = skb;
+
+@@ -1831,8 +1829,7 @@ int ath_tx_start(struct ieee80211_hw *hw
+ /*****************/
+
+ static void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
+- struct ath_wiphy *aphy, int tx_flags, int ftype,
+- struct ath_txq *txq)
++ int tx_flags, int ftype, struct ath_txq *txq)
+ {
+ struct ieee80211_hw *hw = sc->hw;
+ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
+@@ -1842,9 +1839,6 @@ static void ath_tx_complete(struct ath_s
+
+ ath_dbg(common, ATH_DBG_XMIT, "TX complete: skb: %p\n", skb);
+
+- if (aphy)
+- hw = aphy->hw;
+-
+ if (tx_flags & ATH_TX_BAR)
+ tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
+
+@@ -1918,7 +1912,7 @@ static void ath_tx_complete_buf(struct a
+ complete(&sc->paprd_complete);
+ } else {
+ ath_debug_stat_tx(sc, bf, ts);
+- ath_tx_complete(sc, skb, bf->aphy, tx_flags,
++ ath_tx_complete(sc, skb, tx_flags,
+ bf->bf_state.bfs_ftype, txq);
+ }
+ /* At this point, skb (bf->bf_mpdu) is consumed...make sure we don't
+@@ -1934,14 +1928,14 @@ static void ath_tx_complete_buf(struct a
+ spin_unlock_irqrestore(&sc->tx.txbuflock, flags);
+ }
+
+-static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
+- int nframes, int nbad, int txok, bool update_rc)
++static void ath_tx_rc_status(struct ath_softc *sc, struct ath_buf *bf,
++ struct ath_tx_status *ts, int nframes, int nbad,
++ int txok, bool update_rc)
+ {
+ struct sk_buff *skb = bf->bf_mpdu;
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
+ struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
+- struct ieee80211_hw *hw = bf->aphy->hw;
+- struct ath_softc *sc = bf->aphy->sc;
++ struct ieee80211_hw *hw = sc->hw;
+ struct ath_hw *ah = sc->sc_ah;
+ u8 i, tx_rateindex;
+
+@@ -2077,7 +2071,7 @@ static void ath_tx_processq(struct ath_s
+ */
+ if (ts.ts_status & ATH9K_TXERR_XRETRY)
+ bf->bf_state.bf_type |= BUF_XRETRY;
+- ath_tx_rc_status(bf, &ts, 1, txok ? 0 : 1, txok, true);
++ ath_tx_rc_status(sc, bf, &ts, 1, txok ? 0 : 1, txok, true);
+ }
+
+ if (bf_isampdu(bf))
+@@ -2196,7 +2190,7 @@ void ath_tx_edma_tasklet(struct ath_soft
+ if (!bf_isampdu(bf)) {
+ if (txs.ts_status & ATH9K_TXERR_XRETRY)
+ bf->bf_state.bf_type |= BUF_XRETRY;
+- ath_tx_rc_status(bf, &txs, 1, txok ? 0 : 1, txok, true);
++ ath_tx_rc_status(sc, bf, &txs, 1, txok ? 0 : 1, txok, true);
+ }
+
+ if (bf_isampdu(bf))
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -32,6 +32,7 @@
+ */
+
+ struct ath_node;
++struct ath_wiphy;
+
+ /* Macro to expand scalars to 64-bit objects */
+
+@@ -233,7 +234,6 @@ struct ath_buf {
+ bool bf_stale;
+ u16 bf_flags;
+ struct ath_buf_state bf_state;
+- struct ath_wiphy *aphy;
+ };
+
+ struct ath_atx_tid {
+@@ -550,7 +550,6 @@ struct ath_ant_comb {
+ #define PS_WAIT_FOR_TX_ACK BIT(3)
+ #define PS_BEACON_SYNC BIT(4)
+
+-struct ath_wiphy;
+ struct ath_rate_table;
+
+ struct ath9k_vif_iter_data {