Changeset 30551


Ignore:
Timestamp:
2012-02-15T19:02:57+01:00 (6 years ago)
Author:
nbd
Message:

ath9k: prevent writes to const data on AR9160

File:
1 edited

Legend:

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

    r30396 r30551  
    285285                ieee80211_max_network_latency; 
    286286        result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY, 
     287--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
     288+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
     289@@ -489,8 +489,6 @@ static int ar5008_hw_rf_alloc_ext_banks( 
     290        ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows); 
     291        ATH_ALLOC_BANK(ah->analogBank6TPCData, ah->iniBank6TPC.ia_rows); 
     292        ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows); 
     293-       ATH_ALLOC_BANK(ah->addac5416_21, 
     294-                      ah->iniAddac.ia_rows * ah->iniAddac.ia_columns); 
     295        ATH_ALLOC_BANK(ah->bank6Temp, ah->iniBank6.ia_rows); 
     296  
     297        return 0; 
     298@@ -519,7 +517,6 @@ static void ar5008_hw_rf_free_ext_banks( 
     299        ATH_FREE_BANK(ah->analogBank6Data); 
     300        ATH_FREE_BANK(ah->analogBank6TPCData); 
     301        ATH_FREE_BANK(ah->analogBank7Data); 
     302-       ATH_FREE_BANK(ah->addac5416_21); 
     303        ATH_FREE_BANK(ah->bank6Temp); 
     304  
     305 #undef ATH_FREE_BANK 
     306@@ -805,27 +802,7 @@ static int ar5008_hw_process_ini(struct  
     307        if (ah->eep_ops->set_addac) 
     308                ah->eep_ops->set_addac(ah, chan); 
     309  
     310-       if (AR_SREV_5416_22_OR_LATER(ah)) { 
     311-               REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites); 
     312-       } else { 
     313-               struct ar5416IniArray temp; 
     314-               u32 addacSize = 
     315-                       sizeof(u32) * ah->iniAddac.ia_rows * 
     316-                       ah->iniAddac.ia_columns; 
     317- 
     318-               /* For AR5416 2.0/2.1 */ 
     319-               memcpy(ah->addac5416_21, 
     320-                      ah->iniAddac.ia_array, addacSize); 
     321- 
     322-               /* override CLKDRV value at [row, column] = [31, 1] */ 
     323-               (ah->addac5416_21)[31 * ah->iniAddac.ia_columns + 1] = 0; 
     324- 
     325-               temp.ia_array = ah->addac5416_21; 
     326-               temp.ia_columns = ah->iniAddac.ia_columns; 
     327-               temp.ia_rows = ah->iniAddac.ia_rows; 
     328-               REG_WRITE_ARRAY(&temp, 1, regWrites); 
     329-       } 
     330- 
     331+       REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites); 
     332        REG_WRITE(ah, AR_PHY_ADC_SERIAL_CTL, AR_PHY_SEL_INTERNAL_ADDAC); 
     333  
     334        ENABLE_REGWRITE_BUFFER(ah); 
     335--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
     336+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
     337@@ -180,6 +180,25 @@ static void ar9002_hw_init_mode_regs(str 
     338                INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac, 
     339                               ARRAY_SIZE(ar5416Addac), 2); 
     340        } 
     341+ 
     342+       /* iniAddac needs to be modified for these chips */ 
     343+       if (AR_SREV_9160(ah) || !AR_SREV_5416_22_OR_LATER(ah)) { 
     344+               struct ar5416IniArray *addac = &ah->iniAddac; 
     345+               u32 size = sizeof(u32) * addac->ia_rows * addac->ia_columns; 
     346+               u32 *data; 
     347+ 
     348+               data = kmalloc(size, GFP_KERNEL); 
     349+               if (!data) 
     350+                       return; 
     351+ 
     352+               memcpy(data, addac->ia_array, size); 
     353+               addac->ia_array = data; 
     354+ 
     355+               if (!AR_SREV_5416_22_OR_LATER(ah)) { 
     356+                       /* override CLKDRV value */ 
     357+                       INI_RA(addac, 31,1) = 0; 
     358+               } 
     359+       } 
     360 } 
     361  
     362 /* Support for Japan ch.14 (2484) spread */ 
     363--- a/drivers/net/wireless/ath/ath9k/hw.h 
     364+++ b/drivers/net/wireless/ath/ath9k/hw.h 
     365@@ -940,7 +940,6 @@ struct ath_hw { 
     366        u32 *analogBank6Data; 
     367        u32 *analogBank6TPCData; 
     368        u32 *analogBank7Data; 
     369-       u32 *addac5416_21; 
     370        u32 *bank6Temp; 
     371  
     372        u8 txpower_limit; 
Note: See TracChangeset for help on using the changeset viewer.