diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile
index 02b355959f3651ab6e7abe9580f54d5825d84019..fffed37576730321cd03a033b05444452eefcc30 100644
--- a/package/mac80211/Makefile
+++ b/package/mac80211/Makefile
@@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=2010-02-16
+PKG_VERSION:=2010-03-03
 PKG_RELEASE:=3
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 #	http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
 #	http://wireless.kernel.org/download/compat-wireless-2.6
-PKG_MD5SUM:=190060a705c2b78e9b0bc873a8803b37
+PKG_MD5SUM:=af8da65ca4c25b1b69e3d2896d2bbb2f
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
diff --git a/package/mac80211/patches/100-disable_pcmcia_compat.patch b/package/mac80211/patches/100-disable_pcmcia_compat.patch
index f8170832f919e7946e04ed81725bfc9a188d5db3..7e5450a343cd0d09192cdda2b219b803df6f738b 100644
--- a/package/mac80211/patches/100-disable_pcmcia_compat.patch
+++ b/package/mac80211/patches/100-disable_pcmcia_compat.patch
@@ -53,7 +53,7 @@
  #include <pcmcia/cs_types.h>
  #include <pcmcia/cistpl.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;
  }
  
diff --git a/package/mac80211/patches/120-linux-2.6.30-compat.patch b/package/mac80211/patches/120-linux-2.6.30-compat.patch
index da5966e15305f655b04cc92055dd2a6cac88c7b9..179c1eb6496fb9388c7a8fb0551e5b4eda4042b0 100644
--- a/package/mac80211/patches/120-linux-2.6.30-compat.patch
+++ b/package/mac80211/patches/120-linux-2.6.30-compat.patch
@@ -1,6 +1,6 @@
 --- a/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;
  	}
  
diff --git a/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch b/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch
index e9bd604472f69ba2251b663c62cfa9c521ef6171..560f8d42ded5358d7e51c584f3ac7ca1d9d7dd50 100644
--- a/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch
+++ b/package/mac80211/patches/405-ath9k-read-eeprom-data-from-platform-data-on-pci-bus.patch
@@ -7,7 +7,7 @@
 +#include <linux/ath9k_platform.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
  
  static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data)
diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
index 1c85205d8d0482cfd99776faec87303831b5890b..0627c3877728f2042091b709d92741267c817e3f 100644
--- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
+++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
@@ -1,6 +1,6 @@
 --- a/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) {
  		REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
diff --git a/package/mac80211/patches/560-ath9k_fix_ampdu_rate_handling.patch b/package/mac80211/patches/530-ath9k_fix_ampdu_rate_handling.patch
similarity index 100%
rename from package/mac80211/patches/560-ath9k_fix_ampdu_rate_handling.patch
rename to package/mac80211/patches/530-ath9k_fix_ampdu_rate_handling.patch
diff --git a/package/mac80211/patches/530-ath9k_rc_fallback.patch b/package/mac80211/patches/530-ath9k_rc_fallback.patch
deleted file mode 100644
index 1b74eb5b1868925f9d4a41d9eb7437c8a8ffc3eb..0000000000000000000000000000000000000000
--- a/package/mac80211/patches/530-ath9k_rc_fallback.patch
+++ /dev/null
@@ -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);
- 	}
- 
- 	/*
diff --git a/package/mac80211/patches/540-ath9k_beacon_timer_fix.patch b/package/mac80211/patches/540-ath9k_beacon_timer_fix.patch
deleted file mode 100644
index cc0ad7b4810c3be7542b2e48d7e1e323778ae98d..0000000000000000000000000000000000000000
--- a/package/mac80211/patches/540-ath9k_beacon_timer_fix.patch
+++ /dev/null
@@ -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
diff --git a/package/mac80211/patches/570-minstrel_debugfs_cleanup.patch b/package/mac80211/patches/540-minstrel_debugfs_cleanup.patch
similarity index 100%
rename from package/mac80211/patches/570-minstrel_debugfs_cleanup.patch
rename to package/mac80211/patches/540-minstrel_debugfs_cleanup.patch
diff --git a/package/mac80211/patches/550-ath9k_rifs_disable.patch b/package/mac80211/patches/550-ath9k_rifs_disable.patch
deleted file mode 100644
index 57441b6437b413c69566f48c2bfec6e7a4a345d7..0000000000000000000000000000000000000000
--- a/package/mac80211/patches/550-ath9k_rifs_disable.patch
+++ /dev/null
@@ -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
diff --git a/package/mac80211/patches/580-minstrel_extern.patch b/package/mac80211/patches/550-minstrel_extern.patch
similarity index 100%
rename from package/mac80211/patches/580-minstrel_extern.patch
rename to package/mac80211/patches/550-minstrel_extern.patch
diff --git a/package/mac80211/patches/590-minstrel_ht.patch b/package/mac80211/patches/560-minstrel_ht.patch
similarity index 99%
rename from package/mac80211/patches/590-minstrel_ht.patch
rename to package/mac80211/patches/560-minstrel_ht.patch
index 30b8b8043b925e8d03d8fb10bc1221951bd32384..67261730cd9dd0103301702bb137977bced26f11 100644
--- a/package/mac80211/patches/590-minstrel_ht.patch
+++ b/package/mac80211/patches/560-minstrel_ht.patch
@@ -13,7 +13,7 @@
  mac80211-$(CONFIG_MAC80211_RC_MINSTREL) += $(rc80211_minstrel-y)
 --- a/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)
  		return ret;
  
@@ -24,7 +24,7 @@
  	ret = rc80211_pid_init();
  	if (ret)
  		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:
  	rc80211_pid_exit();
   err_pid:
@@ -33,7 +33,7 @@
  	rc80211_minstrel_exit();
  
  	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)
  {
  	rc80211_pid_exit();
@@ -43,7 +43,7 @@
  	/*
 --- a/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
  extern int rc80211_minstrel_init(void);
  extern void rc80211_minstrel_exit(void);
@@ -52,7 +52,7 @@
  #else
  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)
  {
  }
diff --git a/package/mac80211/patches/600-ath9k_use_minstrel.patch b/package/mac80211/patches/570-ath9k_use_minstrel.patch
similarity index 100%
rename from package/mac80211/patches/600-ath9k_use_minstrel.patch
rename to package/mac80211/patches/570-ath9k_use_minstrel.patch