aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/572-ath9k_multicast_node.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/572-ath9k_multicast_node.patch')
-rw-r--r--package/kernel/mac80211/patches/572-ath9k_multicast_node.patch108
1 files changed, 0 insertions, 108 deletions
diff --git a/package/kernel/mac80211/patches/572-ath9k_multicast_node.patch b/package/kernel/mac80211/patches/572-ath9k_multicast_node.patch
deleted file mode 100644
index 28ec6ee9db..0000000000
--- a/package/kernel/mac80211/patches/572-ath9k_multicast_node.patch
+++ /dev/null
@@ -1,108 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -265,6 +265,7 @@ struct ath_node {
- u8 mpdudensity;
-
- bool sleeping;
-+ bool no_ps_filter;
-
- #if defined(CPTCFG_MAC80211_DEBUGFS) && defined(CPTCFG_ATH9K_DEBUGFS)
- struct dentry *node_stat;
-@@ -364,6 +365,7 @@ void ath9k_release_buffered_frames(struc
- /********/
-
- struct ath_vif {
-+ struct ath_node mcast_node;
- int av_bslot;
- bool primary_sta_vif;
- __le64 tsf_adjust; /* TSF adjustment for staggered beacons */
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -971,6 +971,8 @@ static int ath9k_add_interface(struct ie
- struct ath_softc *sc = hw->priv;
- struct ath_hw *ah = sc->sc_ah;
- struct ath_common *common = ath9k_hw_common(ah);
-+ struct ath_vif *avp = (void *)vif->drv_priv;
-+ struct ath_node *an = &avp->mcast_node;
-
- mutex_lock(&sc->mutex);
-
-@@ -984,6 +986,12 @@ static int ath9k_add_interface(struct ie
- if (ath9k_uses_beacons(vif->type))
- ath9k_beacon_assign_slot(sc, vif);
-
-+ an->sc = sc;
-+ an->sta = NULL;
-+ an->vif = vif;
-+ an->no_ps_filter = true;
-+ ath_tx_node_init(sc, an);
-+
- mutex_unlock(&sc->mutex);
- return 0;
- }
-@@ -1021,6 +1029,7 @@ static void ath9k_remove_interface(struc
- {
- struct ath_softc *sc = hw->priv;
- struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-+ struct ath_vif *avp = (void *)vif->drv_priv;
-
- ath_dbg(common, CONFIG, "Detach Interface\n");
-
-@@ -1035,6 +1044,8 @@ static void ath9k_remove_interface(struc
- ath9k_calculate_summary_state(hw, NULL);
- ath9k_ps_restore(sc);
-
-+ ath_tx_node_cleanup(sc, &avp->mcast_node);
-+
- mutex_unlock(&sc->mutex);
- }
-
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -135,6 +135,9 @@ static struct ath_frame_info *get_frame_
-
- static void ath_send_bar(struct ath_atx_tid *tid, u16 seqno)
- {
-+ if (!tid->an->sta)
-+ return;
-+
- ieee80211_send_bar(tid->an->vif, tid->an->sta->addr, tid->tidno,
- seqno << IEEE80211_SEQ_SEQ_SHIFT);
- }
-@@ -1354,7 +1357,7 @@ static bool ath_tx_sched_aggr(struct ath
- if (list_empty(&bf_q))
- return false;
-
-- if (tid->ac->clear_ps_filter) {
-+ if (tid->ac->clear_ps_filter || tid->an->no_ps_filter) {
- tid->ac->clear_ps_filter = false;
- tx_info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT;
- }
-@@ -1544,7 +1547,7 @@ void ath9k_release_buffered_frames(struc
- sent++;
- TX_STAT_INC(txq->axq_qnum, a_queued_hw);
-
-- if (!ath_tid_has_buffered(tid))
-+ if (an->sta && !ath_tid_has_buffered(tid))
- ieee80211_sta_set_buffered(an->sta, i, false);
- }
- ath_txq_unlock_complete(sc, tid->ac->txq);
-@@ -2076,6 +2079,7 @@ static int ath_tx_prepare(struct ieee802
- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
- struct ieee80211_sta *sta = txctl->sta;
- struct ieee80211_vif *vif = info->control.vif;
-+ struct ath_vif *avp;
- struct ath_softc *sc = hw->priv;
- int frmlen = skb->len + FCS_LEN;
- int padpos, padsize;
-@@ -2083,6 +2087,10 @@ static int ath_tx_prepare(struct ieee802
- /* NOTE: sta can be NULL according to net/mac80211.h */
- if (sta)
- txctl->an = (struct ath_node *)sta->drv_priv;
-+ else if (vif && ieee80211_is_data(hdr->frame_control)) {
-+ avp = (void *)vif->drv_priv;
-+ txctl->an = &avp->mcast_node;
-+ }
-
- if (info->control.hw_key)
- frmlen += info->control.hw_key->icv_len;