Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
authorJohn W. Linville <linville@tuxdriver.com>
Fri, 24 Jan 2014 18:25:15 +0000 (13:25 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 24 Jan 2014 18:25:15 +0000 (13:25 -0500)
drivers/net/wireless/ath/ath9k/hw.c
drivers/net/wireless/ath/ath9k/hw.h
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/b43/xmit.c
drivers/net/wireless/iwlwifi/pcie/tx.c
drivers/net/wireless/mwifiex/cfg80211.c
drivers/net/wireless/rt2x00/rt2800usb.c

index ce41658a600344db2c027bcdfb9de41ccee50965..fbf43c05713f476f9e6551ad2948dc1ff412970a 100644 (file)
@@ -358,6 +358,14 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
 
        ah->config.rx_intr_mitigation = true;
 
+       if (AR_SREV_9300_20_OR_LATER(ah)) {
+               ah->config.rimt_last = 500;
+               ah->config.rimt_first = 2000;
+       } else {
+               ah->config.rimt_last = 250;
+               ah->config.rimt_first = 700;
+       }
+
        /*
         * We need this for PCI devices only (Cardbus, PCI, miniPCI)
         * _and_ if on non-uniprocessor systems (Multiprocessor/HT).
@@ -1876,8 +1884,8 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
                REG_WRITE(ah, AR_OBS, 8);
 
        if (ah->config.rx_intr_mitigation) {
-               REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
-               REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000);
+               REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, ah->config.rimt_last);
+               REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, ah->config.rimt_first);
        }
 
        if (ah->config.tx_intr_mitigation) {
index e766399bdcdaede07d547832e0797a89dfb8efb1..0acd4b5a48929f4443fde73706f6ee6bb8ce7a0b 100644 (file)
@@ -310,6 +310,8 @@ struct ath9k_ops_config {
        u8 max_txtrig_level;
        u16 ani_poll_interval; /* ANI poll interval in ms */
        u16 hw_hang_checks;
+       u16 rimt_first;
+       u16 rimt_last;
 
        /* Platform specific config */
        u32 aspm_l1_fix;
index 73a36551a5ed9b485969b60c369ab1e4c6ad0d83..5924f72dd4932c4be474f87f246643c6e49ccabb 100644 (file)
@@ -524,7 +524,7 @@ void ath9k_tasklet(unsigned long data)
                         * successfully after a GTT interrupt, the GTT counter
                         * gets reset to zero here.
                         */
-                       /* sc->gtt_cnt = 0; */
+                       sc->gtt_cnt = 0;
 
                        ath_tx_edma_tasklet(sc);
                } else {
index 4ae63f4ddfb20394d1a38c4847b5c5732887f277..50e5ddb12fb3f6bf97217819a862c5d508ec0bd4 100644 (file)
@@ -821,10 +821,10 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
                 * channel number in b43. */
                if (chanstat & B43_RX_CHAN_5GHZ) {
                        status.band = IEEE80211_BAND_5GHZ;
-                       status.freq = b43_freq_to_channel_5ghz(chanid);
+                       status.freq = b43_channel_to_freq_5ghz(chanid);
                } else {
                        status.band = IEEE80211_BAND_2GHZ;
-                       status.freq = b43_freq_to_channel_2ghz(chanid);
+                       status.freq = b43_channel_to_freq_2ghz(chanid);
                }
                break;
        default:
index 3b14fa8abfc70461d6cd643b71a7997b3234ebe6..3d549008b3e2db714df564e16060948e3336ee41 100644 (file)
@@ -289,13 +289,15 @@ static void iwl_pcie_txq_inval_byte_cnt_tbl(struct iwl_trans *trans,
  */
 void iwl_pcie_txq_inc_wr_ptr(struct iwl_trans *trans, struct iwl_txq *txq)
 {
+       struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
        u32 reg = 0;
        int txq_id = txq->q.id;
 
        if (txq->need_update == 0)
                return;
 
-       if (trans->cfg->base_params->shadow_reg_enable) {
+       if (trans->cfg->base_params->shadow_reg_enable ||
+           txq_id == trans_pcie->cmd_queue) {
                /* shadow register enabled */
                iwl_write32(trans, HBUS_TARG_WRPTR,
                            txq->q.write_ptr | (txq_id << 8));
index f37b403e83d0566d7e32012f58a167c1569bc70a..8bfc07cd330e744f8fb68065b551181aa5857688 100644 (file)
@@ -2449,7 +2449,7 @@ static int mwifiex_cfg80211_suspend(struct wiphy *wiphy,
                       ETH_ALEN);
                mef_entry->filter[filt_num].byte_seq[MWIFIEX_MEF_MAX_BYTESEQ] =
                                                                ETH_ALEN;
-               mef_entry->filter[filt_num].offset = 14;
+               mef_entry->filter[filt_num].offset = 28;
                mef_entry->filter[filt_num].filt_type = TYPE_EQ;
                if (filt_num)
                        mef_entry->filter[filt_num].filt_action = TYPE_OR;
index 5c5c4906c6b669517d043209685f476dd40cee02..caddc1b427a919659200c539552a619af49c5d17 100644 (file)
@@ -989,6 +989,7 @@ static struct usb_device_id rt2800usb_device_table[] = {
        { USB_DEVICE(0x07d1, 0x3c15) },
        { USB_DEVICE(0x07d1, 0x3c16) },
        { USB_DEVICE(0x07d1, 0x3c17) },
+       { USB_DEVICE(0x2001, 0x3317) },
        { USB_DEVICE(0x2001, 0x3c1b) },
        /* Draytek */
        { USB_DEVICE(0x07fa, 0x7712) },