1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-24 22:35:11 +02:00

mac80211: update to wireless-testing 2010-03-03

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20032 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2010-03-07 16:29:28 +00:00
parent 34cb0380a2
commit cdd6a4a8bc
13 changed files with 11 additions and 119 deletions

View File

@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211 PKG_NAME:=mac80211
PKG_VERSION:=2010-02-16 PKG_VERSION:=2010-03-03
PKG_RELEASE:=3 PKG_RELEASE:=3
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:=190060a705c2b78e9b0bc873a8803b37 PKG_MD5SUM:=af8da65ca4c25b1b69e3d2896d2bbb2f
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)

View File

@ -53,7 +53,7 @@
#include <pcmcia/cs_types.h> #include <pcmcia/cs_types.h>
#include <pcmcia/cistpl.h> #include <pcmcia/cistpl.h>
#include <pcmcia/ds.h> #include <pcmcia/ds.h>
@@ -68,9 +68,9 @@ static inline struct sk_buff *netdev_all @@ -70,9 +70,9 @@ static inline struct sk_buff *netdev_all
return skb; return skb;
} }

View File

@ -1,6 +1,6 @@
--- a/net/wireless/nl80211.c --- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c
@@ -5662,7 +5662,11 @@ int nl80211_send_action(struct cfg80211_ @@ -5789,7 +5789,11 @@ int nl80211_send_action(struct cfg80211_
return err; return err;
} }

View File

