wlan-ap-Telecominfraproject/feeds/wifi-ax/mac80211/patches/qca/209-ath11k-set-proper-txpower-maxregpower-values.patch
John Crispin 528a778e38 open-converged-wireless: Import 21.02 based uCentral tree
Signed-off-by: John Crispin <john@phrozen.org>
2021-03-25 12:19:47 +01:00

86 lines
3.6 KiB
Diff

From 1c971905743a98006e9f4004ac72dc00c63a01ed Mon Sep 17 00:00:00 2001
From: Lavanya Suresh <lavaks@codeaurora.org>
Date: Tue, 22 Sep 2020 20:05:57 +0530
Subject: [PATCH] ath11k: send proper txpower, maxregpower values to FW
Set proper values for txpower, regpower, maxpower, antennamax
in wmi scan chan list and vdev start command.
If txpower is not set, it will lead to cca stuck resulting in
latency issues for pine.
Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
---
drivers/net/wireless/ath/ath11k/mac.c | 12 ++++++------
drivers/net/wireless/ath/ath11k/reg.c | 6 +++---
drivers/net/wireless/ath/ath11k/wmi.c | 8 +++++---
3 files changed, 14 insertions(+), 12 deletions(-)
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -817,9 +817,9 @@ static int ath11k_mac_monitor_vdev_start
!!(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;
@@ -6120,9 +6120,9 @@ ath11k_mac_vdev_start_restart(struct ath
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;
--- a/drivers/net/wireless/ath/ath11k/reg.c
+++ b/drivers/net/wireless/ath/ath11k/reg.c
@@ -189,9 +189,9 @@ int ath11k_reg_update_chan_list(struct a
ch->mhz = channel->center_freq;
ch->cfreq1 = channel->center_freq;
ch->minpower = 0;
- ch->maxpower = channel->max_power * 2;
- ch->maxregpower = channel->max_reg_power * 2;
- ch->antennamax = channel->max_antenna_gain * 2;
+ ch->maxpower = channel->max_power;
+ ch->maxregpower = channel->max_reg_power;
+ ch->antennamax = channel->max_antenna_gain;
/* TODO: Use appropriate phymodes */
if (channel->band == NL80211_BAND_2GHZ)
--- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
@@ -2178,9 +2178,9 @@ int ath11k_wmi_append_scan_chan_list(str
IEEE80211_CHAN_NO_IR);
ch->is_chan_passive |= ch->dfs_set;
ch->minpower = 0;
- ch->maxpower = channel->max_power * 2;
- ch->maxregpower = channel->max_reg_power * 2;
- ch->antennamax = channel->max_antenna_gain * 2;
+ ch->maxpower = channel->max_power;
+ ch->maxregpower = channel->max_reg_power;
+ ch->antennamax = channel->max_antenna_gain;
ath11k_dbg(ar->ab, ATH11K_DBG_WMI,
"scan chan list %d freq %d cfreq1 %d phymode %d is_dfs_ch %u is_chan_passive %u\n",
@@ -2668,6 +2668,8 @@ int ath11k_wmi_send_scan_chan_list_cmd(s
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",