diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/hw.c')
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/hw.c | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath10k/hw.c b/drivers/net/wireless/ath/ath10k/hw.c index a860691d635d..88955bbe20bd 100644 --- a/drivers/net/wireless/ath/ath10k/hw.c +++ b/drivers/net/wireless/ath/ath10k/hw.c @@ -310,7 +310,7 @@ static struct ath10k_hw_ce_dst_src_wm_regs wcn3990_wm_dst_ring = {  	.wm_high	= &wcn3990_dst_wm_high,  }; -struct ath10k_hw_ce_regs wcn3990_ce_regs = { +const struct ath10k_hw_ce_regs wcn3990_ce_regs = {  	.sr_base_addr		= 0x00000000,  	.sr_size_addr		= 0x00000008,  	.dr_base_addr		= 0x0000000c, @@ -457,7 +457,7 @@ static struct ath10k_hw_ce_dst_src_wm_regs qcax_wm_dst_ring = {  	.wm_high	= &qcax_dst_wm_high,  }; -struct ath10k_hw_ce_regs qcax_ce_regs = { +const struct ath10k_hw_ce_regs qcax_ce_regs = {  	.sr_base_addr		= 0x00000000,  	.sr_size_addr		= 0x00000004,  	.dr_base_addr		= 0x00000008, @@ -604,8 +604,13 @@ static void ath10k_hw_qca988x_set_coverage_class(struct ath10k *ar,  	/* Only modify registers if the core is started. */  	if ((ar->state != ATH10K_STATE_ON) && -	    (ar->state != ATH10K_STATE_RESTARTED)) +	    (ar->state != ATH10K_STATE_RESTARTED)) { +		spin_lock_bh(&ar->data_lock); +		/* Store config value for when radio boots up */ +		ar->fw_coverage.coverage_class = value; +		spin_unlock_bh(&ar->data_lock);  		goto unlock; +	}  	/* Retrieve the current values of the two registers that need to be  	 * adjusted. @@ -637,7 +642,7 @@ static void ath10k_hw_qca988x_set_coverage_class(struct ath10k *ar,  		ar->fw_coverage.reg_ack_cts_timeout_orig = timeout_reg;  	ar->fw_coverage.reg_phyclk = phyclk_reg; -	/* Calculat new value based on the (original) firmware calculation. */ +	/* Calculate new value based on the (original) firmware calculation. */  	slottime_reg = ar->fw_coverage.reg_slottime_orig;  	timeout_reg = ar->fw_coverage.reg_ack_cts_timeout_orig;  |