mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
wifi: ath12k: fix ATH12K_FLAG_REGISTERED flag handling
Commita5686ae820("wifi: ath12k: move ATH12K_FLAG_REGISTERED handling to ath12k_mac_register()") relocated the setting of the ATH12K_FLAG_REGISTERED flag to the ath12k_mac_register() function. However, this function only accesses the first device (ab) via ag->ab[0], resulting in the flag being set only for the first device in the group. Similarly, ath12k_mac_unregister() only unsets the flag for the first device. The flag should actually be set for all devices in the group to avoid issues during recovery. Hence, move setting and clearing of this flag in the function ath12k_core_hw_group_start() and ath12k_core_hw_group_stop() respectively. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1 Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Fixes:a5686ae820("wifi: ath12k: move ATH12K_FLAG_REGISTERED handling to ath12k_mac_register()") Signed-off-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com> Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com> Link: https://patch.msgid.link/20250408-fix_reboot_issues_with_hw_grouping-v4-4-95e7bf048595@oss.qualcomm.com Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
This commit is contained in:
parent
dce7aec6b1
commit
6af396942b
|
|
@ -958,6 +958,9 @@ static void ath12k_core_hw_group_stop(struct ath12k_hw_group *ag)
|
|||
ab = ag->ab[i];
|
||||
if (!ab)
|
||||
continue;
|
||||
|
||||
clear_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags);
|
||||
|
||||
ath12k_core_device_cleanup(ab);
|
||||
}
|
||||
|
||||
|
|
@ -1093,6 +1096,8 @@ static int ath12k_core_hw_group_start(struct ath12k_hw_group *ag)
|
|||
|
||||
mutex_lock(&ab->core_lock);
|
||||
|
||||
set_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags);
|
||||
|
||||
ret = ath12k_core_pdev_create(ab);
|
||||
if (ret) {
|
||||
ath12k_err(ab, "failed to create pdev core %d\n", ret);
|
||||
|
|
|
|||
|
|
@ -11780,7 +11780,6 @@ void ath12k_mac_mlo_teardown(struct ath12k_hw_group *ag)
|
|||
|
||||
int ath12k_mac_register(struct ath12k_hw_group *ag)
|
||||
{
|
||||
struct ath12k_base *ab = ag->ab[0];
|
||||
struct ath12k_hw *ah;
|
||||
int i;
|
||||
int ret;
|
||||
|
|
@ -11793,8 +11792,6 @@ int ath12k_mac_register(struct ath12k_hw_group *ag)
|
|||
goto err;
|
||||
}
|
||||
|
||||
set_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags);
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
|
|
@ -11811,12 +11808,9 @@ int ath12k_mac_register(struct ath12k_hw_group *ag)
|
|||
|
||||
void ath12k_mac_unregister(struct ath12k_hw_group *ag)
|
||||
{
|
||||
struct ath12k_base *ab = ag->ab[0];
|
||||
struct ath12k_hw *ah;
|
||||
int i;
|
||||
|
||||
clear_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags);
|
||||
|
||||
for (i = ag->num_hw - 1; i >= 0; i--) {
|
||||
ah = ath12k_ag_to_ah(ag, i);
|
||||
if (!ah)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user