Skip to content
Snippets Groups Projects
Commit 7bc0c78e authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

Update OpenWrt

This now includes the previously added patch.
parent e0ade630
No related branches found
No related tags found
No related merge requests found
GLUON_FEEDS='openwrt gluon routing luci'
OPENWRT_REPO=git://git.openwrt.org/12.09/openwrt.git
OPENWRT_COMMIT=be9a71c6f07634f2570741b453055c6108500569
OPENWRT_COMMIT=b0a05d4f7c194c7db43c3c5f1818449e4ecfe653
PACKAGES_OPENWRT_REPO=git://git.openwrt.org/12.09/packages.git
PACKAGES_OPENWRT_COMMIT=381bbea65989b63e30f43ab87e51b042325bbff3
......
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Tue, 15 Jul 2014 20:08:17 +0200
Subject: ath9k: add experimental patch
diff --git a/package/mac80211/patches/950-ath9k-txq.patch b/package/mac80211/patches/950-ath9k-txq.patch
new file mode 100644
index 0000000..0aa3149
--- /dev/null
+++ b/package/mac80211/patches/950-ath9k-txq.patch
@@ -0,0 +1,69 @@
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -185,7 +185,8 @@ struct ath_atx_ac {
+
+ struct ath_frame_info {
+ struct ath_buf *bf;
+- int framelen;
++ u16 framelen;
++ s8 txq;
+ enum ath9k_key_type keytype;
+ u8 keyix;
+ u8 rtscts_rate;
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -147,15 +147,13 @@ static void ath_set_rates(struct ieee802
+ static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq,
+ struct sk_buff *skb)
+ {
+- int q;
+-
+- q = skb_get_queue_mapping(skb);
+- if (txq == sc->tx.uapsdq)
+- txq = sc->tx.txq_map[q];
++ struct ath_frame_info *fi = get_frame_info(skb);
++ int q = fi->txq;
+
+- if (txq != sc->tx.txq_map[q])
++ if (q < 0)
+ return;
+
++ txq = sc->tx.txq_map[q];
+ if (WARN_ON(--txq->pending_frames < 0))
+ txq->pending_frames = 0;
+
+@@ -1999,6 +1997,7 @@ static void setup_frame_info(struct ieee
+ an = (struct ath_node *) sta->drv_priv;
+
+ memset(fi, 0, sizeof(*fi));
++ fi->txq = -1;
+ if (hw_key)
+ fi->keyix = hw_key->hw_key_idx;
+ else if (an && ieee80211_is_data(hdr->frame_control) && an->ps_key > 0)
+@@ -2150,6 +2149,7 @@ int ath_tx_start(struct ieee80211_hw *hw
+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+ struct ieee80211_sta *sta = txctl->sta;
+ struct ieee80211_vif *vif = info->control.vif;
++ struct ath_frame_info *fi = get_frame_info(skb);
+ struct ath_softc *sc = hw->priv;
+ struct ath_txq *txq = txctl->txq;
+ struct ath_atx_tid *tid = NULL;
+@@ -2170,11 +2170,13 @@ int ath_tx_start(struct ieee80211_hw *hw
+ q = skb_get_queue_mapping(skb);
+
+ ath_txq_lock(sc, txq);
+- if (txq == sc->tx.txq_map[q] &&
+- ++txq->pending_frames > sc->tx.txq_max_pending[q] &&
+- !txq->stopped) {
+- ieee80211_stop_queue(sc->hw, q);
+- txq->stopped = true;
++ if (txq == sc->tx.txq_map[q]) {
++ fi->txq = q;
++ if (++txq->pending_frames > sc->tx.txq_max_pending[q] &&
++ !txq->stopped) {
++ ieee80211_stop_queue(sc->hw, q);
++ txq->stopped = true;
++ }
+ }
+
+ if (txctl->an && ieee80211_is_data_present(hdr->frame_control))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment