parent
8989c682c4
commit
d715665b9b
@ -1,28 +0,0 @@ |
||||
From 3c02b107ec11e14ef21e7a444ad83f0ef1e68f79 Mon Sep 17 00:00:00 2001
|
||||
From: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Date: Sun, 13 Jun 2010 20:41:55 +0200
|
||||
Subject: [PATCH 1/2] compat: backport dma_set_coherent_mask
|
||||
|
||||
|
||||
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
---
|
||||
include/linux/compat-2.6.34.h | 8 ++++++++
|
||||
1 files changed, 8 insertions(+), 0 deletions(-)
|
||||
|
||||
--- a/include/linux/compat-2.6.34.h
|
||||
+++ b/include/linux/compat-2.6.34.h
|
||||
@@ -216,6 +216,14 @@ do { \
|
||||
#define dma_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
|
||||
#endif
|
||||
|
||||
+static inline int dma_set_coherent_mask(struct device *dev, u64 mask)
|
||||
+{
|
||||
+ if (!dma_supported(dev, mask))
|
||||
+ return -EIO;
|
||||
+ dev->coherent_dma_mask = mask;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,34)) */
|
||||
|
||||
#endif /* LINUX_26_34_COMPAT_H */
|
@ -0,0 +1,62 @@ |
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -328,6 +328,7 @@ static void ath_tx_complete_aggr(struct
|
||||
u32 ba[WME_BA_BMP_SIZE >> 5];
|
||||
int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0;
|
||||
bool rc_update = true;
|
||||
+ struct ieee80211_tx_rate rates[4];
|
||||
|
||||
skb = bf->bf_mpdu;
|
||||
hdr = (struct ieee80211_hdr *)skb->data;
|
||||
@@ -335,6 +336,8 @@ static void ath_tx_complete_aggr(struct
|
||||
tx_info = IEEE80211_SKB_CB(skb);
|
||||
hw = bf->aphy->hw;
|
||||
|
||||
+ memcpy(rates, tx_info->control.rates, sizeof(rates));
|
||||
+
|
||||
rcu_read_lock();
|
||||
|
||||
/* XXX: use ieee80211_find_sta! */
|
||||
@@ -375,6 +378,9 @@ static void ath_tx_complete_aggr(struct
|
||||
txfail = txpending = 0;
|
||||
bf_next = bf->bf_next;
|
||||
|
||||
+ skb = bf->bf_mpdu;
|
||||
+ tx_info = IEEE80211_SKB_CB(skb);
|
||||
+
|
||||
if (ATH_BA_ISSET(ba, ATH_BA_INDEX(seq_st, bf->bf_seqno))) {
|
||||
/* transmit completion, subframe is
|
||||
* acked by block ack */
|
||||
@@ -428,6 +434,7 @@ static void ath_tx_complete_aggr(struct
|
||||
spin_unlock_bh(&txq->axq_lock);
|
||||
|
||||
if (rc_update && (acked_cnt == 1 || txfail_cnt == 1)) {
|
||||
+ memcpy(tx_info->control.rates, rates, sizeof(rates));
|
||||
ath_tx_rc_status(bf, ts, nbad, txok, true);
|
||||
rc_update = false;
|
||||
} else {
|
||||
@@ -2014,7 +2021,7 @@ static void ath_tx_rc_status(struct ath_
|
||||
tx_info->status.rates[i].idx = -1;
|
||||
}
|
||||
|
||||
- tx_info->status.rates[tx_rateindex].count = bf->bf_retries + 1;
|
||||
+ tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
|
||||
}
|
||||
|
||||
static void ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
|
||||
@@ -2125,7 +2132,6 @@ static void ath_tx_processq(struct ath_s
|
||||
* This frame is sent out as a single frame.
|
||||
* Use hardware retry status for this frame.
|
||||
*/
|
||||
- bf->bf_retries = ts.ts_longretry;
|
||||
if (ts.ts_status & ATH9K_TXERR_XRETRY)
|
||||
bf->bf_state.bf_type |= BUF_XRETRY;
|
||||
ath_tx_rc_status(bf, &ts, 0, txok, true);
|
||||
@@ -2255,7 +2261,6 @@ void ath_tx_edma_tasklet(struct ath_soft
|
||||
}
|
||||
|
||||
if (!bf_isampdu(bf)) {
|
||||
- bf->bf_retries = txs.ts_longretry;
|
||||
if (txs.ts_status & ATH9K_TXERR_XRETRY)
|
||||
bf->bf_state.bf_type |= BUF_XRETRY;
|
||||
ath_tx_rc_status(bf, &txs, 0, txok, true);
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@ |
||||
--- a/drivers/net/wireless/ath/ath9k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/pci.c
|
||||
@@ -29,6 +29,7 @@ static DEFINE_PCI_DEVICE_TABLE(ath_pci_i
|
||||
{ PCI_VDEVICE(ATHEROS, 0x002C) }, /* PCI-E 802.11n bonded out */
|
||||
{ PCI_VDEVICE(ATHEROS, 0x002D) }, /* PCI */
|
||||
{ PCI_VDEVICE(ATHEROS, 0x002E) }, /* PCI-E */
|
||||
+ { PCI_VDEVICE(ATHEROS, 0x0030) }, /* PCI-E AR9300 */
|
||||
{ 0 }
|
||||
};
|
||||
|
Loading…
Reference in new issue