Changeset 27972


Ignore:
Timestamp:
2011-08-13T18:25:15+02:00 (6 years ago)
Author:
nbd
Message:

ath9k: merge a few more pending fixes, including a fix for the bogus WARN_ON in pci.c and fixes for Rx DMA stop issues

Location:
trunk/package/mac80211/patches
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r27958 r27972  
    359359        } 
    360360  
    361 @@ -1413,7 +1414,8 @@ static void ath_tx_send_ampdu(struct ath 
     361@@ -643,8 +644,10 @@ static u32 ath_lookup_rate(struct ath_so 
     362  * meet the minimum required mpdudensity. 
     363  */ 
     364 static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid, 
     365-                                 struct ath_buf *bf, u16 frmlen) 
     366+                                 struct ath_buf *bf, u16 frmlen, 
     367+                                 bool first_subfrm) 
     368 { 
     369+#define FIRST_DESC_NDELIMS 60 
     370        struct sk_buff *skb = bf->bf_mpdu; 
     371        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); 
     372        u32 nsymbits, nsymbols; 
     373@@ -667,6 +670,13 @@ static int ath_compute_num_delims(struct 
     374                ndelim += ATH_AGGR_ENCRYPTDELIM; 
     375  
     376        /* 
     377+        * Add delimiter when using RTS/CTS with aggregation 
     378+        * and non enterprise AR9003 card 
     379+        */ 
     380+       if (first_subfrm) 
     381+               ndelim = max(ndelim, FIRST_DESC_NDELIMS); 
     382+ 
     383+       /* 
     384         * Convert desired mpdu density from microeconds to bytes based 
     385         * on highest rate in rate series (i.e. first rate) to determine 
     386         * required minimum length for subframe. Take into account 
     387@@ -755,7 +765,6 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     388                        status = ATH_AGGR_LIMITED; 
     389                        break; 
     390                } 
     391-               nframes++; 
     392  
     393                /* add padding for previous frame to aggregation length */ 
     394                al += bpad + al_delta; 
     395@@ -764,9 +773,11 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     396                 * Get the delimiters needed to meet the MPDU 
     397                 * density for this node. 
     398                 */ 
     399-               ndelim = ath_compute_num_delims(sc, tid, bf_first, fi->framelen); 
     400+               ndelim = ath_compute_num_delims(sc, tid, bf_first, fi->framelen, 
     401+                                               !nframes); 
     402                bpad = PADBYTES(al_delta) + (ndelim << 2); 
     403  
     404+               nframes++; 
     405                bf->bf_next = NULL; 
     406                ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, 0); 
     407  
     408@@ -1413,7 +1424,8 @@ static void ath_tx_send_ampdu(struct ath 
    362409                 */ 
    363410                TX_STAT_INC(txctl->txq->axq_qnum, a_queued_sw); 
     
    369416        } 
    370417  
     418@@ -1572,9 +1584,9 @@ u8 ath_txchainmask_reduction(struct ath_ 
     419 { 
     420        struct ath_hw *ah = sc->sc_ah; 
     421        struct ath9k_channel *curchan = ah->curchan; 
     422-       if ((sc->sc_flags & SC_OP_ENABLE_APM) && 
     423-                       (curchan->channelFlags & CHANNEL_5GHZ) && 
     424-                       (chainmask == 0x7) && (rate < 0x90)) 
     425+       if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && 
     426+           (curchan->channelFlags & CHANNEL_5GHZ) && 
     427+           (chainmask == 0x7) && (rate < 0x90)) 
     428                return 0x3; 
     429        else 
     430                return chainmask; 
    371431--- a/include/net/cfg80211.h 
    372432+++ b/include/net/cfg80211.h 
     
    400460                        sinfo->assoc_req_ies); 
    401461  
     462--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c 
     463+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c 
     464@@ -415,36 +415,12 @@ static void ar9003_hw_set11n_ratescenari 
     465 static void ar9003_hw_set11n_aggr_first(struct ath_hw *ah, void *ds, 
     466                                        u32 aggrLen) 
     467 { 
     468-#define FIRST_DESC_NDELIMS 60 
     469        struct ar9003_txc *ads = (struct ar9003_txc *) ds; 
     470  
     471        ads->ctl12 |= (AR_IsAggr | AR_MoreAggr); 
     472  
     473-       if (ah->ent_mode & AR_ENT_OTP_MPSD) { 
     474-               u32 ctl17, ndelim; 
     475-               /* 
     476-                * Add delimiter when using RTS/CTS with aggregation 
     477-                * and non enterprise AR9003 card 
     478-                */ 
     479-               ctl17 = ads->ctl17; 
     480-               ndelim = MS(ctl17, AR_PadDelim); 
     481- 
     482-               if (ndelim < FIRST_DESC_NDELIMS) { 
     483-                       aggrLen += (FIRST_DESC_NDELIMS - ndelim) * 4; 
     484-                       ndelim = FIRST_DESC_NDELIMS; 
     485-               } 
     486- 
     487-               ctl17 &= ~AR_AggrLen; 
     488-               ctl17 |= SM(aggrLen, AR_AggrLen); 
     489- 
     490-               ctl17 &= ~AR_PadDelim; 
     491-               ctl17 |= SM(ndelim, AR_PadDelim); 
     492- 
     493-               ads->ctl17 = ctl17; 
     494-       } else { 
     495-               ads->ctl17 &= ~AR_AggrLen; 
     496-               ads->ctl17 |= SM(aggrLen, AR_AggrLen); 
     497-       } 
     498+       ads->ctl17 &= ~AR_AggrLen; 
     499+       ads->ctl17 |= SM(aggrLen, AR_AggrLen); 
     500 } 
     501  
     502 static void ar9003_hw_set11n_aggr_middle(struct ath_hw *ah, void *ds, 
     503--- a/drivers/net/wireless/ath/ath9k/main.c 
     504+++ b/drivers/net/wireless/ath/ath9k/main.c 
     505@@ -565,7 +565,6 @@ set_timer: 
     506 static void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta) 
     507 { 
     508        struct ath_node *an; 
     509-       struct ath_hw *ah = sc->sc_ah; 
     510        an = (struct ath_node *)sta->drv_priv; 
     511  
     512 #ifdef CONFIG_ATH9K_DEBUGFS 
     513@@ -574,9 +573,6 @@ static void ath_node_attach(struct ath_s 
     514        spin_unlock(&sc->nodes_lock); 
     515        an->sta = sta; 
     516 #endif 
     517-       if ((ah->caps.hw_caps) & ATH9K_HW_CAP_APM) 
     518-               sc->sc_flags |= SC_OP_ENABLE_APM; 
     519- 
     520        if (sc->sc_flags & SC_OP_TXAGGR) { 
     521                ath_tx_node_init(sc, an); 
     522                an->maxampdu = 1 << (IEEE80211_HT_MAX_AMPDU_FACTOR + 
     523@@ -826,11 +822,9 @@ irqreturn_t ath_isr(int irq, void *dev) 
     524        if (status & ATH9K_INT_TXURN) 
     525                ath9k_hw_updatetxtriglevel(ah, true); 
     526  
     527-       if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) { 
     528-               if (status & ATH9K_INT_RXEOL) { 
     529-                       ah->imask &= ~(ATH9K_INT_RXEOL | ATH9K_INT_RXORN); 
     530-                       ath9k_hw_set_interrupts(ah, ah->imask); 
     531-               } 
     532+       if (status & ATH9K_INT_RXEOL) { 
     533+               ah->imask &= ~(ATH9K_INT_RXEOL | ATH9K_INT_RXORN); 
     534+               ath9k_hw_set_interrupts(ah, ah->imask); 
     535        } 
     536  
     537        if (status & ATH9K_INT_MIB) { 
     538@@ -1680,6 +1674,7 @@ static int ath9k_config(struct ieee80211 
     539  
     540        if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { 
     541                struct ieee80211_channel *curchan = hw->conf.channel; 
     542+               struct ath9k_channel old_chan; 
     543                int pos = curchan->hw_value; 
     544                int old_pos = -1; 
     545                unsigned long flags; 
     546@@ -1696,15 +1691,25 @@ static int ath9k_config(struct ieee80211 
     547                        "Set channel: %d MHz type: %d\n", 
     548                        curchan->center_freq, conf->channel_type); 
     549  
     550-               ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos], 
     551-                                         curchan, conf->channel_type); 
     552- 
     553                /* update survey stats for the old channel before switching */ 
     554                spin_lock_irqsave(&common->cc_lock, flags); 
     555                ath_update_survey_stats(sc); 
     556                spin_unlock_irqrestore(&common->cc_lock, flags); 
     557  
     558                /* 
     559+                * Preserve the current channel values, before updating 
     560+                * the same channel 
     561+                */ 
     562+               if (old_pos == pos) { 
     563+                       memcpy(&old_chan, &sc->sc_ah->channels[pos], 
     564+                               sizeof(struct ath9k_channel)); 
     565+                       ah->curchan = &old_chan; 
     566+               } 
     567+ 
     568+               ath9k_cmn_update_ichannel(&sc->sc_ah->channels[pos], 
     569+                                         curchan, conf->channel_type); 
     570+ 
     571+               /* 
     572                 * If the operating channel changes, change the survey in-use flags 
     573                 * along with it. 
     574                 * Reset the survey data for the new channel, unless we're switching 
     575--- a/drivers/net/wireless/ath/ath9k/recv.c 
     576+++ b/drivers/net/wireless/ath/ath9k/recv.c 
     577@@ -761,7 +761,7 @@ static struct ath_buf *ath_get_next_rx_b 
     578         * on.  All this is necessary because of our use of 
     579         * a self-linked list to avoid rx overruns. 
     580         */ 
     581-       ret = ath9k_hw_rxprocdesc(ah, ds, rs, 0); 
     582+       ret = ath9k_hw_rxprocdesc(ah, ds, rs); 
     583        if (ret == -EINPROGRESS) { 
     584                struct ath_rx_status trs; 
     585                struct ath_buf *tbf; 
     586@@ -787,7 +787,7 @@ static struct ath_buf *ath_get_next_rx_b 
     587                 */ 
     588  
     589                tds = tbf->bf_desc; 
     590-               ret = ath9k_hw_rxprocdesc(ah, tds, &trs, 0); 
     591+               ret = ath9k_hw_rxprocdesc(ah, tds, &trs); 
     592                if (ret == -EINPROGRESS) 
     593                        return NULL; 
     594        } 
     595@@ -1978,5 +1978,10 @@ requeue: 
     596  
     597        spin_unlock_bh(&sc->rx.rxbuflock); 
     598  
     599+       if (!(ah->imask & ATH9K_INT_RXEOL)) { 
     600+               ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN); 
     601+               ath9k_hw_set_interrupts(ah, ah->imask); 
     602+       } 
     603+ 
     604        return 0; 
     605 } 
     606--- a/drivers/net/wireless/ath/ath9k/mac.c 
     607+++ b/drivers/net/wireless/ath/ath9k/mac.c 
     608@@ -345,21 +345,8 @@ int ath9k_hw_setuptxqueue(struct ath_hw  
     609        } 
     610        memset(qi, 0, sizeof(struct ath9k_tx_queue_info)); 
     611        qi->tqi_type = type; 
     612-       if (qinfo == NULL) { 
     613-               qi->tqi_qflags = 
     614-                       TXQ_FLAG_TXOKINT_ENABLE 
     615-                       | TXQ_FLAG_TXERRINT_ENABLE 
     616-                       | TXQ_FLAG_TXDESCINT_ENABLE | TXQ_FLAG_TXURNINT_ENABLE; 
     617-               qi->tqi_aifs = INIT_AIFS; 
     618-               qi->tqi_cwmin = ATH9K_TXQ_USEDEFAULT; 
     619-               qi->tqi_cwmax = INIT_CWMAX; 
     620-               qi->tqi_shretry = INIT_SH_RETRY; 
     621-               qi->tqi_lgretry = INIT_LG_RETRY; 
     622-               qi->tqi_physCompBuf = 0; 
     623-       } else { 
     624-               qi->tqi_physCompBuf = qinfo->tqi_physCompBuf; 
     625-               (void) ath9k_hw_set_txq_props(ah, q, qinfo); 
     626-       } 
     627+       qi->tqi_physCompBuf = qinfo->tqi_physCompBuf; 
     628+       (void) ath9k_hw_set_txq_props(ah, q, qinfo); 
     629  
     630        return q; 
     631 } 
     632@@ -564,7 +551,7 @@ bool ath9k_hw_resettxqueue(struct ath_hw 
     633 EXPORT_SYMBOL(ath9k_hw_resettxqueue); 
     634  
     635 int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, 
     636-                       struct ath_rx_status *rs, u64 tsf) 
     637+                       struct ath_rx_status *rs) 
     638 { 
     639        struct ar5416_desc ads; 
     640        struct ar5416_desc *adsp = AR5416DESC(ds); 
     641--- a/drivers/net/wireless/ath/ath9k/mac.h 
     642+++ b/drivers/net/wireless/ath/ath9k/mac.h 
     643@@ -687,7 +687,7 @@ int ath9k_hw_setuptxqueue(struct ath_hw  
     644 bool ath9k_hw_releasetxqueue(struct ath_hw *ah, u32 q); 
     645 bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q); 
     646 int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds, 
     647-                       struct ath_rx_status *rs, u64 tsf); 
     648+                       struct ath_rx_status *rs); 
     649 void ath9k_hw_setuprxdesc(struct ath_hw *ah, struct ath_desc *ds, 
     650                          u32 size, u32 flags); 
     651 bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set); 
     652--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
     653+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
     654@@ -839,20 +839,8 @@ static bool ar9003_hw_init_cal(struct at 
     655                               struct ath9k_channel *chan) 
     656 { 
     657        struct ath_common *common = ath9k_hw_common(ah); 
     658-       struct ath9k_hw_capabilities *pCap = &ah->caps; 
     659-       int val; 
     660        bool txiqcal_done = false; 
     661  
     662-       val = REG_READ(ah, AR_ENT_OTP); 
     663-       ath_dbg(common, ATH_DBG_CALIBRATE, "ath9k: AR_ENT_OTP 0x%x\n", val); 
     664- 
     665-       /* Configure rx/tx chains before running AGC/TxiQ cals */ 
     666-       if (val & AR_ENT_OTP_CHAIN2_DISABLE) 
     667-               ar9003_hw_set_chain_masks(ah, 0x3, 0x3); 
     668-       else 
     669-               ar9003_hw_set_chain_masks(ah, pCap->rx_chainmask, 
     670-                                         pCap->tx_chainmask); 
     671- 
     672        /* Do Tx IQ Calibration */ 
     673        REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_1, 
     674                      AR_PHY_TX_IQCAL_CONTROL_1_IQCORR_I_Q_COFF_DELPT, 
     675@@ -887,9 +875,6 @@ static bool ar9003_hw_init_cal(struct at 
     676        if (txiqcal_done) 
     677                ar9003_hw_tx_iq_cal_post_proc(ah); 
     678  
     679-       /* Revert chainmasks to their original values before NF cal */ 
     680-       ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); 
     681- 
     682        ath9k_hw_start_nfcal(ah, true); 
     683  
     684        /* Initialize list pointers */ 
     685--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c 
     686+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c 
     687@@ -540,7 +540,7 @@ static void ar9003_hw_init_bb(struct ath 
     688        udelay(synthDelay + BASE_ACTIVATE_DELAY); 
     689 } 
     690  
     691-void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) 
     692+static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) 
     693 { 
     694        switch (rx) { 
     695        case 0x5: 
     696--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
     697+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
     698@@ -1124,6 +1124,4 @@ 
     699 #define AR_PHY_CL_TAB_CL_GAIN_MOD              0x1f 
     700 #define AR_PHY_CL_TAB_CL_GAIN_MOD_S            0 
     701  
     702-void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); 
     703- 
     704 #endif  /* AR9003_PHY_H */ 
     705--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
     706+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
     707@@ -558,8 +558,7 @@ struct ath_ant_comb { 
     708 #define SC_OP_BT_PRIORITY_DETECTED   BIT(12) 
     709 #define SC_OP_BT_SCAN               BIT(13) 
     710 #define SC_OP_ANI_RUN               BIT(14) 
     711-#define SC_OP_ENABLE_APM            BIT(15) 
     712-#define SC_OP_PRIM_STA_VIF          BIT(16) 
     713+#define SC_OP_PRIM_STA_VIF          BIT(15) 
     714  
     715 /* Powersave flags */ 
     716 #define PS_WAIT_FOR_BEACON        BIT(0) 
     717@@ -664,7 +663,6 @@ extern int led_blink; 
     718 extern bool is_ath9k_unloaded; 
     719  
     720 irqreturn_t ath_isr(int irq, void *dev); 
     721-void ath9k_init_crypto(struct ath_softc *sc); 
     722 int ath9k_init_device(u16 devid, struct ath_softc *sc, 
     723                    const struct ath_bus_ops *bus_ops); 
     724 void ath9k_deinit_device(struct ath_softc *sc); 
     725--- a/drivers/net/wireless/ath/ath9k/common.c 
     726+++ b/drivers/net/wireless/ath/ath9k/common.c 
     727@@ -169,6 +169,32 @@ void ath9k_cmn_update_txpow(struct ath_h 
     728 } 
     729 EXPORT_SYMBOL(ath9k_cmn_update_txpow); 
     730  
     731+void ath9k_cmn_init_crypto(struct ath_hw *ah) 
     732+{ 
     733+       struct ath_common *common = ath9k_hw_common(ah); 
     734+       int i = 0; 
     735+ 
     736+       /* Get the hardware key cache size. */ 
     737+       common->keymax = AR_KEYTABLE_SIZE; 
     738+ 
     739+       /* 
     740+        * Check whether the separate key cache entries 
     741+        * are required to handle both tx+rx MIC keys. 
     742+        * With split mic keys the number of stations is limited 
     743+        * to 27 otherwise 59. 
     744+        */ 
     745+       if (ah->misc_mode & AR_PCU_MIC_NEW_LOC_ENA) 
     746+               common->crypt_caps |= ATH_CRYPT_CAP_MIC_COMBINED; 
     747+ 
     748+       /* 
     749+        * Reset the key cache since some parts do not 
     750+        * reset the contents on initial power up. 
     751+        */ 
     752+       for (i = 0; i < common->keymax; i++) 
     753+               ath_hw_keyreset(common, (u16) i); 
     754+} 
     755+EXPORT_SYMBOL(ath9k_cmn_init_crypto); 
     756+ 
     757 static int __init ath9k_cmn_init(void) 
     758 { 
     759        return 0; 
     760--- a/drivers/net/wireless/ath/ath9k/common.h 
     761+++ b/drivers/net/wireless/ath/ath9k/common.h 
     762@@ -62,3 +62,4 @@ void ath9k_cmn_btcoex_bt_stomp(struct at 
     763                                  enum ath_stomp_type stomp_type); 
     764 void ath9k_cmn_update_txpow(struct ath_hw *ah, u16 cur_txpow, 
     765                            u16 new_txpow, u16 *txpower); 
     766+void ath9k_cmn_init_crypto(struct ath_hw *ah); 
     767--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c 
     768+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c 
     769@@ -572,25 +572,6 @@ err: 
     770        return -EINVAL; 
     771 } 
     772  
     773-static void ath9k_init_crypto(struct ath9k_htc_priv *priv) 
     774-{ 
     775-       struct ath_common *common = ath9k_hw_common(priv->ah); 
     776-       int i = 0; 
     777- 
     778-       /* Get the hardware key cache size. */ 
     779-       common->keymax = AR_KEYTABLE_SIZE; 
     780- 
     781-       if (priv->ah->misc_mode & AR_PCU_MIC_NEW_LOC_ENA) 
     782-               common->crypt_caps |= ATH_CRYPT_CAP_MIC_COMBINED; 
     783- 
     784-       /* 
     785-        * Reset the key cache since some parts do not 
     786-        * reset the contents on initial power up. 
     787-        */ 
     788-       for (i = 0; i < common->keymax; i++) 
     789-               ath_hw_keyreset(common, (u16) i); 
     790-} 
     791- 
     792 static void ath9k_init_channels_rates(struct ath9k_htc_priv *priv) 
     793 { 
     794        if (priv->ah->caps.hw_caps & ATH9K_HW_CAP_2GHZ) { 
     795@@ -720,7 +701,7 @@ static int ath9k_init_priv(struct ath9k_ 
     796        for (i = 0; i < ATH9K_HTC_MAX_BCN_VIF; i++) 
     797                priv->cur_beacon_conf.bslot[i] = NULL; 
     798  
     799-       ath9k_init_crypto(priv); 
     800+       ath9k_cmn_init_crypto(ah); 
     801        ath9k_init_channels_rates(priv); 
     802        ath9k_init_misc(priv); 
     803  
     804--- a/drivers/net/wireless/ath/ath9k/init.c 
     805+++ b/drivers/net/wireless/ath/ath9k/init.c 
     806@@ -404,31 +404,6 @@ fail: 
     807        return error; 
     808 } 
     809  
     810-void ath9k_init_crypto(struct ath_softc *sc) 
     811-{ 
     812-       struct ath_common *common = ath9k_hw_common(sc->sc_ah); 
     813-       int i = 0; 
     814- 
     815-       /* Get the hardware key cache size. */ 
     816-       common->keymax = AR_KEYTABLE_SIZE; 
     817- 
     818-       /* 
     819-        * Reset the key cache since some parts do not 
     820-        * reset the contents on initial power up. 
     821-        */ 
     822-       for (i = 0; i < common->keymax; i++) 
     823-               ath_hw_keyreset(common, (u16) i); 
     824- 
     825-       /* 
     826-        * Check whether the separate key cache entries 
     827-        * are required to handle both tx+rx MIC keys. 
     828-        * With split mic keys the number of stations is limited 
     829-        * to 27 otherwise 59. 
     830-        */ 
     831-       if (sc->sc_ah->misc_mode & AR_PCU_MIC_NEW_LOC_ENA) 
     832-               common->crypt_caps |= ATH_CRYPT_CAP_MIC_COMBINED; 
     833-} 
     834- 
     835 static int ath9k_init_btcoex(struct ath_softc *sc) 
     836 { 
     837        struct ath_txq *txq; 
     838@@ -630,7 +605,7 @@ static int ath9k_init_softc(u16 devid, s 
     839        if (ret) 
     840                goto err_btcoex; 
     841  
     842-       ath9k_init_crypto(sc); 
     843+       ath9k_cmn_init_crypto(sc->sc_ah); 
     844        ath9k_init_misc(sc); 
     845  
     846        return 0; 
     847--- a/drivers/net/wireless/ath/ath9k/pci.c 
     848+++ b/drivers/net/wireless/ath/ath9k/pci.c 
     849@@ -129,7 +129,7 @@ static void ath_pci_aspm_init(struct ath 
     850                return; 
     851  
     852        parent = pdev->bus->self; 
     853-       if (WARN_ON(!parent)) 
     854+       if (!parent) 
     855                return; 
     856  
     857        pos = pci_pcie_cap(parent); 
     858@@ -338,7 +338,7 @@ static int ath_pci_resume(struct device  
     859           * semi-random values after suspend/resume. 
     860           */ 
     861        ath9k_ps_wakeup(sc); 
     862-       ath9k_init_crypto(sc); 
     863+       ath9k_cmn_init_crypto(sc->sc_ah); 
     864        ath9k_ps_restore(sc); 
     865  
     866        sc->ps_idle = true; 
     867--- a/drivers/net/wireless/ath/ath9k/calib.c 
     868+++ b/drivers/net/wireless/ath/ath9k/calib.c 
     869@@ -82,7 +82,6 @@ static void ath9k_hw_update_nfcal_hist_b 
     870                                              int16_t *nfarray) 
     871 { 
     872        struct ath_common *common = ath9k_hw_common(ah); 
     873-       struct ieee80211_conf *conf = &common->hw->conf; 
     874        struct ath_nf_limits *limit; 
     875        struct ath9k_nfcal_hist *h; 
     876        bool high_nf_mid = false; 
     877@@ -94,7 +93,7 @@ static void ath9k_hw_update_nfcal_hist_b 
     878  
     879        for (i = 0; i < NUM_NF_READINGS; i++) { 
     880                if (!(chainmask & (1 << i)) || 
     881-                   ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf))) 
     882+                   ((i >= AR5416_MAX_CHAINS) && !IS_CHAN_HT40(ah->curchan))) 
     883                        continue; 
     884  
     885                h[i].nfCalBuffer[h[i].currIndex] = nfarray[i]; 
     886--- a/drivers/net/wireless/ath/ath9k/debug.c 
     887+++ b/drivers/net/wireless/ath/ath9k/debug.c 
     888@@ -1163,6 +1163,59 @@ static const struct file_operations fops 
     889        .llseek = default_llseek,/* read accesses f_pos */ 
     890 }; 
     891  
     892+static ssize_t read_file_dump_nfcal(struct file *file, char __user *user_buf, 
     893+                                   size_t count, loff_t *ppos) 
     894+{ 
     895+       struct ath_softc *sc = file->private_data; 
     896+       struct ath_hw *ah = sc->sc_ah; 
     897+       struct ath9k_nfcal_hist *h = sc->caldata.nfCalHist; 
     898+       struct ath_common *common = ath9k_hw_common(ah); 
     899+       struct ieee80211_conf *conf = &common->hw->conf; 
     900+       u32 len = 0, size = 1500; 
     901+       u32 i, j; 
     902+       ssize_t retval = 0; 
     903+       char *buf; 
     904+       u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; 
     905+       u8 nread; 
     906+ 
     907+       buf = kzalloc(size, GFP_KERNEL); 
     908+       if (!buf) 
     909+               return -ENOMEM; 
     910+ 
     911+       len += snprintf(buf + len, size - len, 
     912+                       "Channel Noise Floor : %d\n", ah->noise); 
     913+       len += snprintf(buf + len, size - len, 
     914+                       "Chain | privNF | # Readings | NF Readings\n"); 
     915+       for (i = 0; i < NUM_NF_READINGS; i++) { 
     916+               if (!(chainmask & (1 << i)) || 
     917+                   ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf))) 
     918+                       continue; 
     919+ 
     920+               nread = AR_PHY_CCA_FILTERWINDOW_LENGTH - h[i].invalidNFcount; 
     921+               len += snprintf(buf + len, size - len, " %d\t %d\t %d\t\t", 
     922+                               i, h[i].privNF, nread); 
     923+               for (j = 0; j < nread; j++) 
     924+                       len += snprintf(buf + len, size - len, 
     925+                                       " %d", h[i].nfCalBuffer[j]); 
     926+               len += snprintf(buf + len, size - len, "\n"); 
     927+       } 
     928+ 
     929+       if (len > size) 
     930+               len = size; 
     931+ 
     932+       retval = simple_read_from_buffer(user_buf, count, ppos, buf, len); 
     933+       kfree(buf); 
     934+ 
     935+       return retval; 
     936+} 
     937+ 
     938+static const struct file_operations fops_dump_nfcal = { 
     939+       .read = read_file_dump_nfcal, 
     940+       .open = ath9k_debugfs_open, 
     941+       .owner = THIS_MODULE, 
     942+       .llseek = default_llseek, 
     943+}; 
     944+ 
     945 static ssize_t read_file_base_eeprom(struct file *file, char __user *user_buf, 
     946                                     size_t count, loff_t *ppos) 
     947 { 
     948@@ -1262,6 +1315,8 @@ int ath9k_init_debug(struct ath_hw *ah) 
     949                            &ah->config.cwm_ignore_extcca); 
     950        debugfs_create_file("regdump", S_IRUSR, sc->debug.debugfs_phy, sc, 
     951                            &fops_regdump); 
     952+       debugfs_create_file("dump_nfcal", S_IRUSR, sc->debug.debugfs_phy, sc, 
     953+                           &fops_dump_nfcal); 
     954        debugfs_create_file("base_eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, 
     955                            &fops_base_eeprom); 
     956        debugfs_create_file("modal_eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, 
     957--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
     958+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
     959@@ -69,7 +69,7 @@ static int ar9003_hw_power_interpolate(i 
     960 static const struct ar9300_eeprom ar9300_default = { 
     961        .eepromVersion = 2, 
     962        .templateVersion = 2, 
     963-       .macAddr = {1, 2, 3, 4, 5, 6}, 
     964+       .macAddr = {0, 2, 3, 4, 5, 6}, 
     965        .custData = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     966                     0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
     967        .baseEepHeader = { 
     968--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c 
     969+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c 
     970@@ -349,10 +349,7 @@ static u32 ath9k_hw_4k_get_eeprom(struct 
     971        case EEP_ANT_DIV_CTL1: 
     972                return pModal->antdiv_ctl1; 
     973        case EEP_TXGAIN_TYPE: 
     974-               if (ver_minor >= AR5416_EEP_MINOR_VER_19) 
     975-                       return pBase->txGainType; 
     976-               else 
     977-                       return AR5416_EEP_TXGAIN_ORIGINAL; 
     978+               return pBase->txGainType; 
     979        default: 
     980                return 0; 
     981        } 
  • trunk/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch

    r27958 r27972  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1499,15 +1499,6 @@ static int ath9k_add_interface(struct ie 
     3@@ -1493,15 +1493,6 @@ static int ath9k_add_interface(struct ie 
    44                } 
    55        } 
     
    1717                "Attach a VIF of type: %d\n", vif->type); 
    1818  
    19 @@ -1533,15 +1524,6 @@ static int ath9k_change_interface(struct 
     19@@ -1527,15 +1518,6 @@ static int ath9k_change_interface(struct 
    2020        mutex_lock(&sc->mutex); 
    2121        ath9k_ps_wakeup(sc); 
  • trunk/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch

    r27958 r27972  
    11--- a/drivers/net/wireless/ath/ath9k/debug.c 
    22+++ b/drivers/net/wireless/ath/ath9k/debug.c 
    3 @@ -1219,6 +1219,53 @@ static const struct file_operations fops 
     3@@ -1272,6 +1272,53 @@ static const struct file_operations fops 
    44        .llseek = default_llseek, 
    55 }; 
     
    5555 { 
    5656        struct ath_common *common = ath9k_hw_common(ah); 
    57 @@ -1273,6 +1320,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
     57@@ -1328,6 +1375,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
    5858        debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR, 
    5959                           sc->debug.debugfs_phy, &sc->sc_ah->gpio_val); 
  • trunk/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch

    r27958 r27972  
    11--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    3 @@ -588,6 +588,7 @@ struct ath_softc { 
     3@@ -587,6 +587,7 @@ struct ath_softc { 
    44        struct ieee80211_hw *hw; 
    55        struct device *dev; 
     
    1111--- a/drivers/net/wireless/ath/ath9k/debug.c 
    1212+++ b/drivers/net/wireless/ath/ath9k/debug.c 
    13 @@ -1323,6 +1323,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
     13@@ -1378,6 +1378,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
    1414        debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, 
    1515                            &fops_eeprom); 
  • trunk/package/mac80211/patches/531-ath9k_cur_txpower.patch

    r27958 r27972  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1731,6 +1731,8 @@ static int ath9k_config(struct ieee80211 
     3@@ -1736,6 +1736,8 @@ static int ath9k_config(struct ieee80211 
    44                        return -EINVAL; 
    55                } 
     
    1010                 * The most recent snapshot of channel->noisefloor for the old 
    1111                 * channel is only available after the hardware reset. Copy it to 
    12 @@ -1748,6 +1750,7 @@ static int ath9k_config(struct ieee80211 
     12@@ -1753,6 +1755,7 @@ static int ath9k_config(struct ieee80211 
    1313                ath9k_cmn_update_txpow(ah, sc->curtxpow, 
    1414                                       sc->config.txpowlimit, &sc->curtxpow); 
  • trunk/package/mac80211/patches/541-ath9k_aggr_queue_cleanup.patch

    r27958 r27972  
    161161                        ath_tx_queue_tid(txq, tid); 
    162162                spin_unlock_bh(&txq->axq_lock); 
    163 @@ -721,19 +722,22 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     163@@ -730,19 +731,22 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
    164164                                             int *aggr_len) 
    165165 { 
     
    189189                /* do not step over block-ack window */ 
    190190                if (!BAW_WITHIN(tid->seq_start, tid->baw_size, fi->seqno)) { 
    191 @@ -784,7 +788,9 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     191@@ -794,7 +798,9 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
    192192                if (!fi->retries) 
    193193                        ath_tx_addto_baw(sc, tid, fi->seqno); 
     
    200200                        bf_prev->bf_next = bf; 
    201201                        ath9k_hw_set_desc_link(sc->sc_ah, bf_prev->bf_desc, 
    202 @@ -792,7 +798,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     202@@ -802,7 +808,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
    203203                } 
    204204                bf_prev = bf; 
     
    209209        *aggr_len = al; 
    210210  
    211 @@ -810,7 +816,7 @@ static void ath_tx_sched_aggr(struct ath 
     211@@ -820,7 +826,7 @@ static void ath_tx_sched_aggr(struct ath 
    212212        int aggr_len; 
    213213  
     
    218218  
    219219                INIT_LIST_HEAD(&bf_q); 
    220 @@ -931,7 +937,7 @@ bool ath_tx_aggr_sleep(struct ath_softc  
     220@@ -941,7 +947,7 @@ bool ath_tx_aggr_sleep(struct ath_softc  
    221221  
    222222                spin_lock_bh(&txq->axq_lock); 
     
    227227  
    228228                tid->sched = false; 
    229 @@ -964,7 +970,7 @@ void ath_tx_aggr_wakeup(struct ath_softc 
     229@@ -974,7 +980,7 @@ void ath_tx_aggr_wakeup(struct ath_softc 
    230230                spin_lock_bh(&txq->axq_lock); 
    231231                ac->clear_ps_filter = true; 
     
    236236                        ath_txq_schedule(sc, txq); 
    237237                } 
    238 @@ -1308,7 +1314,7 @@ void ath_txq_schedule(struct ath_softc * 
     238@@ -1318,7 +1324,7 @@ void ath_txq_schedule(struct ath_softc * 
    239239                         * add tid to round-robin queue if more frames 
    240240                         * are pending for the tid 
     
    245245  
    246246                        if (tid == last_tid || 
    247 @@ -1414,7 +1420,7 @@ static void ath_tx_send_ampdu(struct ath 
     247@@ -1424,7 +1430,7 @@ static void ath_tx_send_ampdu(struct ath 
    248248         * - seqno is not within block-ack window 
    249249         * - h/w queue depth exceeds low water mark 
     
    254254            txctl->txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) { 
    255255                /* 
    256 @@ -1422,7 +1428,7 @@ static void ath_tx_send_ampdu(struct ath 
     256@@ -1432,7 +1438,7 @@ static void ath_tx_send_ampdu(struct ath 
    257257                 * for aggregation. 
    258258                 */ 
     
    263263                        ath_tx_queue_tid(txctl->txq, tid); 
    264264                return; 
    265 @@ -1753,6 +1759,7 @@ static struct ath_buf *ath_tx_setup_buff 
     265@@ -1763,6 +1769,7 @@ static struct ath_buf *ath_tx_setup_buff 
    266266                            bf->bf_buf_addr, 
    267267                            txq->axq_qnum); 
     
    271271        return bf; 
    272272 } 
    273 @@ -2370,7 +2377,7 @@ void ath_tx_node_init(struct ath_softc * 
     273@@ -2380,7 +2387,7 @@ void ath_tx_node_init(struct ath_softc * 
    274274                tid->sched     = false; 
    275275                tid->paused    = false; 
  • trunk/package/mac80211/patches/542-ath9k_limit_qlen.patch

    r27958 r27972  
    2121--- a/drivers/net/wireless/ath/ath9k/debug.c 
    2222+++ b/drivers/net/wireless/ath/ath9k/debug.c 
    23 @@ -1288,6 +1288,10 @@ int ath9k_init_debug(struct ath_hw *ah) 
     23@@ -1341,6 +1341,10 @@ int ath9k_init_debug(struct ath_hw *ah) 
    2424                            sc, &fops_wiphy); 
    2525        debugfs_create_file("xmit", S_IRUSR, sc->debug.debugfs_phy, sc, 
     
    5858                txfail = txpending = sendbar = 0; 
    5959                bf_next = bf->bf_next; 
    60 @@ -789,6 +799,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
     60@@ -799,6 +809,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_ 
    6161                        ath_tx_addto_baw(sc, tid, fi->seqno); 
    6262                ath9k_hw_set11n_aggr_middle(sc->sc_ah, bf->bf_desc, ndelim); 
     
    6666                list_add_tail(&bf->list, bf_q); 
    6767                if (bf_prev) { 
    68 @@ -1441,6 +1452,8 @@ static void ath_tx_send_ampdu(struct ath 
     68@@ -1451,6 +1462,8 @@ static void ath_tx_send_ampdu(struct ath 
    6969        if (!fi->retries) 
    7070                ath_tx_addto_baw(sc, tid, fi->seqno); 
     
    7575        TX_STAT_INC(txctl->txq->axq_qnum, a_queued_hw); 
    7676        bf->bf_lastbf = bf; 
    77 @@ -1505,7 +1518,6 @@ static void setup_frame_info(struct ieee 
     77@@ -1515,7 +1528,6 @@ static void setup_frame_info(struct ieee 
    7878        struct ath_atx_tid *tid; 
    7979        enum ath9k_key_type keytype; 
     
    8383        keytype = ath9k_cmn_get_hw_crypto_keytype(skb); 
    8484  
    85 @@ -1516,13 +1528,11 @@ static void setup_frame_info(struct ieee 
     85@@ -1526,13 +1538,11 @@ static void setup_frame_info(struct ieee 
    8686        if (an && ieee80211_is_data_qos(hdr->frame_control) && 
    8787                conf_is_ht(&hw->conf) && (sc->sc_flags & SC_OP_TXAGGR)) { 
     
    9898                hdr->seq_ctrl = cpu_to_le16(seqno << IEEE80211_SEQ_SEQ_SHIFT); 
    9999                INCR(tid->seq_next, IEEE80211_SEQ_MAX); 
    100 @@ -1766,24 +1776,14 @@ static struct ath_buf *ath_tx_setup_buff 
     100@@ -1776,24 +1786,14 @@ static struct ath_buf *ath_tx_setup_buff 
    101101  
    102102 /* FIXME: tx power */ 
     
    125125        if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && tid) { 
    126126                /* 
    127 @@ -1823,6 +1823,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
     127@@ -1833,6 +1833,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
    128128        struct ieee80211_vif *vif = info->control.vif; 
    129129        struct ath_softc *sc = hw->priv; 
     
    133133        int padpos, padsize; 
    134134        int frmlen = skb->len + FCS_LEN; 
    135 @@ -1856,6 +1857,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
     135@@ -1866,6 +1867,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
    136136  
    137137                skb_push(skb, padsize); 
     
    141141  
    142142        if ((vif && vif->type != NL80211_IFTYPE_AP && 
    143 @@ -1865,6 +1867,24 @@ int ath_tx_start(struct ieee80211_hw *hw 
     143@@ -1875,6 +1877,24 @@ int ath_tx_start(struct ieee80211_hw *hw 
    144144  
    145145        setup_frame_info(hw, skb, frmlen); 
     
    166166         * At this point, the vif, hw_key and sta pointers in the tx control 
    167167         * info are no longer valid (overwritten by the ath_frame_info data. 
    168 @@ -1883,7 +1903,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
     168@@ -1893,7 +1913,7 @@ int ath_tx_start(struct ieee80211_hw *hw 
    169169        } 
    170170        spin_unlock_bh(&txq->axq_lock); 
Note: See TracChangeset for help on using the changeset viewer.