]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ath11k: send proper txpower and maxregpower values to firmware
authorP Praneesh <quic_ppranees@quicinc.com>
Mon, 25 Oct 2021 12:17:09 +0000 (17:47 +0530)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 15 Nov 2021 09:25:23 +0000 (11:25 +0200)
Set proper values for max_regpower, max_power, max_antenna_gain as it
is because firmware will convert power values to 0.5dbm steps by
multiplying it with 2.

If txpower is not set, it will lead to cca stuck resulting in latency
issues for QCN9074.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1-01386-QCAHKSWPL_SILICONZ-1

Co-developed-by: Lavanya Suresh <lavaks@codeaurora.org>
Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
Signed-off-by: P Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1635164229-22880-1-git-send-email-quic_ppranees@quicinc.com
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/wmi.c

index 34f6d37ed4d0f066e3a74a535b0fbcf96c3acb28..5bc82be25316d723c741ad8326f6afba08ecb326 100644 (file)
@@ -775,9 +775,9 @@ static int ath11k_mac_monitor_vdev_start(struct ath11k *ar, int vdev_id,
        arg.channel.chan_radar = !!(channel->flags & IEEE80211_CHAN_RADAR);
 
        arg.channel.min_power = 0;
-       arg.channel.max_power = channel->max_power * 2;
-       arg.channel.max_reg_power = channel->max_reg_power * 2;
-       arg.channel.max_antenna_gain = channel->max_antenna_gain * 2;
+       arg.channel.max_power = channel->max_power;
+       arg.channel.max_reg_power = channel->max_reg_power;
+       arg.channel.max_antenna_gain = channel->max_antenna_gain;
 
        arg.pref_tx_streams = ar->num_tx_chains;
        arg.pref_rx_streams = ar->num_rx_chains;
@@ -6123,9 +6123,9 @@ ath11k_mac_vdev_start_restart(struct ath11k_vif *arvif,
                ath11k_phymodes[chandef->chan->band][chandef->width];
 
        arg.channel.min_power = 0;
-       arg.channel.max_power = chandef->chan->max_power * 2;
-       arg.channel.max_reg_power = chandef->chan->max_reg_power * 2;
-       arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain * 2;
+       arg.channel.max_power = chandef->chan->max_power;
+       arg.channel.max_reg_power = chandef->chan->max_reg_power;
+       arg.channel.max_antenna_gain = chandef->chan->max_antenna_gain;
 
        arg.pref_tx_streams = ar->num_tx_chains;
        arg.pref_rx_streams = ar->num_rx_chains;
index ea4bbc2d90624c58ca31557d652223bfcb19c891..6248e174bd8fd5db26760c47efcbea95e9b3307e 100644 (file)
@@ -2387,6 +2387,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(struct ath11k *ar,
                                            tchan_info->reg_class_id);
                        *reg2 |= FIELD_PREP(WMI_CHAN_REG_INFO2_ANT_MAX,
                                            tchan_info->antennamax);
+                       *reg2 |= FIELD_PREP(WMI_CHAN_REG_INFO2_MAX_TX_PWR,
+                                           tchan_info->maxregpower);
 
                        ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
                                   "WMI chan scan list chan[%d] = %u, chan_info->info %8x\n",