Changeset 27276


Ignore:
Timestamp:
2011-06-24T21:53:18+02:00 (7 years ago)
Author:
nbd
Message:

ath9k: add some more pending fixes

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

Legend:

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

    r27275 r27276  
    246246        WLAN_STA_MFP            = 1<<10, 
    247247        WLAN_STA_BLOCK_BA       = 1<<11, 
     248--- a/drivers/net/wireless/ath/ath9k/beacon.c 
     249+++ b/drivers/net/wireless/ath/ath9k/beacon.c 
     250@@ -384,7 +384,9 @@ void ath_beacon_tasklet(unsigned long da 
     251                        ath_dbg(common, ATH_DBG_BSTUCK, 
     252                                "beacon is officially stuck\n"); 
     253                        sc->sc_flags |= SC_OP_TSF_RESET; 
     254+                       spin_lock(&sc->sc_pcu_lock); 
     255                        ath_reset(sc, true); 
     256+                       spin_unlock(&sc->sc_pcu_lock); 
     257                } 
     258  
     259                return; 
     260--- a/drivers/net/wireless/ath/ath9k/main.c 
     261+++ b/drivers/net/wireless/ath/ath9k/main.c 
     262@@ -617,8 +617,11 @@ void ath_hw_check(struct work_struct *wo 
     263        ath_dbg(common, ATH_DBG_RESET, "Possible baseband hang, " 
     264                "busy=%d (try %d)\n", busy, sc->hw_busy_count + 1); 
     265        if (busy >= 99) { 
     266-               if (++sc->hw_busy_count >= 3) 
     267+               if (++sc->hw_busy_count >= 3) { 
     268+                       spin_lock_bh(&sc->sc_pcu_lock); 
     269                        ath_reset(sc, true); 
     270+                       spin_unlock_bh(&sc->sc_pcu_lock); 
     271+               } 
     272        } else if (busy >= 0) 
     273                sc->hw_busy_count = 0; 
     274  
     275@@ -637,7 +640,9 @@ static void ath_hw_pll_rx_hang_check(str 
     276                        /* Rx is hung for more than 500ms. Reset it */ 
     277                        ath_dbg(common, ATH_DBG_RESET, 
     278                                "Possible RX hang, resetting"); 
     279+                       spin_lock_bh(&sc->sc_pcu_lock); 
     280                        ath_reset(sc, true); 
     281+                       spin_unlock_bh(&sc->sc_pcu_lock); 
     282                        count = 0; 
     283                } 
     284        } else 
     285@@ -674,7 +679,9 @@ void ath9k_tasklet(unsigned long data) 
     286  
     287        if ((status & ATH9K_INT_FATAL) || 
     288            (status & ATH9K_INT_BB_WATCHDOG)) { 
     289+               spin_lock(&sc->sc_pcu_lock); 
     290                ath_reset(sc, true); 
     291+               spin_unlock(&sc->sc_pcu_lock); 
     292                return; 
     293        } 
     294  
     295@@ -980,7 +987,6 @@ int ath_reset(struct ath_softc *sc, bool 
     296        del_timer_sync(&common->ani.timer); 
     297  
     298        ath9k_ps_wakeup(sc); 
     299-       spin_lock_bh(&sc->sc_pcu_lock); 
     300  
     301        ieee80211_stop_queues(hw); 
     302  
     303@@ -1023,7 +1029,6 @@ int ath_reset(struct ath_softc *sc, bool 
     304        } 
     305  
     306        ieee80211_wake_queues(hw); 
     307-       spin_unlock_bh(&sc->sc_pcu_lock); 
     308  
     309        /* Start ANI */ 
     310        if (!common->disable_ani) 
     311@@ -2326,9 +2331,9 @@ static void ath9k_flush(struct ieee80211 
     312        ath9k_ps_wakeup(sc); 
     313        spin_lock_bh(&sc->sc_pcu_lock); 
     314        drain_txq = ath_drain_all_txq(sc, false); 
     315-       spin_unlock_bh(&sc->sc_pcu_lock); 
     316        if (!drain_txq) 
     317                ath_reset(sc, false); 
     318+       spin_unlock_bh(&sc->sc_pcu_lock); 
     319        ath9k_ps_restore(sc); 
     320        ieee80211_wake_queues(hw); 
     321  
     322--- a/drivers/net/wireless/ath/ath9k/xmit.c 
     323+++ b/drivers/net/wireless/ath/ath9k/xmit.c 
     324@@ -565,11 +565,8 @@ static void ath_tx_complete_aggr(struct  
     325  
     326        rcu_read_unlock(); 
     327  
     328-       if (needreset) { 
     329-               spin_unlock_bh(&sc->sc_pcu_lock); 
     330+       if (needreset) 
     331                ath_reset(sc, false); 
     332-               spin_lock_bh(&sc->sc_pcu_lock); 
     333-       } 
     334 } 
     335  
     336 static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf, 
     337@@ -2169,7 +2166,9 @@ static void ath_tx_complete_poll_work(st 
     338        if (needreset) { 
     339                ath_dbg(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET, 
     340                        "tx hung, resetting the chip\n"); 
     341+               spin_lock_bh(&sc->sc_pcu_lock); 
     342                ath_reset(sc, true); 
     343+               spin_unlock_bh(&sc->sc_pcu_lock); 
     344        } 
     345  
     346        ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 
     347--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 
     348+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 
     349@@ -236,7 +236,7 @@ static void ar9003_paprd_get_gain_table( 
     350        memset(entry, 0, sizeof(ah->paprd_gain_table_entries)); 
     351        memset(index, 0, sizeof(ah->paprd_gain_table_index)); 
     352  
     353-       for (i = 0; i < 32; i++) { 
     354+       for (i = 0; i < PAPRD_GAIN_TABLE_ENTRIES; i++) { 
     355                entry[i] = REG_READ(ah, reg); 
     356                index[i] = (entry[i] >> 24) & 0xff; 
     357                reg += 4; 
     358@@ -246,13 +246,13 @@ static void ar9003_paprd_get_gain_table( 
     359 static unsigned int ar9003_get_desired_gain(struct ath_hw *ah, int chain, 
     360                                            int target_power) 
     361 { 
     362-       int olpc_gain_delta = 0; 
     363+       int olpc_gain_delta = 0, cl_gain_mod; 
     364        int alpha_therm, alpha_volt; 
     365        int therm_cal_value, volt_cal_value; 
     366        int therm_value, volt_value; 
     367        int thermal_gain_corr, voltage_gain_corr; 
     368        int desired_scale, desired_gain = 0; 
     369-       u32 reg; 
     370+       u32 reg_olpc  = 0, reg_cl_gain  = 0; 
     371  
     372        REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, 
     373                    AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); 
     374@@ -271,15 +271,29 @@ static unsigned int ar9003_get_desired_g 
     375        volt_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, 
     376                                    AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE); 
     377  
     378-       if (chain == 0) 
     379-               reg = AR_PHY_TPC_11_B0; 
     380-       else if (chain == 1) 
     381-               reg = AR_PHY_TPC_11_B1; 
     382-       else 
     383-               reg = AR_PHY_TPC_11_B2; 
     384+       switch (chain) { 
     385+       case 0: 
     386+               reg_olpc = AR_PHY_TPC_11_B0; 
     387+               reg_cl_gain = AR_PHY_CL_TAB_0; 
     388+               break; 
     389+       case 1: 
     390+               reg_olpc = AR_PHY_TPC_11_B1; 
     391+               reg_cl_gain = AR_PHY_CL_TAB_1; 
     392+               break; 
     393+       case 2: 
     394+               reg_olpc = AR_PHY_TPC_11_B2; 
     395+               reg_cl_gain = AR_PHY_CL_TAB_2; 
     396+               break; 
     397+       default: 
     398+               ath_dbg(ath9k_hw_common(ah), ATH_DBG_CALIBRATE, 
     399+               "Invalid chainmask: %d\n", chain); 
     400+               break; 
     401+       } 
     402  
     403-       olpc_gain_delta = REG_READ_FIELD(ah, reg, 
     404+       olpc_gain_delta = REG_READ_FIELD(ah, reg_olpc, 
     405                                         AR_PHY_TPC_11_OLPC_GAIN_DELTA); 
     406+       cl_gain_mod = REG_READ_FIELD(ah, reg_cl_gain, 
     407+                                        AR_PHY_CL_TAB_CL_GAIN_MOD); 
     408  
     409        if (olpc_gain_delta >= 128) 
     410                olpc_gain_delta = olpc_gain_delta - 256; 
     411@@ -289,7 +303,7 @@ static unsigned int ar9003_get_desired_g 
     412        voltage_gain_corr = (alpha_volt * (volt_value - volt_cal_value) + 
     413                             (128 / 2)) / 128; 
     414        desired_gain = target_power - olpc_gain_delta - thermal_gain_corr - 
     415-           voltage_gain_corr + desired_scale; 
     416+           voltage_gain_corr + desired_scale + cl_gain_mod; 
     417  
     418        return desired_gain; 
     419 } 
     420@@ -727,7 +741,7 @@ int ar9003_paprd_setup_gain_table(struct 
     421        desired_gain = ar9003_get_desired_gain(ah, chain, train_power); 
     422  
     423        gain_index = 0; 
     424-       for (i = 0; i < 32; i++) { 
     425+       for (i = 0; i < PAPRD_GAIN_TABLE_ENTRIES; i++) { 
     426                if (ah->paprd_gain_table_index[i] >= desired_gain) 
     427                        break; 
     428                gain_index++; 
     429--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
     430+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
     431@@ -1121,6 +1121,9 @@ 
     432 #define AR_PHY_POWERTX_RATE8_POWERTXHT40_5     0x3F00 
     433 #define AR_PHY_POWERTX_RATE8_POWERTXHT40_5_S   8 
     434  
     435+#define AR_PHY_CL_TAB_CL_GAIN_MOD              0x1f 
     436+#define AR_PHY_CL_TAB_CL_GAIN_MOD_S            0 
     437+ 
     438 void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); 
     439  
     440 #endif  /* AR9003_PHY_H */ 
  • trunk/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch

    r27275 r27276  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1490,15 +1490,6 @@ static int ath9k_add_interface(struct ie 
     3@@ -1495,15 +1495,6 @@ static int ath9k_add_interface(struct ie 
    44                } 
    55        } 
     
    1717                "Attach a VIF of type: %d\n", vif->type); 
    1818  
    19 @@ -1524,15 +1515,6 @@ static int ath9k_change_interface(struct 
     19@@ -1529,15 +1520,6 @@ static int ath9k_change_interface(struct 
    2020        mutex_lock(&sc->mutex); 
    2121        ath9k_ps_wakeup(sc); 
Note: See TracChangeset for help on using the changeset viewer.