aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-01-24 16:03:53 -0500
committerDavid S. Miller <davem@davemloft.net>2014-01-24 16:03:53 -0500
commit322b1f79dacd58cc430bc610b76d6f0ecd5d8874 (patch)
tree78568cd9732fbb70b1206fcaeb6f90220752ef9f
parentf55aa836fb7a90b62cb2c533b899e331cdffcf0c (diff)
parent5746cc2a6923b4e4726d9be8aa155461829be360 (diff)
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
John W. Linville says: ==================== Please pull these fixes for the 3.14 stream! For the iwlwifi fix, Emmanuel says: "A critical bug has been reported on all NICs supported by iwldvm. iwlwifi would simply panic upon interface up This patch fixes this. The offending code is by me and is present in wireless-next.git and hence in net-next.git." Along with that... Andreas Fenkart corrects a WoWLAN problem with mwifiex. Roman Dubtsov adds a device ID to rt2800usb. Sujith Manoharan re-enables a mistakenly commented-out line of code in ath9k, and also fixes and interrupt mitigation issue for that driver. ZHAO Gang fixes an incorrect assignment (reverse/wrong API call) in b43. Please let me know if there are problems! ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.c12
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h2
-rw-r--r--drivers/net/wireless/ath/ath9k/main.c2
-rw-r--r--drivers/net/wireless/b43/xmit.c4
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/tx.c4
-rw-r--r--drivers/net/wireless/mwifiex/cfg80211.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt2800usb.c1
7 files changed, 20 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index ce41658a6003..fbf43c05713f 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -358,6 +358,14 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
358 358
359 ah->config.rx_intr_mitigation = true; 359 ah->config.rx_intr_mitigation = true;
360 360
361 if (AR_SREV_9300_20_OR_LATER(ah)) {
362 ah->config.rimt_last = 500;
363 ah->config.rimt_first = 2000;
364 } else {
365 ah->config.rimt_last = 250;
366 ah->config.rimt_first = 700;
367 }
368
361 /* 369 /*
362 * We need this for PCI devices only (Cardbus, PCI, miniPCI) 370 * We need this for PCI devices only (Cardbus, PCI, miniPCI)
363 * _and_ if on non-uniprocessor systems (Multiprocessor/HT). 371 * _and_ if on non-uniprocessor systems (Multiprocessor/HT).
@@ -1876,8 +1884,8 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
1876 REG_WRITE(ah, AR_OBS, 8); 1884 REG_WRITE(ah, AR_OBS, 8);
1877 1885
1878 if (ah->config.rx_intr_mitigation) { 1886 if (ah->config.rx_intr_mitigation) {
1879 REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500); 1887 REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, ah->config.rimt_last);
1880 REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000); 1888 REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, ah->config.rimt_first);
1881 } 1889 }
1882 1890
1883 if (ah->config.tx_intr_mitigation) { 1891 if (ah->config.tx_intr_mitigation) {
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index e766399bdcda..0acd4b5a4892 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -310,6 +310,8 @@ struct ath9k_ops_config {
310 u8 max_txtrig_level; 310 u8 max_txtrig_level;
311 u16 ani_poll_interval; /* ANI poll interval in ms */ 311 u16 ani_poll_interval; /* ANI poll interval in ms */
312 u16 hw_hang_checks; 312 u16 hw_hang_checks;
313 u16 rimt_first;
314 u16 rimt_last;
313 315
314 /* Platform specific config */ 316 /* Platform specific config */
315 u32 aspm_l1_fix; 317 u32 aspm_l1_fix;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 73a36551a5ed..5924f72dd493 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -524,7 +524,7 @@ void ath9k_tasklet(unsigned long data)
524 * successfully after a GTT interrupt, the GTT counter 524 * successfully after a GTT interrupt, the GTT counter
525 * gets reset to zero here. 525 * gets reset to zero here.
526 */ 526 */
527 /* sc->gtt_cnt = 0; */ 527 sc->gtt_cnt = 0;
528 528
529 ath_tx_edma_tasklet(sc); 529 ath_tx_edma_tasklet(sc);
530 } else { 530 } else {
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c
index 4ae63f4ddfb2..50e5ddb12fb3 100644
--- a/drivers/net/wireless/b43/xmit.c
+++ b/drivers/net/wireless/b43/xmit.c
@@ -821,10 +821,10 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
821 * channel number in b43. */ 821 * channel number in b43. */
822 if (chanstat & B43_RX_CHAN_5GHZ) { 822 if (chanstat & B43_RX_CHAN_5GHZ) {
823 status.band = IEEE80211_BAND_5GHZ; 823 status.band = IEEE80211_BAND_5GHZ;
824 status.freq = b43_freq_to_channel_5ghz(chanid); 824 status.freq = b43_channel_to_freq_5ghz(chanid);
825 } else { 825 } else {
826 status.band = IEEE80211_BAND_2GHZ; 826 status.band = IEEE80211_BAND_2GHZ;
827 status.freq = b43_freq_to_channel_2ghz(chanid); 827 status.freq = b43_channel_to_freq_2ghz(chanid);
828 } 828 }
829 break; 829 break;
830 default: 830 default:
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
index 3b14fa8abfc7..3d549008b3e2 100644
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
@@ -289,13 +289,15 @@ static void iwl_pcie_txq_inval_byte_cnt_tbl(struct iwl_trans *trans,
289 */ 289 */
290void iwl_pcie_txq_inc_wr_ptr(struct iwl_trans *trans, struct iwl_txq *txq) 290void iwl_pcie_txq_inc_wr_ptr(struct iwl_trans *trans, struct iwl_txq *txq)
291{ 291{
292 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
292 u32 reg = 0; 293 u32 reg = 0;
293 int txq_id = txq->q.id; 294 int txq_id = txq->q.id;
294 295
295 if (txq->need_update == 0) 296 if (txq->need_update == 0)
296 return; 297 return;
297 298
298 if (trans->cfg->base_params->shadow_reg_enable) { 299 if (trans->cfg->base_params->shadow_reg_enable ||
300 txq_id == trans_pcie->cmd_queue) {
299 /* shadow register enabled */ 301 /* shadow register enabled */
300 iwl_write32(trans, HBUS_TARG_WRPTR, 302 iwl_write32(trans, HBUS_TARG_WRPTR,
301 txq->q.write_ptr | (txq_id << 8)); 303 txq->q.write_ptr | (txq_id << 8));
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index f37b403e83d0..8bfc07cd330e 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -2449,7 +2449,7 @@ static int mwifiex_cfg80211_suspend(struct wiphy *wiphy,
2449 ETH_ALEN); 2449 ETH_ALEN);
2450 mef_entry->filter[filt_num].byte_seq[MWIFIEX_MEF_MAX_BYTESEQ] = 2450 mef_entry->filter[filt_num].byte_seq[MWIFIEX_MEF_MAX_BYTESEQ] =
2451 ETH_ALEN; 2451 ETH_ALEN;
2452 mef_entry->filter[filt_num].offset = 14; 2452 mef_entry->filter[filt_num].offset = 28;
2453 mef_entry->filter[filt_num].filt_type = TYPE_EQ; 2453 mef_entry->filter[filt_num].filt_type = TYPE_EQ;
2454 if (filt_num) 2454 if (filt_num)
2455 mef_entry->filter[filt_num].filt_action = TYPE_OR; 2455 mef_entry->filter[filt_num].filt_action = TYPE_OR;
diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 5c5c4906c6b6..caddc1b427a9 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -989,6 +989,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
989 { USB_DEVICE(0x07d1, 0x3c15) }, 989 { USB_DEVICE(0x07d1, 0x3c15) },
990 { USB_DEVICE(0x07d1, 0x3c16) }, 990 { USB_DEVICE(0x07d1, 0x3c16) },
991 { USB_DEVICE(0x07d1, 0x3c17) }, 991 { USB_DEVICE(0x07d1, 0x3c17) },
992 { USB_DEVICE(0x2001, 0x3317) },
992 { USB_DEVICE(0x2001, 0x3c1b) }, 993 { USB_DEVICE(0x2001, 0x3c1b) },
993 /* Draytek */ 994 /* Draytek */
994 { USB_DEVICE(0x07fa, 0x7712) }, 995 { USB_DEVICE(0x07fa, 0x7712) },