Changeset 36035


Ignore:
Timestamp:
2013-03-15T14:58:47+01:00 (5 years ago)
Author:
nbd
Message:

ath9k: fix issues with disabling rx/tx antennas

File:
1 edited

Legend:

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

    r36007 r36035  
    301301 { 
    302302        struct ieee80211_sub_if_data *sdata = 
    303 @@ -1126,6 +1175,9 @@ static void ieee80211_iface_work(struct 
     303@@ -1126,6 +1175,9 @@ static void ieee80211_iface_work(struct  
    304304                                break; 
    305305                        ieee80211_mesh_rx_queued_mgmt(sdata, skb); 
     
    807807        /* time of last status update */ 
    808808        unsigned long stats_update; 
     809--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
     810+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
     811@@ -1023,6 +1023,7 @@ static bool ar9003_hw_init_cal(struct at 
     812                                          AR_PHY_AGC_CONTROL_FLTR_CAL   | 
     813                                          AR_PHY_AGC_CONTROL_PKDET_CAL; 
     814  
     815+       /* Use chip chainmask only for calibration */ 
     816        ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); 
     817  
     818        if (rtt) { 
     819@@ -1150,6 +1151,9 @@ skip_tx_iqcal: 
     820                ar9003_hw_rtt_disable(ah); 
     821        } 
     822  
     823+       /* Revert chainmask to runtime parameters */ 
     824+       ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask); 
     825+ 
     826        /* Initialize list pointers */ 
     827        ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL; 
     828  
     829--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
     830+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c 
     831@@ -3606,6 +3606,12 @@ static void ar9003_hw_ant_ctrl_apply(str 
     832        value = ar9003_hw_ant_ctrl_common_2_get(ah, is2ghz); 
     833        REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM_2, AR_SWITCH_TABLE_COM2_ALL, value); 
     834  
     835+       if ((AR_SREV_9462(ah)) && (ah->rxchainmask == 0x2)) { 
     836+               value = ar9003_hw_ant_ctrl_chain_get(ah, 1, is2ghz); 
     837+               REG_RMW_FIELD(ah, switch_chain_reg[0], 
     838+                             AR_SWITCH_TABLE_ALL, value); 
     839+       } 
     840+ 
     841        for (chain = 0; chain < AR9300_MAX_CHAINS; chain++) { 
     842                if ((ah->rxchainmask & BIT(chain)) || 
     843                    (ah->txchainmask & BIT(chain))) { 
     844@@ -3772,6 +3778,17 @@ static void ar9003_hw_atten_apply(struct 
     845                                          AR_PHY_EXT_ATTEN_CTL_2, 
     846                                         }; 
     847  
     848+       if ((AR_SREV_9462(ah)) && (ah->rxchainmask == 0x2)) { 
     849+               value = ar9003_hw_atten_chain_get(ah, 1, chan); 
     850+               REG_RMW_FIELD(ah, ext_atten_reg[0], 
     851+                             AR_PHY_EXT_ATTEN_CTL_XATTEN1_DB, value); 
     852+ 
     853+               value = ar9003_hw_atten_chain_get_margin(ah, 1, chan); 
     854+               REG_RMW_FIELD(ah, ext_atten_reg[0], 
     855+                             AR_PHY_EXT_ATTEN_CTL_XATTEN1_MARGIN, 
     856+                             value); 
     857+       } 
     858+ 
     859        /* Test value. if 0 then attenuation is unused. Don't load anything. */ 
     860        for (i = 0; i < 3; i++) { 
     861                if (ah->txchainmask & BIT(i)) { 
Note: See TracChangeset for help on using the changeset viewer.