wifi: ath12k: do not dump SRNG statistics during resume
authorBaochen Qiang <quic_bqiang@quicinc.com>
Mon, 22 Apr 2024 12:11:44 +0000 (15:11 +0300)
committerKalle Valo <quic_kvalo@quicinc.com>
Tue, 23 Apr 2024 09:27:14 +0000 (12:27 +0300)
Both the firmware reset feature and the power management
suspend/resume feature share common power-down and power-up
functionality. One aspect of the power-up functionality is
the handling of the ATH12K_QMI_EVENT_FW_INIT_DONE event.
When this event is received, a call is made to
ath12k_hal_dump_srng_stats(), with the purpose to collect
information that may be useful in debugging the cause of a
firmware reset.

Unfortunately, since this functionality is shared between
both the firmware reset path and the power management
resume path, the kernel log is flooded with messages during
resume. Since these messages are not useful during resume,
and in fact can be confusing and can increase the time it
takes to resume, update the logic to only call
ath12k_hal_dump_srng_stats() during firmware reset.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://msgid.link/20240412060620.27519-4-quic_bqiang@quicinc.com
drivers/net/wireless/ath/ath12k/qmi.c

index e1ff0dc350846ca5c4feaf1e0b7cc15a8130080d..223637797175ac26ea9e6fa0e53c4e827b95e20f 100644 (file)
@@ -3285,7 +3285,8 @@ static void ath12k_qmi_driver_event_work(struct work_struct *work)
                case ATH12K_QMI_EVENT_FW_READY:
                        clear_bit(ATH12K_FLAG_QMI_FAIL, &ab->dev_flags);
                        if (test_bit(ATH12K_FLAG_REGISTERED, &ab->dev_flags)) {
-                               ath12k_hal_dump_srng_stats(ab);
+                               if (ab->is_reset)
+                                       ath12k_hal_dump_srng_stats(ab);
                                queue_work(ab->workqueue, &ab->restart_work);
                                break;
                        }