ath9k: fix length handling of unaggregated frames (might resolve some rts/cts issues)
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 4 Dec 2013 22:59:36 +0000 (22:59 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 4 Dec 2013 22:59:36 +0000 (22:59 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38995 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/kernel/mac80211/patches/300-pending_work.patch

index 4532a03..b3583a3 100644 (file)
 -EXPORT_SYMBOL(ath9k_hw_wow_enable);
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
 -EXPORT_SYMBOL(ath9k_hw_wow_enable);
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1786,6 +1786,9 @@ bool ath_drain_all_txq(struct ath_softc 
+@@ -1276,6 +1276,10 @@ static void ath_tx_fill_desc(struct ath_
+                               if (!rts_thresh || (len > rts_thresh))
+                                       rts = true;
+                       }
++
++                      if (!aggr)
++                              len = fi->framelen;
++
+                       ath_buf_set_rate(sc, bf, &info, len, rts);
+               }
+@@ -1786,6 +1790,9 @@ bool ath_drain_all_txq(struct ath_softc 
                if (!ATH_TXQ_SETUP(sc, i))
                        continue;
  
                if (!ATH_TXQ_SETUP(sc, i))
                        continue;
  
                if (ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum))
                        npend |= BIT(i);
        }
                if (ath9k_hw_numtxpending(ah, sc->tx.txq[i].axq_qnum))
                        npend |= BIT(i);
        }
-@@ -2749,6 +2752,8 @@ void ath_tx_node_cleanup(struct ath_soft
+@@ -2749,6 +2756,8 @@ void ath_tx_node_cleanup(struct ath_soft
        }
  }
  
        }
  }
  
  int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb,
                    struct ath_tx_control *txctl)
  {
  int ath9k_tx99_send(struct ath_softc *sc, struct sk_buff *skb,
                    struct ath_tx_control *txctl)
  {
-@@ -2791,3 +2796,5 @@ int ath9k_tx99_send(struct ath_softc *sc
+@@ -2791,3 +2800,5 @@ int ath9k_tx99_send(struct ath_softc *sc
  
        return 0;
  }
  
        return 0;
  }