PKG_NAME:=mac80211
-PKG_VERSION:=2010-07-16
+PKG_VERSION:=2010-07-26
PKG_RELEASE:=1
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:=f0eb07a207d1f3675787a466c838b777
+PKG_MD5SUM:=4388547c8cf60a895d9ee64420df2f25
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
#include <pcmcia/cs.h>
--- a/include/linux/compat-2.6.33.h
+++ b/include/linux/compat-2.6.33.h
-@@ -6,8 +6,8 @@
+@@ -6,7 +6,7 @@
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
#include <linux/skbuff.h>
-#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE)
--#if defined(CONFIG_PCMCIA) || defined(CONFIG_PCMCIA_MODULE)
-+#if 0
+#if 0
#include <pcmcia/cs_types.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ds.h>
-@@ -67,9 +67,9 @@ static inline struct sk_buff *netdev_all
+@@ -65,9 +65,9 @@ static inline struct sk_buff *netdev_all
return skb;
}
#define DRV_COPYRIGHT "Copyright(c) 2003-2006 Intel Corporation"
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
- struct pm_qos_request_list *ipw2100_pm_qos_req;
+ static struct pm_qos_request_list *ipw2100_pm_qos_req;
+#endif
/* Debugging stuff */
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -518,6 +518,14 @@ static void ath_tx_complete_aggr(struct
- bf = bf_next;
- }
-
-+ /* prepend un-acked frames to the beginning of the pending frame queue */
-+ if (!list_empty(&bf_pending)) {
-+ spin_lock_bh(&txq->axq_lock);
-+ list_splice(&bf_pending, &tid->buf_q);
-+ ath_tx_queue_tid(txq, tid);
-+ spin_unlock_bh(&txq->axq_lock);
-+ }
-+
- if (tid->state & AGGR_CLEANUP) {
- if (tid->baw_head == tid->baw_tail) {
- tid->state &= ~AGGR_ADDBA_COMPLETE;
-@@ -530,14 +538,6 @@ static void ath_tx_complete_aggr(struct
- return;
- }
-
-- /* prepend un-acked frames to the beginning of the pending frame queue */
-- if (!list_empty(&bf_pending)) {
-- spin_lock_bh(&txq->axq_lock);
-- list_splice(&bf_pending, &tid->buf_q);
-- ath_tx_queue_tid(txq, tid);
-- spin_unlock_bh(&txq->axq_lock);
-- }
--
- rcu_read_unlock();
-
- if (needreset)
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
-@@ -1508,6 +1508,9 @@ static void ar5008_hw_do_getnf(struct at
- nf = MS(REG_READ(ah, AR_PHY_CH2_CCA), AR_PHY_CH2_MINCCA_PWR);
- nfarray[2] = sign_extend(nf, 9);
-
-+ if (!IS_CHAN_HT40(ah->curchan))
-+ return;
-+
- nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
- nfarray[3] = sign_extend(nf, 9);
-
---- a/drivers/net/wireless/ath/ath9k/ar9002_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.c
-@@ -477,7 +477,8 @@ static void ar9002_hw_do_getnf(struct at
- nfarray[0] = sign_extend(nf, 9);
-
- nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR9280_PHY_EXT_MINCCA_PWR);
-- nfarray[3] = sign_extend(nf, 9);
-+ if (IS_CHAN_HT40(ah->curchan))
-+ nfarray[3] = sign_extend(nf, 9);
-
- if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
- return;
-@@ -486,7 +487,8 @@ static void ar9002_hw_do_getnf(struct at
- nfarray[1] = sign_extend(nf, 9);
-
- nf = MS(REG_READ(ah, AR_PHY_CH1_EXT_CCA), AR9280_PHY_CH1_EXT_MINCCA_PWR);
-- nfarray[4] = sign_extend(nf, 9);
-+ if (IS_CHAN_HT40(ah->curchan))
-+ nfarray[4] = sign_extend(nf, 9);
- }
-
- static void ar9002_hw_set_nf_limits(struct ath_hw *ah)
---- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
-@@ -1029,6 +1029,9 @@ static void ar9003_hw_do_getnf(struct at
- nf = MS(REG_READ(ah, AR_PHY_CCA_2), AR_PHY_CH2_MINCCA_PWR);
- nfarray[2] = sign_extend(nf, 9);
-
-+ if (!IS_CHAN_HT40(ah->curchan))
-+ return;
-+
- nf = MS(REG_READ(ah, AR_PHY_EXT_CCA), AR_PHY_EXT_MINCCA_PWR);
- nfarray[3] = sign_extend(nf, 9);
-
+++ /dev/null
---- a/drivers/net/wireless/ath/ath9k/calib.c
-+++ b/drivers/net/wireless/ath/ath9k/calib.c
-@@ -172,26 +172,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah,
- struct ath9k_nfcal_hist *h;
- unsigned i, j;
- int32_t val;
-- u8 chainmask;
-+ u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask;
- struct ath_common *common = ath9k_hw_common(ah);
-
-- if (AR_SREV_9300_20_OR_LATER(ah))
-- chainmask = 0x3F;
-- else if (AR_SREV_9285(ah) || AR_SREV_9271(ah))
-- chainmask = 0x9;
-- else if (AR_SREV_9280(ah) || AR_SREV_9287(ah)) {
-- if ((ah->rxchainmask & 0x2) || (ah->rxchainmask & 0x4))
-- chainmask = 0x1B;
-- else
-- chainmask = 0x09;
-- } else {
-- if (ah->rxchainmask & 0x4)
-- chainmask = 0x3F;
-- else if (ah->rxchainmask & 0x2)
-- chainmask = 0x1B;
-- else
-- chainmask = 0x09;
-- }
- h = ah->nfCalHist;
-
- for (i = 0; i < NUM_NF_READINGS; i++) {
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -3882,6 +3882,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw");
+@@ -3884,6 +3884,7 @@ MODULE_FIRMWARE("mwl8k/helper_8366.fw");
MODULE_FIRMWARE("mwl8k/fmimage_8366.fw");
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {
+++ /dev/null
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -756,7 +756,7 @@ static void ieee80211_iface_work(struct
- int len = skb->len;
-
- mutex_lock(&local->sta_mtx);
-- sta = sta_info_get(sdata, mgmt->sa);
-+ sta = sta_info_get_bss(sdata, mgmt->sa);
- if (sta) {
- switch (mgmt->u.action.u.addba_req.action_code) {
- case WLAN_ACTION_ADDBA_REQ:
-@@ -797,7 +797,7 @@ static void ieee80211_iface_work(struct
- * right, so terminate the session.
- */
- mutex_lock(&local->sta_mtx);
-- sta = sta_info_get(sdata, mgmt->sa);
-+ sta = sta_info_get_bss(sdata, mgmt->sa);
- if (sta) {
- u16 tid = *ieee80211_get_qos_ctl(hdr) &
- IEEE80211_QOS_CTL_TID_MASK;
--- /dev/null
+--- a/net/mac80211/scan.c
++++ b/net/mac80211/scan.c
+@@ -287,8 +287,6 @@ void ieee80211_scan_completed(struct iee
+ local->scanning = 0;
+ local->scan_channel = NULL;
+
+- drv_sw_scan_complete(local);
+-
+ /* we only have to protect scan_req and hw/sw scan */
+ mutex_unlock(&local->scan_mtx);
+
+@@ -298,6 +296,8 @@ void ieee80211_scan_completed(struct iee
+
+ ieee80211_configure_filter(local);
+
++ drv_sw_scan_complete(local);
++
+ ieee80211_offchannel_return(local, true);
+
+ done: