From: Felix Fietkau Date: Thu, 20 Jan 2011 23:35:21 +0000 (+0000) Subject: mac80211: update to wireless-testing 2010-01-19 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=4ee2365159df178ea0729f8fc508c36b68da6618;p=openwrt%2Fstaging%2Faparcar.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 -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 ---- - 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, ®); -+ rt2x00_set_field32(®, WPDMA_GLO_CFG_ENABLE_TX_DMA, 0); -+ rt2800_register_write(rt2x00dev, WPDMA_GLO_CFG, reg); -+ - rt2800_register_read(rt2x00dev, WPDMA_RST_IDX, ®); - rt2x00_set_field32(®, WPDMA_RST_IDX_DTX_IDX0, 1); - rt2x00_set_field32(®, 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) = {