-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mac80211: ath11k: sync with ath-next
Synchronize the ath11k backports with the current ath-next tree. All of the changes are various bugfixes, there is no new major feature. Signed-off-by: Robert Marko <[email protected]>
- Loading branch information
Showing
19 changed files
with
1,266 additions
and
11 deletions.
There are no files selected for viewing
37 changes: 37 additions & 0 deletions
37
...l/mac80211/patches/ath11k/0001-wifi-ath11k-fix-band-selection-for-ppdu-received-in-.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
From 72c8caf904aed2caed5d6e75233294b6159ddb5d Mon Sep 17 00:00:00 2001 | ||
From: Aditya Kumar Singh <[email protected]> | ||
Date: Wed, 26 Jul 2023 10:16:24 +0530 | ||
Subject: [PATCH 1/5] wifi: ath11k: fix band selection for ppdu received in | ||
channel 177 of 5 GHz | ||
|
||
5 GHz band channel 177 support was added with the commit e5e94d10c856 ("wifi: | ||
ath11k: add channel 177 into 5 GHz channel list"). However, during processing | ||
for the received ppdu in ath11k_dp_rx_h_ppdu(), channel number is checked only | ||
till 173. This leads to driver code checking for channel and then fetching the | ||
band from it which is extra effort since firmware has already given the channel | ||
number in the metadata. | ||
|
||
Fix this issue by checking the channel number till 177 since we support | ||
it now. | ||
|
||
Found via code review. Compile tested only. | ||
|
||
Fixes: e5e94d10c856 ("wifi: ath11k: add channel 177 into 5 GHz channel list") | ||
Signed-off-by: Aditya Kumar Singh <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
Link: https://lore.kernel.org/r/[email protected] | ||
--- | ||
drivers/net/wireless/ath/ath11k/dp_rx.c | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
--- a/drivers/net/wireless/ath/ath11k/dp_rx.c | ||
+++ b/drivers/net/wireless/ath/ath11k/dp_rx.c | ||
@@ -2408,7 +2408,7 @@ static void ath11k_dp_rx_h_ppdu(struct a | ||
rx_status->freq = center_freq; | ||
} else if (channel_num >= 1 && channel_num <= 14) { | ||
rx_status->band = NL80211_BAND_2GHZ; | ||
- } else if (channel_num >= 36 && channel_num <= 173) { | ||
+ } else if (channel_num >= 36 && channel_num <= 177) { | ||
rx_status->band = NL80211_BAND_5GHZ; | ||
} else { | ||
spin_lock_bh(&ar->data_lock); |
38 changes: 38 additions & 0 deletions
38
...l/mac80211/patches/ath11k/0002-wifi-ath11k-simplify-ath11k_mac_validate_vht_he_fixe.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
From 6f092c98dcfa1e4cf37d45f9b8e4d4a3cbeb79d4 Mon Sep 17 00:00:00 2001 | ||
From: Dmitry Antipov <[email protected]> | ||
Date: Wed, 26 Jul 2023 12:21:02 +0300 | ||
Subject: [PATCH 2/5] wifi: ath11k: simplify | ||
ath11k_mac_validate_vht_he_fixed_rate_settings() | ||
|
||
In ath11k_mac_validate_vht_he_fixed_rate_settings() ar->ab->peers | ||
list is not altered so list_for_each_entry() should be safe. | ||
|
||
Compile tested only. | ||
|
||
Signed-off-by: Dmitry Antipov <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
Link: https://lore.kernel.org/r/[email protected] | ||
--- | ||
drivers/net/wireless/ath/ath11k/mac.c | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
--- a/drivers/net/wireless/ath/ath11k/mac.c | ||
+++ b/drivers/net/wireless/ath/ath11k/mac.c | ||
@@ -8255,7 +8255,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se | ||
const struct cfg80211_bitrate_mask *mask) | ||
{ | ||
bool he_fixed_rate = false, vht_fixed_rate = false; | ||
- struct ath11k_peer *peer, *tmp; | ||
+ struct ath11k_peer *peer; | ||
const u16 *vht_mcs_mask, *he_mcs_mask; | ||
struct ieee80211_link_sta *deflink; | ||
u8 vht_nss, he_nss; | ||
@@ -8278,7 +8278,7 @@ ath11k_mac_validate_vht_he_fixed_rate_se | ||
|
||
rcu_read_lock(); | ||
spin_lock_bh(&ar->ab->base_lock); | ||
- list_for_each_entry_safe(peer, tmp, &ar->ab->peers, list) { | ||
+ list_for_each_entry(peer, &ar->ab->peers, list) { | ||
if (peer->sta) { | ||
deflink = &peer->sta->deflink; | ||
|
180 changes: 180 additions & 0 deletions
180
...kernel/mac80211/patches/ath11k/0003-wifi-ath11k-Split-coldboot-calibration-hw_param.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,180 @@ | ||
From 011e5a3052a22d3758d17442bf0c04c68bf79bea Mon Sep 17 00:00:00 2001 | ||
From: Seevalamuthu Mariappan <[email protected]> | ||
Date: Wed, 26 Jul 2023 19:40:30 +0530 | ||
Subject: [PATCH 3/5] wifi: ath11k: Split coldboot calibration hw_param | ||
|
||
QCN9074 enables coldboot calibration only in Factory Test Mode (FTM). | ||
Hence, split cold_boot_calib to two hw_params for mission and FTM | ||
mode. | ||
|
||
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1 | ||
|
||
Signed-off-by: Seevalamuthu Mariappan <[email protected]> | ||
Signed-off-by: Raj Kumar Bhagat <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
Link: https://lore.kernel.org/r/[email protected] | ||
--- | ||
drivers/net/wireless/ath/ath11k/ahb.c | 3 +-- | ||
drivers/net/wireless/ath/ath11k/core.c | 36 ++++++++++++++++++++------ | ||
drivers/net/wireless/ath/ath11k/core.h | 1 + | ||
drivers/net/wireless/ath/ath11k/hw.h | 3 ++- | ||
drivers/net/wireless/ath/ath11k/qmi.c | 6 ++--- | ||
5 files changed, 35 insertions(+), 14 deletions(-) | ||
|
||
--- a/drivers/net/wireless/ath/ath11k/ahb.c | ||
+++ b/drivers/net/wireless/ath/ath11k/ahb.c | ||
@@ -422,8 +422,7 @@ static int ath11k_ahb_fwreset_from_cold_ | ||
{ | ||
int timeout; | ||
|
||
- if (ath11k_cold_boot_cal == 0 || ab->qmi.cal_done || | ||
- ab->hw_params.cold_boot_calib == 0 || | ||
+ if (!ath11k_core_coldboot_cal_support(ab) || ab->qmi.cal_done || | ||
ab->hw_params.cbcal_restart_fw == 0) | ||
return 0; | ||
|
||
--- a/drivers/net/wireless/ath/ath11k/core.c | ||
+++ b/drivers/net/wireless/ath/ath11k/core.c | ||
@@ -86,7 +86,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = false, | ||
.idle_ps = false, | ||
.supports_sta_ps = false, | ||
- .cold_boot_calib = true, | ||
+ .coldboot_cal_mm = true, | ||
+ .coldboot_cal_ftm = true, | ||
.cbcal_restart_fw = true, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -167,7 +168,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = false, | ||
.idle_ps = false, | ||
.supports_sta_ps = false, | ||
- .cold_boot_calib = true, | ||
+ .coldboot_cal_mm = true, | ||
+ .coldboot_cal_ftm = true, | ||
.cbcal_restart_fw = true, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -248,7 +250,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = true, | ||
.idle_ps = true, | ||
.supports_sta_ps = true, | ||
- .cold_boot_calib = false, | ||
+ .coldboot_cal_mm = false, | ||
+ .coldboot_cal_ftm = false, | ||
.cbcal_restart_fw = false, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -332,7 +335,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = false, | ||
.idle_ps = false, | ||
.supports_sta_ps = false, | ||
- .cold_boot_calib = false, | ||
+ .coldboot_cal_mm = false, | ||
+ .coldboot_cal_ftm = false, | ||
.cbcal_restart_fw = false, | ||
.fw_mem_mode = 2, | ||
.num_vdevs = 8, | ||
@@ -413,7 +417,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = true, | ||
.idle_ps = true, | ||
.supports_sta_ps = true, | ||
- .cold_boot_calib = false, | ||
+ .coldboot_cal_mm = false, | ||
+ .coldboot_cal_ftm = false, | ||
.cbcal_restart_fw = false, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -495,7 +500,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = true, | ||
.idle_ps = true, | ||
.supports_sta_ps = true, | ||
- .cold_boot_calib = false, | ||
+ .coldboot_cal_mm = false, | ||
+ .coldboot_cal_ftm = false, | ||
.cbcal_restart_fw = false, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -578,7 +584,8 @@ static const struct ath11k_hw_params ath | ||
.supports_shadow_regs = true, | ||
.idle_ps = true, | ||
.supports_sta_ps = true, | ||
- .cold_boot_calib = true, | ||
+ .coldboot_cal_mm = true, | ||
+ .coldboot_cal_ftm = true, | ||
.cbcal_restart_fw = false, | ||
.fw_mem_mode = 0, | ||
.num_vdevs = 16 + 1, | ||
@@ -667,7 +674,8 @@ static const struct ath11k_hw_params ath | ||
.supports_suspend = false, | ||
.hal_params = &ath11k_hw_hal_params_ipq8074, | ||
.single_pdev_only = false, | ||
- .cold_boot_calib = true, | ||
+ .coldboot_cal_mm = true, | ||
+ .coldboot_cal_ftm = true, | ||
.cbcal_restart_fw = true, | ||
.fix_l1ss = true, | ||
.supports_dynamic_smps_6ghz = false, | ||
@@ -749,6 +757,18 @@ void ath11k_fw_stats_free(struct ath11k_ | ||
ath11k_fw_stats_bcn_free(&stats->bcn); | ||
} | ||
|
||
+bool ath11k_core_coldboot_cal_support(struct ath11k_base *ab) | ||
+{ | ||
+ if (!ath11k_cold_boot_cal) | ||
+ return false; | ||
+ | ||
+ if (ath11k_ftm_mode) | ||
+ return ab->hw_params.coldboot_cal_ftm; | ||
+ | ||
+ else | ||
+ return ab->hw_params.coldboot_cal_mm; | ||
+} | ||
+ | ||
int ath11k_core_suspend(struct ath11k_base *ab) | ||
{ | ||
int ret; | ||
--- a/drivers/net/wireless/ath/ath11k/core.h | ||
+++ b/drivers/net/wireless/ath/ath11k/core.h | ||
@@ -1186,6 +1186,7 @@ void ath11k_core_halt(struct ath11k *ar) | ||
int ath11k_core_resume(struct ath11k_base *ab); | ||
int ath11k_core_suspend(struct ath11k_base *ab); | ||
void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab); | ||
+bool ath11k_core_coldboot_cal_support(struct ath11k_base *ab); | ||
|
||
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab, | ||
const char *filename); | ||
--- a/drivers/net/wireless/ath/ath11k/hw.h | ||
+++ b/drivers/net/wireless/ath/ath11k/hw.h | ||
@@ -187,7 +187,8 @@ struct ath11k_hw_params { | ||
bool supports_shadow_regs; | ||
bool idle_ps; | ||
bool supports_sta_ps; | ||
- bool cold_boot_calib; | ||
+ bool coldboot_cal_mm; | ||
+ bool coldboot_cal_ftm; | ||
bool cbcal_restart_fw; | ||
int fw_mem_mode; | ||
u32 num_vdevs; | ||
--- a/drivers/net/wireless/ath/ath11k/qmi.c | ||
+++ b/drivers/net/wireless/ath/ath11k/qmi.c | ||
@@ -2079,7 +2079,7 @@ static int ath11k_qmi_assign_target_mem_ | ||
return -EINVAL; | ||
} | ||
|
||
- if (ath11k_cold_boot_cal && ab->hw_params.cold_boot_calib) { | ||
+ if (ath11k_core_coldboot_cal_support(ab)) { | ||
if (hremote_node) { | ||
ab->qmi.target_mem[idx].paddr = | ||
res.start + host_ddr_sz; | ||
@@ -3209,8 +3209,8 @@ static void ath11k_qmi_driver_event_work | ||
break; | ||
} | ||
|
||
- if (ath11k_cold_boot_cal && ab->qmi.cal_done == 0 && | ||
- ab->hw_params.cold_boot_calib) { | ||
+ if (ab->qmi.cal_done == 0 && | ||
+ ath11k_core_coldboot_cal_support(ab)) { | ||
ath11k_qmi_process_coldboot_calibration(ab); | ||
} else { | ||
clear_bit(ATH11K_FLAG_CRASH_FLUSH, |
Oops, something went wrong.