diff options
| -rw-r--r-- | package/mac80211/patches/565-ath9k_disable_paprd.patch | 72 | 
1 files changed, 72 insertions, 0 deletions
diff --git a/package/mac80211/patches/565-ath9k_disable_paprd.patch b/package/mac80211/patches/565-ath9k_disable_paprd.patch new file mode 100644 index 000000000..079986d60 --- /dev/null +++ b/package/mac80211/patches/565-ath9k_disable_paprd.patch @@ -0,0 +1,72 @@ +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1767,6 +1767,8 @@ int ath9k_init_debug(struct ath_hw *ah) + 			    sc->debug.debugfs_phy, sc, &fops_tx_chainmask); + 	debugfs_create_file("disable_ani", S_IRUSR | S_IWUSR, + 			    sc->debug.debugfs_phy, sc, &fops_disable_ani); ++	debugfs_create_bool("paprd", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ++			    &sc->sc_ah->config.enable_paprd); + 	debugfs_create_file("regidx", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, + 			    sc, &fops_regidx); + 	debugfs_create_file("regval", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -2521,10 +2521,6 @@ int ath9k_hw_fill_cap_info(struct ath_hw + 		pCap->rx_status_len = sizeof(struct ar9003_rxs); + 		pCap->tx_desc_len = sizeof(struct ar9003_txc); + 		pCap->txs_len = sizeof(struct ar9003_txs); +-		if (!ah->config.paprd_disable && +-		    ah->eep_ops->get_eeprom(ah, EEP_PAPRD) && +-		    !AR_SREV_9462(ah)) +-			pCap->hw_caps |= ATH9K_HW_CAP_PAPRD; + 	} else { + 		pCap->tx_desc_len = sizeof(struct ath_desc); + 		if (AR_SREV_9280_20(ah)) +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -236,7 +236,6 @@ enum ath9k_hw_caps { + 	ATH9K_HW_CAP_LDPC			= BIT(6), + 	ATH9K_HW_CAP_FASTCLOCK			= BIT(7), + 	ATH9K_HW_CAP_SGI_20			= BIT(8), +-	ATH9K_HW_CAP_PAPRD			= BIT(9), + 	ATH9K_HW_CAP_ANT_DIV_COMB		= BIT(10), + 	ATH9K_HW_CAP_2GHZ			= BIT(11), + 	ATH9K_HW_CAP_5GHZ			= BIT(12), +@@ -287,12 +286,12 @@ struct ath9k_ops_config { + 	u8 pcie_clock_req; + 	u32 pcie_waen; + 	u8 analog_shiftreg; +-	u8 paprd_disable; + 	u32 ofdm_trig_low; + 	u32 ofdm_trig_high; + 	u32 cck_trig_high; + 	u32 cck_trig_low; + 	u32 enable_ani; ++	u32 enable_paprd; + 	int serialize_regmode; + 	bool rx_intr_mitigation; + 	bool tx_intr_mitigation; +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +@@ -2982,6 +2982,10 @@ static u32 ath9k_hw_ar9300_get_eeprom(st + 	case EEP_RX_MASK: + 		return pBase->txrxMask & 0xf; + 	case EEP_PAPRD: ++		if (AR_SREV_9462(ah)) ++			return false; ++		if (!ah->config.enable_paprd); ++			return false; + 		return !!(pBase->featureEnable & BIT(5)); + 	case EEP_CHAIN_MASK_REDUCE: + 		return (pBase->miscConfiguration >> 0x3) & 0x1; +--- a/drivers/net/wireless/ath/ath9k/link.c ++++ b/drivers/net/wireless/ath/ath9k/link.c +@@ -423,7 +423,7 @@ set_timer: + 		cal_interval = min(cal_interval, (u32)short_cal_interval); +  + 	mod_timer(&common->ani.timer, jiffies + msecs_to_jiffies(cal_interval)); +-	if ((sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_PAPRD) && ah->caldata) { ++	if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD) && ah->caldata) { + 		if (!ah->caldata->paprd_done) + 			ieee80211_queue_work(sc->hw, &sc->paprd_work); + 		else if (!ah->paprd_table_write_done)  | 