@ -7,7 +7,7 @@
+#include <linux/ath9k_platform.h> +#include <linux/ath9k_platform.h>
#include "ath9k.h" #include "ath9k.h"
static struct pci_device_id ath_pci_id_table[] __devinitdata = { static DEFINE_PCI_DEVICE_TABLE(ath_pci_id_table) = {
@@ -52,21 +53,36 @@ static void ath_pci_read_cachesize(struc @@ -52,21 +53,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)

View File

@ -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
@@ -2103,7 +2103,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st @@ -2113,7 +2113,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);

View File

@ -1,55 +0,0 @@
--- a/drivers/net/wireless/ath/ath9k/rc.c
+++ b/drivers/net/wireless/ath/ath9k/rc.c
@@ -668,7 +668,7 @@ static void ath_get_rate(void *priv, str
struct ieee80211_tx_rate *rates = tx_info->control.rates;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
__le16 fc = hdr->frame_control;
- u8 try_per_rate, i = 0, rix, nrix;
+ u8 try_per_rate, i = 0, rix;
int is_probe = 0;
if (rate_control_send_low(sta, priv_sta, txrc))
@@ -688,26 +688,25 @@ static void ath_get_rate(void *priv, str
rate_table = sc->cur_rate_table;
rix = ath_rc_get_highest_rix(sc, ath_rc_priv, rate_table, &is_probe);
- nrix = rix;
if (is_probe) {
/* set one try for probe rates. For the
* probes don't enable rts */
ath_rc_rate_set_series(rate_table, &rates[i++], txrc,
- 1, nrix, 0);
+ 1, rix, 0);
/* Get the next tried/allowed rate. No RTS for the next series
* after the probe rate
*/
- ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &nrix);
+ ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &rix);
ath_rc_rate_set_series(rate_table, &rates[i++], txrc,
- try_per_rate, nrix, 0);
+ try_per_rate, rix, 0);
tx_info->flags |= IEEE80211_TX_CTL_RATE_CTRL_PROBE;
} else {
/* Set the choosen rate. No RTS for first series entry. */
ath_rc_rate_set_series(rate_table, &rates[i++], txrc,
- try_per_rate, nrix, 0);
+ try_per_rate, rix, 0);
}
/* Fill in the other rates for multirate retry */
@@ -716,10 +715,10 @@ static void ath_get_rate(void *priv, str
if (i + 1 == 4)
try_per_rate = 8;
- ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &nrix);
+ ath_rc_get_lower_rix(rate_table, ath_rc_priv, rix, &rix);
/* All other rates in the series have RTS enabled */
ath_rc_rate_set_series(rate_table, &rates[i], txrc,
- try_per_rate, nrix, 1);
+ try_per_rate, rix, 1);
}
/*

View File

@ -1,22 +0,0 @@
--- a/drivers/net/wireless/ath/ath9k/beacon.c
+++ b/drivers/net/wireless/ath/ath9k/beacon.c
@@ -526,16 +526,13 @@ static void ath_beacon_config_ap(struct
{
u32 nexttbtt, intval;
- /* Configure the timers only when the TSF has to be reset */
-
- if (!(sc->sc_flags & SC_OP_TSF_RESET))
- return;
-
/* NB: the beacon interval is kept internally in TU's */
intval = conf->beacon_interval & ATH9K_BEACON_PERIOD;
intval /= ATH_BCBUF; /* for staggered beacons */
nexttbtt = intval;
- intval |= ATH9K_BEACON_RESET_TSF;
+
+ if (sc->sc_flags & SC_OP_TSF_RESET)
+ intval |= ATH9K_BEACON_RESET_TSF;
/*
* In AP mode we enable the beacon timers and SWBA interrupts to

View File

@ -1,31 +0,0 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1326,6 +1326,16 @@ static void ath9k_hw_override_ini(struct
* Necessary to avoid issues on AR5416 2.0
*/
REG_WRITE(ah, 0x9800 + (651 << 2), 0x11);
+
+ /*
+ * Disable RIFS search on some chips to avoid baseband
+ * hang issues.
+ */
+ if (AR_SREV_9100(ah) || AR_SREV_9160(ah)) {
+ val = REG_READ(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS);
+ val &= ~AR_PHY_RIFS_INIT_DELAY;
+ REG_WRITE(ah, AR_PHY_HEAVY_CLIP_FACTOR_RIFS, val);
+ }
}
static u32 ath9k_hw_def_ini_fixup(struct ath_hw *ah,
--- a/drivers/net/wireless/ath/ath9k/phy.h
+++ b/drivers/net/wireless/ath/ath9k/phy.h
@@ -384,6 +384,9 @@ bool ath9k_hw_set_rf_regs(struct ath_hw
#define AR_PHY_HEAVY_CLIP_ENABLE 0x99E0
+#define AR_PHY_HEAVY_CLIP_FACTOR_RIFS 0x99EC
+#define AR_PHY_RIFS_INIT_DELAY 0x03ff0000
+
#define AR_PHY_M_SLEEP 0x99f0
#define AR_PHY_REFCLKDLY 0x99f4
#define AR_PHY_REFCLKPD 0x99f8

View File

@ -13,7 +13,7 @@
mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y) mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y)
--- a/net/mac80211/main.c --- a/net/mac80211/main.c
+++ b/net/mac80211/main.c +++ b/net/mac80211/main.c
@@ -710,6 +710,10 @@ static int __init ieee80211_init(void) @@ -714,6 +714,10 @@ static int __init ieee80211_init(void)
if (ret) if (ret)
return ret; return ret;
@ -24,7 +24,7 @@
ret = rc80211_pid_init(); ret = rc80211_pid_init();
if (ret) if (ret)
goto err_pid; goto err_pid;
@@ -722,6 +726,8 @@ static int __init ieee80211_init(void) @@ -726,6 +730,8 @@ static int __init ieee80211_init(void)
err_netdev: err_netdev:
rc80211_pid_exit(); rc80211_pid_exit();
err_pid: err_pid:
@ -33,7 +33,7 @@
rc80211_minstrel_exit(); rc80211_minstrel_exit();
return ret; return ret;
@@ -730,6 +736,7 @@ static int __init ieee80211_init(void) @@ -734,6 +740,7 @@ static int __init ieee80211_init(void)
static void __exit ieee80211_exit(void) static void __exit ieee80211_exit(void)
{ {
rc80211_pid_exit(); rc80211_pid_exit();
@ -43,7 +43,7 @@
/* /*
--- a/net/mac80211/rate.h --- a/net/mac80211/rate.h
+++ b/net/mac80211/rate.h +++ b/net/mac80211/rate.h
@@ -136,6 +136,8 @@ static inline void rc80211_pid_exit(void @@ -137,6 +137,8 @@ static inline void rc80211_pid_exit(void
#ifdef CONFIG_MAC80211_RC_MINSTREL #ifdef CONFIG_MAC80211_RC_MINSTREL
extern int rc80211_minstrel_init(void); extern int rc80211_minstrel_init(void);
extern void rc80211_minstrel_exit(void); extern void rc80211_minstrel_exit(void);
@ -52,7 +52,7 @@
#else #else
static inline int rc80211_minstrel_init(void) static inline int rc80211_minstrel_init(void)
{ {
@@ -144,6 +146,13 @@ static inline int rc80211_minstrel_init( @@ -145,6 +147,13 @@ static inline int rc80211_minstrel_init(
static inline void rc80211_minstrel_exit(void) static inline void rc80211_minstrel_exit(void)
{ {
} }