mac80211: update to wireless-testing 2010-06-15
SVN-Revision: 21943
This commit is contained in:
parent
8989c682c4
commit
d715665b9b
11 changed files with 77 additions and 1946 deletions
|
@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=2010-06-10
|
PKG_VERSION:=2010-06-15
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||||
# http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
|
# http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
|
||||||
# http://wireless.kernel.org/download/compat-wireless-2.6
|
# http://wireless.kernel.org/download/compat-wireless-2.6
|
||||||
PKG_MD5SUM:=4074469689f7a5a0d2e038f2b5dad0bb
|
PKG_MD5SUM:=7d18106ca78213bf9ce27406cd79458c
|
||||||
|
|
||||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
||||||
|
|
|
@ -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 */
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "ath9k.h"
|
#include "ath9k.h"
|
||||||
|
|
||||||
static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = {
|
static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = {
|
||||||
@@ -52,21 +53,36 @@ static void ath_pci_read_cachesize(struc
|
@@ -53,21 +54,36 @@ static void ath_pci_read_cachesize(struc
|
||||||
|
|
||||||
static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data)
|
static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||||
@@ -556,6 +556,7 @@ static int ath9k_init_softc(u16 devid, s
|
@@ -534,6 +534,7 @@ static int ath9k_init_softc(u16 devid, s
|
||||||
{
|
{
|
||||||
struct ath_hw *ah = NULL;
|
struct ath_hw *ah = NULL;
|
||||||
struct ath_common *common;
|
struct ath_common *common;
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
int ret = 0, i;
|
int ret = 0, i;
|
||||||
int csz = 0;
|
int csz = 0;
|
||||||
|
|
||||||
@@ -567,6 +568,10 @@ static int ath9k_init_softc(u16 devid, s
|
@@ -545,6 +546,10 @@ static int ath9k_init_softc(u16 devid, s
|
||||||
ah->hw_version.subsysid = subsysid;
|
ah->hw_version.subsysid = subsysid;
|
||||||
sc->sc_ah = ah;
|
sc->sc_ah = ah;
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
common->bus_ops = bus_ops;
|
common->bus_ops = bus_ops;
|
||||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||||
@@ -423,10 +423,6 @@ static void ath9k_hw_init_defaults(struc
|
@@ -421,10 +421,6 @@ static void ath9k_hw_init_defaults(struc
|
||||||
ah->hw_version.magic = AR5416_MAGIC;
|
ah->hw_version.magic = AR5416_MAGIC;
|
||||||
ah->hw_version.subvendorid = 0;
|
ah->hw_version.subvendorid = 0;
|
||||||
|
|
||||||
|
@ -40,5 +40,5 @@
|
||||||
- ah->ah_flags = AH_USE_EEPROM;
|
- ah->ah_flags = AH_USE_EEPROM;
|
||||||
-
|
-
|
||||||
ah->atim_window = 0;
|
ah->atim_window = 0;
|
||||||
ah->sta_id1_defaults = AR_STA_ID1_CRPT_MIC_ENABLE;
|
ah->sta_id1_defaults =
|
||||||
ah->beacon_interval = 100;
|
AR_STA_ID1_CRPT_MIC_ENABLE |
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||||
@@ -1398,7 +1398,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
@@ -1401,7 +1401,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||||
|
|
||||||
if (ah->config.rx_intr_mitigation) {
|
if (ah->config.rx_intr_mitigation) {
|
||||||
REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
|
REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "ath9k.h"
|
#include "ath9k.h"
|
||||||
|
|
||||||
static char *dev_info = "ath9k";
|
static char *dev_info = "ath9k";
|
||||||
@@ -571,6 +572,8 @@ static int ath9k_init_softc(u16 devid, s
|
@@ -549,6 +550,8 @@ static int ath9k_init_softc(u16 devid, s
|
||||||
pdata = (struct ath9k_platform_data *) sc->dev->platform_data;
|
pdata = (struct ath9k_platform_data *) sc->dev->platform_data;
|
||||||
if (!pdata)
|
if (!pdata)
|
||||||
ah->ah_flags |= AH_USE_EEPROM;
|
ah->ah_flags |= AH_USE_EEPROM;
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
common = ath9k_hw_common(ah);
|
common = ath9k_hw_common(ah);
|
||||||
common->ops = &ath9k_common_ops;
|
common->ops = &ath9k_common_ops;
|
||||||
@@ -693,6 +696,24 @@ void ath9k_set_hw_capab(struct ath_softc
|
@@ -671,6 +674,24 @@ void ath9k_set_hw_capab(struct ath_softc
|
||||||
SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
|
SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
|
int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
|
||||||
const struct ath_bus_ops *bus_ops)
|
const struct ath_bus_ops *bus_ops)
|
||||||
{
|
{
|
||||||
@@ -711,6 +732,9 @@ int ath9k_init_device(u16 devid, struct
|
@@ -689,6 +710,9 @@ int ath9k_init_device(u16 devid, struct
|
||||||
common = ath9k_hw_common(ah);
|
common = ath9k_hw_common(ah);
|
||||||
ath9k_set_hw_capab(sc, hw);
|
ath9k_set_hw_capab(sc, hw);
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
ath9k_reg_notifier);
|
ath9k_reg_notifier);
|
||||||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||||
@@ -583,6 +583,8 @@ struct ath_softc {
|
@@ -591,6 +591,8 @@ struct ath_softc {
|
||||||
|
|
||||||
int beacon_interval;
|
int beacon_interval;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
|
sc->sc_ah->led_pin = ATH_LED_PIN_DEF;
|
||||||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||||
@@ -458,6 +458,7 @@ void ath9k_btcoex_timer_pause(struct ath
|
@@ -463,6 +463,7 @@ void ath9k_btcoex_timer_pause(struct ath
|
||||||
|
|
||||||
#define ATH_LED_PIN_DEF 1
|
#define ATH_LED_PIN_DEF 1
|
||||||
#define ATH_LED_PIN_9287 8
|
#define ATH_LED_PIN_9287 8
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||||
@@ -677,7 +677,11 @@ void ath9k_set_hw_capab(struct ath_softc
|
@@ -655,7 +655,11 @@ void ath9k_set_hw_capab(struct ath_softc
|
||||||
hw->sta_data_size = sizeof(struct ath_node);
|
hw->sta_data_size = sizeof(struct ath_node);
|
||||||
hw->vif_data_size = sizeof(struct ath_vif);
|
hw->vif_data_size = sizeof(struct ath_vif);
|
||||||
|
|
||||||
|
|
|
@ -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 a new issue