diff options
Diffstat (limited to 'drivers/net/wireless/ath')
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9002_calib.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_calib.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_phy.h | 34 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9485_initvals.h | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/tx.c | 11 | 
6 files changed, 38 insertions, 35 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c index e0ab0657cc3..88279e325dc 100644 --- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c @@ -868,10 +868,6 @@ static bool ar9002_hw_init_cal(struct ath_hw *ah, struct ath9k_channel *chan)  	/* Do PA Calibration */  	ar9002_hw_pa_cal(ah, true); -	/* Do NF Calibration after DC offset and other calibrations */ -	ath9k_hw_loadnf(ah, chan); -	ath9k_hw_start_nfcal(ah, true); -  	if (ah->caldata)  		ah->caldata->nfcal_pending = true; diff --git a/drivers/net/wireless/ath/ath9k/ar9003_calib.c b/drivers/net/wireless/ath/ath9k/ar9003_calib.c index 16851cb109a..12a730dcb50 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c @@ -908,12 +908,15 @@ static bool ar9003_hw_rtt_restore(struct ath_hw *ah, struct ath9k_channel *chan)  	int i;  	bool restore; -	if (!(ah->caps.hw_caps & ATH9K_HW_CAP_RTT) || !ah->caldata) +	if (!ah->caldata)  		return false;  	hist = &ah->caldata->rtt_hist; +	if (!hist->num_readings) +		return false; +  	ar9003_hw_rtt_enable(ah); -	ar9003_hw_rtt_set_mask(ah, 0x10); +	ar9003_hw_rtt_set_mask(ah, 0x00);  	for (i = 0; i < AR9300_MAX_CHAINS; i++) {  		if (!(ah->rxchainmask & (1 << i)))  			continue; @@ -1070,6 +1073,7 @@ skip_tx_iqcal:  		if (is_reusable && (hist->num_readings < RTT_HIST_MAX)) {  			u32 *table; +			hist->num_readings++;  			for (i = 0; i < AR9300_MAX_CHAINS; i++) {  				if (!(ah->rxchainmask & (1 << i)))  					continue; @@ -1081,9 +1085,6 @@ skip_tx_iqcal:  		ar9003_hw_rtt_disable(ah);  	} -	ath9k_hw_loadnf(ah, chan); -	ath9k_hw_start_nfcal(ah, true); -  	/* Initialize list pointers */  	ah->cal_list = ah->cal_list_last = ah->cal_list_curr = NULL;  	ah->supp_cals = IQ_MISMATCH_CAL; diff --git a/drivers/net/wireless/ath/ath9k/ar9003_phy.h b/drivers/net/wireless/ath/ath9k/ar9003_phy.h index 2f4023e6608..4114fe752c6 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h @@ -572,14 +572,14 @@  #define AR_PHY_TXGAIN_TABLE      (AR_SM_BASE + 0x300) -#define AR_PHY_TX_IQCAL_CONTROL_0   (AR_SM_BASE + AR_SREV_9485(ah) ? \ -						 0x3c4 : 0x444) -#define AR_PHY_TX_IQCAL_CONTROL_1   (AR_SM_BASE + AR_SREV_9485(ah) ? \ -						 0x3c8 : 0x448) -#define AR_PHY_TX_IQCAL_START       (AR_SM_BASE + AR_SREV_9485(ah) ? \ -						 0x3c4 : 0x440) -#define AR_PHY_TX_IQCAL_STATUS_B0   (AR_SM_BASE + AR_SREV_9485(ah) ? \ -						 0x3f0 : 0x48c) +#define AR_PHY_TX_IQCAL_CONTROL_0   (AR_SM_BASE + (AR_SREV_9485(ah) ? \ +						 0x3c4 : 0x444)) +#define AR_PHY_TX_IQCAL_CONTROL_1   (AR_SM_BASE + (AR_SREV_9485(ah) ? \ +						 0x3c8 : 0x448)) +#define AR_PHY_TX_IQCAL_START       (AR_SM_BASE + (AR_SREV_9485(ah) ? \ +						 0x3c4 : 0x440)) +#define AR_PHY_TX_IQCAL_STATUS_B0   (AR_SM_BASE + (AR_SREV_9485(ah) ? \ +						 0x3f0 : 0x48c))  #define AR_PHY_TX_IQCAL_CORR_COEFF_B0(_i)    (AR_SM_BASE + \  					     (AR_SREV_9485(ah) ? \  					      0x3d0 : 0x450) + ((_i) << 2)) @@ -651,7 +651,7 @@  #define AR_SWITCH_TABLE_ALL_S (0)  #define AR_PHY_65NM_CH0_THERM       (AR_SREV_9300(ah) ? 0x16290 :\ -					(AR_SREV_9485(ah) ? 0x1628c : 0x16294)) +					(AR_SREV_9462(ah) ? 0x16294 : 0x1628c))  #define AR_PHY_65NM_CH0_THERM_LOCAL   0x80000000  #define AR_PHY_65NM_CH0_THERM_LOCAL_S 31 @@ -668,12 +668,12 @@  #define AR_PHY_65NM_CH2_RXTX2       0x16904  #define AR_CH0_TOP2		(AR_SREV_9300(ah) ? 0x1628c : \ -					(AR_SREV_9485(ah) ? 0x16284 : 0x16290)) +					(AR_SREV_9462(ah) ? 0x16290 : 0x16284))  #define AR_CH0_TOP2_XPABIASLVL		0xf000  #define AR_CH0_TOP2_XPABIASLVL_S	12  #define AR_CH0_XTAL		(AR_SREV_9300(ah) ? 0x16294 : \ -					(AR_SREV_9485(ah) ? 0x16290 : 0x16298)) +					(AR_SREV_9462(ah) ? 0x16298 : 0x16290))  #define AR_CH0_XTAL_CAPINDAC	0x7f000000  #define AR_CH0_XTAL_CAPINDAC_S	24  #define AR_CH0_XTAL_CAPOUTDAC	0x00fe0000 @@ -908,8 +908,8 @@  #define AR_PHY_TPC_5_B1         (AR_SM1_BASE + 0x208)  #define AR_PHY_TPC_6_B1         (AR_SM1_BASE + 0x20c)  #define AR_PHY_TPC_11_B1        (AR_SM1_BASE + 0x220) -#define AR_PHY_PDADC_TAB_1	(AR_SM1_BASE + (AR_SREV_AR9300(ah) ? \ -					0x240 : 0x280)) +#define AR_PHY_PDADC_TAB_1	(AR_SM1_BASE + (AR_SREV_AR9462(ah) ? \ +					0x280 : 0x240))  #define AR_PHY_TPC_19_B1	(AR_SM1_BASE + 0x240)  #define AR_PHY_TPC_19_B1_ALPHA_THERM		0xff  #define AR_PHY_TPC_19_B1_ALPHA_THERM_S		0 @@ -931,10 +931,10 @@  #define AR_PHY_AIC_SRAM_ADDR_B1	(AR_SM1_BASE + 0x5f0)  #define AR_PHY_AIC_SRAM_DATA_B1	(AR_SM1_BASE + 0x5f4) -#define AR_PHY_RTT_TABLE_SW_INTF_B(i)	(0x384 + (i) ? \ -					AR_SM1_BASE : AR_SM_BASE) -#define AR_PHY_RTT_TABLE_SW_INTF_1_B(i)	(0x388 + (i) ? \ -					AR_SM1_BASE : AR_SM_BASE) +#define AR_PHY_RTT_TABLE_SW_INTF_B(i)	(0x384 + ((i) ? \ +					AR_SM1_BASE : AR_SM_BASE)) +#define AR_PHY_RTT_TABLE_SW_INTF_1_B(i)	(0x388 + ((i) ? \ +					AR_SM1_BASE : AR_SM_BASE))  /*   * Channel 2 Register Map   */ diff --git a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h index 611ea6ce850..d16d029f81a 100644 --- a/drivers/net/wireless/ath/ath9k/ar9485_initvals.h +++ b/drivers/net/wireless/ath/ath9k/ar9485_initvals.h @@ -521,7 +521,7 @@ static const u32 ar9485_1_1_radio_postamble[][2] = {  	{0x000160ac, 0x24611800},  	{0x000160b0, 0x03284f3e},  	{0x0001610c, 0x00170000}, -	{0x00016140, 0x10804008}, +	{0x00016140, 0x50804008},  };  static const u32 ar9485_1_1_mac_postamble[][5] = { @@ -603,7 +603,7 @@ static const u32 ar9485_1_1_radio_core[][2] = {  static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_enable_L1[][2] = {  	/* Addr        allmodes */ -	{0x00018c00, 0x10052e5e}, +	{0x00018c00, 0x18052e5e},  	{0x00018c04, 0x000801d8},  	{0x00018c08, 0x0000080c},  }; @@ -776,7 +776,7 @@ static const u32 ar9485_modes_green_ob_db_tx_gain_1_1[][5] = {  static const u32 ar9485_1_1_pcie_phy_clkreq_disable_L1[][2] = {  	/* Addr        allmodes */ -	{0x00018c00, 0x10013e5e}, +	{0x00018c00, 0x18013e5e},  	{0x00018c04, 0x000801d8},  	{0x00018c08, 0x0000080c},  }; @@ -882,7 +882,7 @@ static const u32 ar9485_fast_clock_1_1_baseband_postamble[][3] = {  static const u32 ar9485_1_1_pcie_phy_pll_on_clkreq_disable_L1[][2] = {  	/* Addr        allmodes  */ -	{0x00018c00, 0x10012e5e}, +	{0x00018c00, 0x18012e5e},  	{0x00018c04, 0x000801d8},  	{0x00018c08, 0x0000080c},  }; @@ -1021,7 +1021,7 @@ static const u32 ar9485_common_rx_gain_1_1[][2] = {  static const u32 ar9485_1_1_pcie_phy_clkreq_enable_L1[][2] = {  	/* Addr        allmodes */ -	{0x00018c00, 0x10053e5e}, +	{0x00018c00, 0x18053e5e},  	{0x00018c04, 0x000801d8},  	{0x00018c08, 0x0000080c},  }; diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 4952ad8c4e8..2f91acccb7d 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c @@ -1725,6 +1725,9 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,  	if (!ath9k_hw_init_cal(ah, chan))  		return -EIO; +	ath9k_hw_loadnf(ah, chan); +	ath9k_hw_start_nfcal(ah, true); +  	ENABLE_REGWRITE_BUFFER(ah);  	ath9k_hw_restore_chainmask(ah); diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c index d20946939cd..59472e1605c 100644 --- a/drivers/net/wireless/ath/carl9170/tx.c +++ b/drivers/net/wireless/ath/carl9170/tx.c @@ -296,7 +296,8 @@ static void carl9170_tx_release(struct kref *ref)  			super = (void *)skb->data;  			txinfo->status.ampdu_len = super->s.rix;  			txinfo->status.ampdu_ack_len = super->s.cnt; -		} else if (txinfo->flags & IEEE80211_TX_STAT_ACK) { +		} else if ((txinfo->flags & IEEE80211_TX_STAT_ACK) && +			   !(txinfo->flags & IEEE80211_TX_CTL_REQ_TX_STATUS)) {  			/*  			 * drop redundant tx_status reports:  			 * @@ -308,15 +309,17 @@ static void carl9170_tx_release(struct kref *ref)  			 *  			 * 3. minstrel_ht is picky, it only accepts  			 *    reports of frames with the TX_STATUS_AMPDU flag. +			 * +			 * 4. mac80211 is not particularly interested in +			 *    feedback either [CTL_REQ_TX_STATUS not set]  			 */  			dev_kfree_skb_any(skb);  			return;  		} else {  			/* -			 * Frame has failed, but we want to keep it in -			 * case it was lost due to a power-state -			 * transition. +			 * Either the frame transmission has failed or +			 * mac80211 requested tx status.  			 */  		}  	}  |