73 lines
2.8 KiB
Diff
73 lines
2.8 KiB
Diff
|
--- 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)
|