From: Felix Fietkau <nbd@openwrt.org>
Date: Thu, 20 Jan 2011 23:35:21 +0000 (+0000)
Subject: mac80211: update to wireless-testing 2010-01-19
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=4ee2365159df178ea0729f8fc508c36b68da6618;p=openwrt%2Fstaging%2Fjow.git

mac80211: update to wireless-testing 2010-01-19

SVN-Revision: 25053
---

diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile
index 7d2dcc534e..20e4b0e56b 100644
--- a/package/mac80211/Makefile
+++ b/package/mac80211/Makefile
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=2011-01-05
+PKG_VERSION:=2011-01-19
 PKG_RELEASE:=1
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
-PKG_MD5SUM:=2b87fdd08d95fa5def39f56f49c4906d
+PKG_MD5SUM:=74a76771c142de86e548565cc6888f3f
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
diff --git a/package/mac80211/patches/300-ath9k_gpio_settings.patch b/package/mac80211/patches/300-ath9k_gpio_settings.patch
index 148ff0c2cd..ed564b7b90 100644
--- a/package/mac80211/patches/300-ath9k_gpio_settings.patch
+++ b/package/mac80211/patches/300-ath9k_gpio_settings.patch
@@ -15,7 +15,7 @@
  err:
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -791,6 +791,8 @@ struct ath_hw {
+@@ -794,6 +794,8 @@ struct ath_hw {
  	int initPDADC;
  	int PDADCdelta;
  	u8 led_pin;
@@ -26,7 +26,7 @@
  	struct ar5416IniArray iniCommon;
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1171,6 +1171,20 @@ static bool ath9k_hw_channel_change(stru
+@@ -1172,6 +1172,20 @@ static bool ath9k_hw_channel_change(stru
  	return true;
  }
  
@@ -47,7 +47,7 @@
  bool ath9k_hw_check_alive(struct ath_hw *ah)
  {
  	int count = 50;
-@@ -1459,6 +1473,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1460,6 +1474,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
  	if (AR_SREV_9300_20_OR_LATER(ah))
  		ar9003_hw_bb_watchdog_config(ah);
  
diff --git a/package/mac80211/patches/409-ath9k_platform_settings.patch b/package/mac80211/patches/409-ath9k_platform_settings.patch
index d322b6eb9e..31de3e4092 100644
--- a/package/mac80211/patches/409-ath9k_platform_settings.patch
+++ b/package/mac80211/patches/409-ath9k_platform_settings.patch
@@ -18,7 +18,7 @@
  	common->ops = &ath9k_common_ops;
 --- a/drivers/net/wireless/ath/ath9k/hw.h
 +++ b/drivers/net/wireless/ath/ath9k/hw.h
-@@ -790,7 +790,7 @@ struct ath_hw {
+@@ -793,7 +793,7 @@ struct ath_hw {
  	u32 originalGain[22];
  	int initPDADC;
  	int PDADCdelta;
diff --git a/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch b/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch
index ff96b78880..2ec20081b7 100644
--- a/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch
+++ b/package/mac80211/patches/451-add-platform-eeprom-support-to-ath5k.patch
@@ -9,7 +9,7 @@
  
  #include "ath5k.h"
  #include "reg.h"
-@@ -1726,7 +1728,7 @@ ath5k_eeprom_read_spur_chans(struct ath5
+@@ -1722,7 +1724,7 @@ ath5k_eeprom_read_spur_chans(struct ath5
  }
  
  /*
@@ -18,10 +18,10 @@
   */
  int ath5k_eeprom_read_mac(struct ath5k_hw *ah, u8 *mac)
  {
-@@ -1734,6 +1736,16 @@ int ath5k_eeprom_read_mac(struct ath5k_h
+@@ -1730,6 +1732,16 @@ int ath5k_eeprom_read_mac(struct ath5k_h
  	u32 total, offset;
  	u16 data;
- 	int octet, ret;
+ 	int octet;
 +	struct ath5k_platform_data *pdata = NULL;
 +
 +	if (ah->ah_sc->pdev)
@@ -33,8 +33,8 @@
 +		return 0;
 +	}
  
- 	ret = ath5k_hw_nvram_read(ah, 0x20, &data);
- 	if (ret)
+ 	AR5K_EEPROM_READ(0x20, data);
+ 
 --- a/drivers/net/wireless/ath/ath5k/pci.c
 +++ b/drivers/net/wireless/ath/ath5k/pci.c
 @@ -17,6 +17,7 @@
@@ -45,7 +45,7 @@
  #include "../ath.h"
  #include "ath5k.h"
  #include "debug.h"
-@@ -73,6 +74,19 @@ bool ath5k_pci_eeprom_read(struct ath_co
+@@ -74,6 +75,19 @@ ath5k_pci_eeprom_read(struct ath_common 
  {
  	struct ath5k_hw *ah = (struct ath5k_hw *) common->ah;
  	u32 status, timeout;
diff --git a/package/mac80211/patches/510-ath9k_led_cleanup.patch b/package/mac80211/patches/510-ath9k_led_cleanup.patch
index 5f6968becc..570639d214 100644
--- a/package/mac80211/patches/510-ath9k_led_cleanup.patch
+++ b/package/mac80211/patches/510-ath9k_led_cleanup.patch
@@ -38,7 +38,7 @@
  
  /* Antenna diversity/combining */
  #define ATH_ANT_RX_CURRENT_SHIFT 4
-@@ -611,15 +605,11 @@ struct ath_softc {
+@@ -625,15 +619,11 @@ struct ath_softc {
  	struct ath_beacon beacon;
  	struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
  
@@ -253,7 +253,7 @@
  /*	Rfkill	   */
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1270,9 +1270,6 @@ static void ath9k_stop(struct ieee80211_
+@@ -1281,9 +1281,6 @@ static void ath9k_stop(struct ieee80211_
  
  	aphy->state = ATH_WIPHY_INACTIVE;
  
diff --git a/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch
index 0c337411ff..be17062ccb 100644
--- a/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch
+++ b/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1425,8 +1425,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1426,8 +1426,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
  	REG_WRITE(ah, AR_OBS, 8);
  
  	if (ah->config.rx_intr_mitigation) {
diff --git a/package/mac80211/patches/530-ath9k_aggr_flush_fix.patch b/package/mac80211/patches/530-ath9k_aggr_flush_fix.patch
deleted file mode 100644
index 1407a73887..0000000000
--- a/package/mac80211/patches/530-ath9k_aggr_flush_fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -169,7 +169,7 @@ static void ath_tx_flush_tid(struct ath_
- 			ath_tx_update_baw(sc, tid, fi->seqno);
- 			ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
- 		} else {
--			ath_tx_send_normal(sc, txq, tid, &bf_head);
-+			ath_tx_send_normal(sc, txq, NULL, &bf_head);
- 		}
- 		spin_lock_bh(&txq->axq_lock);
- 	}
diff --git a/package/mac80211/patches/531-ath9k_aggr_start_fix.patch b/package/mac80211/patches/531-ath9k_aggr_start_fix.patch
deleted file mode 100644
index 1197e5cc48..0000000000
--- a/package/mac80211/patches/531-ath9k_aggr_start_fix.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -856,7 +856,7 @@ int ath_tx_aggr_start(struct ath_softc *
- 
- 	txtid->state |= AGGR_ADDBA_PROGRESS;
- 	txtid->paused = true;
--	*ssn = txtid->seq_start;
-+	*ssn = txtid->seq_start = txtid->seq_next;
- 
- 	return 0;
- }
diff --git a/package/mac80211/patches/532-ath9k_aggr_baw_init.patch b/package/mac80211/patches/532-ath9k_aggr_baw_init.patch
deleted file mode 100644
index 0b9edd3347..0000000000
--- a/package/mac80211/patches/532-ath9k_aggr_baw_init.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -858,6 +858,9 @@ int ath_tx_aggr_start(struct ath_softc *
- 	txtid->paused = true;
- 	*ssn = txtid->seq_start = txtid->seq_next;
- 
-+	memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf));
-+	txtid->baw_head = txtid->baw_tail = 0;
-+
- 	return 0;
- }
- 
diff --git a/package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch b/package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch
deleted file mode 100644
index 19c6abd701..0000000000
--- a/package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -251,6 +251,9 @@ int ath_set_channel(struct ath_softc *sc
- 	if (!ath_stoprecv(sc))
- 		stopped = false;
- 
-+	if (!ath9k_hw_check_alive(ah))
-+		stopped = false;
-+
- 	/* XXX: do not flush receive queue here. We don't want
- 	 * to flush data frames already in queue because of
- 	 * changing channel. */
-@@ -602,7 +605,15 @@ void ath9k_tasklet(unsigned long data)
- 
- 	spin_lock(&sc->sc_pcu_lock);
- 
--	if (!ath9k_hw_check_alive(ah))
-+	/*
-+	 * Only run the baseband hang check if beacons stop working in AP or
-+	 * IBSS mode, because it has a high false positive rate. For station
-+	 * mode it should not be necessary, since the upper layers will detect
-+	 * this through a beacon miss automatically and the following channel
-+	 * change will trigger a hardware reset anyway
-+	 */
-+	if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0 &&
-+	    !ath9k_hw_check_alive(ah))
- 		ieee80211_queue_work(sc->hw, &sc->hw_check_work);
- 
- 	if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
diff --git a/package/mac80211/patches/550-ath9k_decrypt_error_fix.patch b/package/mac80211/patches/550-ath9k_decrypt_error_fix.patch
deleted file mode 100644
index 795018c57a..0000000000
--- a/package/mac80211/patches/550-ath9k_decrypt_error_fix.patch
+++ /dev/null
@@ -1,56 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-@@ -615,7 +615,7 @@ int ath9k_hw_process_rxdesc_edma(struct 
- 		 */
- 		if (rxsp->status11 & AR_CRCErr)
- 			rxs->rs_status |= ATH9K_RXERR_CRC;
--		if (rxsp->status11 & AR_PHYErr) {
-+		else if (rxsp->status11 & AR_PHYErr) {
- 			phyerr = MS(rxsp->status11, AR_PHYErrCode);
- 			/*
- 			 * If we reach a point here where AR_PostDelimCRCErr is
-@@ -638,11 +638,11 @@ int ath9k_hw_process_rxdesc_edma(struct 
- 				rxs->rs_phyerr = phyerr;
- 			}
- 
--		}
--		if (rxsp->status11 & AR_DecryptCRCErr)
-+		} else if (rxsp->status11 & AR_DecryptCRCErr)
- 			rxs->rs_status |= ATH9K_RXERR_DECRYPT;
--		if (rxsp->status11 & AR_MichaelErr)
-+		else if (rxsp->status11 & AR_MichaelErr)
- 			rxs->rs_status |= ATH9K_RXERR_MIC;
-+
- 		if (rxsp->status11 & AR_KeyMiss)
- 			rxs->rs_status |= ATH9K_RXERR_DECRYPT;
- 	}
---- a/drivers/net/wireless/ath/ath9k/mac.c
-+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -690,17 +690,23 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
- 		rs->rs_flags |= ATH9K_RX_DECRYPT_BUSY;
- 
- 	if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) {
-+		/*
-+		 * Treat these errors as mutually exclusive to avoid spurious
-+		 * extra error reports from the hardware. If a CRC error is
-+		 * reported, then decryption and MIC errors are irrelevant,
-+		 * the frame is going to be dropped either way
-+		 */
- 		if (ads.ds_rxstatus8 & AR_CRCErr)
- 			rs->rs_status |= ATH9K_RXERR_CRC;
--		if (ads.ds_rxstatus8 & AR_PHYErr) {
-+		else if (ads.ds_rxstatus8 & AR_PHYErr) {
- 			rs->rs_status |= ATH9K_RXERR_PHY;
- 			phyerr = MS(ads.ds_rxstatus8, AR_PHYErrCode);
- 			rs->rs_phyerr = phyerr;
--		}
--		if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
-+		} else if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
- 			rs->rs_status |= ATH9K_RXERR_DECRYPT;
--		if (ads.ds_rxstatus8 & AR_MichaelErr)
-+		else if (ads.ds_rxstatus8 & AR_MichaelErr)
- 			rs->rs_status |= ATH9K_RXERR_MIC;
-+
- 		if (ads.ds_rxstatus8 & AR_KeyMiss)
- 			rs->rs_status |= ATH9K_RXERR_DECRYPT;
- 	}
diff --git a/package/mac80211/patches/551-ath9k_txq_schedule_multi.patch b/package/mac80211/patches/551-ath9k_txq_schedule_multi.patch
deleted file mode 100644
index 5002c9bbbb..0000000000
--- a/package/mac80211/patches/551-ath9k_txq_schedule_multi.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -1224,12 +1224,14 @@ void ath_tx_cleanupq(struct ath_softc *s
- void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq)
- {
- 	struct ath_atx_ac *ac;
--	struct ath_atx_tid *tid;
-+	struct ath_atx_tid *tid, *last;
- 
--	if (list_empty(&txq->axq_acq))
-+	if (list_empty(&txq->axq_acq) ||
-+	    txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH)
- 		return;
- 
- 	ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac, list);
-+	last = list_entry(ac->tid_q.prev, struct ath_atx_tid, list);
- 	list_del(&ac->list);
- 	ac->sched = false;
- 
-@@ -1253,7 +1255,8 @@ void ath_txq_schedule(struct ath_softc *
- 		if (!list_empty(&tid->buf_q))
- 			ath_tx_queue_tid(txq, tid);
- 
--		break;
-+		if (tid == last || txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH)
-+			break;
- 	} while (!list_empty(&ac->tid_q));
- 
- 	if (!list_empty(&ac->tid_q)) {
diff --git a/package/mac80211/patches/552-ath9k_fix_bar.patch b/package/mac80211/patches/552-ath9k_fix_bar.patch
deleted file mode 100644
index 074b8f5d0e..0000000000
--- a/package/mac80211/patches/552-ath9k_fix_bar.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -429,7 +429,7 @@ static void ath_tx_complete_aggr(struct 
- 
- 	ath_tx_count_frames(sc, bf, ts, txok, &nframes, &nbad);
- 	while (bf) {
--		txfail = txpending = 0;
-+		txfail = txpending = sendbar = 0;
- 		bf_next = bf->bf_next;
- 
- 		skb = bf->bf_mpdu;
diff --git a/package/mac80211/patches/560-mac80211_wds_sta_fix.patch b/package/mac80211/patches/560-mac80211_wds_sta_fix.patch
deleted file mode 100644
index ba04a6fc3e..0000000000
--- a/package/mac80211/patches/560-mac80211_wds_sta_fix.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -1556,17 +1556,36 @@ __ieee80211_data_to_8023(struct ieee8021
- {
- 	struct ieee80211_sub_if_data *sdata = rx->sdata;
- 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)rx->skb->data;
-+	bool check_port_control = false;
-+	struct ethhdr *ehdr;
-+	int ret;
- 
- 	if (ieee80211_has_a4(hdr->frame_control) &&
- 	    sdata->vif.type == NL80211_IFTYPE_AP_VLAN && !sdata->u.vlan.sta)
- 		return -1;
- 
-+	if (sdata->vif.type == NL80211_IFTYPE_STATION &&
-+	    !!sdata->u.mgd.use_4addr != !!ieee80211_has_a4(hdr->frame_control)) {
-+
-+		if (!sdata->u.mgd.use_4addr)
-+			return -1;
-+		else
-+			check_port_control = true;
-+	}
-+
- 	if (is_multicast_ether_addr(hdr->addr1) &&
--	    ((sdata->vif.type == NL80211_IFTYPE_AP_VLAN && sdata->u.vlan.sta) ||
--	     (sdata->vif.type == NL80211_IFTYPE_STATION && sdata->u.mgd.use_4addr)))
-+	    sdata->vif.type == NL80211_IFTYPE_AP_VLAN && sdata->u.vlan.sta)
-+		return -1;
-+
-+	ret = ieee80211_data_to_8023(rx->skb, sdata->vif.addr, sdata->vif.type);
-+	if (ret < 0 || !check_port_control)
-+		return ret;
-+
-+	ehdr = (struct ethhdr *) rx->skb->data;
-+	if (ehdr->h_proto != rx->sdata->control_port_protocol)
- 		return -1;
- 
--	return ieee80211_data_to_8023(rx->skb, sdata->vif.addr, sdata->vif.type);
-+	return 0;
- }
- 
- /*
diff --git a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch b/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch
deleted file mode 100644
index cb49a8014d..0000000000
--- a/package/mac80211/patches/601-rt2x00-fix-hang-on-ifdown.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 27ed5ec6924c17b76d65b697a162bafee7bd8e4e Mon Sep 17 00:00:00 2001
-From: Helmut Schaa <helmut.schaa@googlemail.com>
-Date: Mon, 21 Jun 2010 10:03:05 +0200
-Subject: [PATCH] rt2x00: fix rt2800pci hang on ifdown
-
-rt2800pci hangs the system on rt305x SoC devices on ifdown. Work around
-this issue by disabling TX DMA prior to resetting the TX queue indices.
-
-This patch is not suitable for upstream inclusion but is just meant as
-a workaround until a proper solution is implemented.
-
-Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
----
- drivers/net/wireless/rt2x00/rt2800pci.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
---- a/drivers/net/wireless/rt2x00/rt2800pci.c
-+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
-@@ -481,6 +481,10 @@ static void rt2800pci_disable_radio(stru
- 
- 	rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00001280);
- 
-+	rt2800_register_read(rt2x00dev, WPDMA_GLO_CFG, &reg);
-+	rt2x00_set_field32(&reg, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0);
-+	rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg);
-+
- 	rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, &reg);
- 	rt2x00_set_field32(&reg, WPDMA_RST_IDX_DTX_IDX0, 1);
- 	rt2x00_set_field32(&reg, WPDMA_RST_IDX_DTX_IDX1, 1);
diff --git a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
index 14a9947bcf..8fa92bf84b 100644
--- a/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
+++ b/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/mwl8k.c
 +++ b/drivers/net/wireless/mwl8k.c
-@@ -4056,6 +4056,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
+@@ -4482,6 +4482,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
  MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
  
  static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {