Baochen Qiang <quic_bqiang@xxxxxxxxxxx> wrote: > Commit eaf9f17b861b ("wifi: ath12k: relocate ath12k_dp_pdev_pre_alloc() > call") moves ath12k_dp_pdev_pre_alloc() from ath12k_core_start() to > ath12k_mac_allocate(), resulting in ath12k_mac_flush() failure in > recovery scenarios: > > [ 6849.684104] ath12k_pci 0000:04:00.0: pdev 0 successfully recovered > [ 6854.907320] ath12k_pci 0000:04:00.0: failed to flush transmit queue 0 > [ 6860.027353] ath12k_pci 0000:04:00.0: failed to flush transmit queue 0 > [ 6865.143385] ath12k_pci 0000:04:00.0: failed to flush transmit queue 0 > > This is because, with ath12k_dp_pdev_pre_alloc() moved to ath12k_mac_allocate(), > dp->num_tx_pending is not reset due to ATH12K_FLAG_REGISTERED set in > recovery scenarios. > > So a possible fix would be to reset that counter at some proper point, > just like the old design. But considering that the counter tracks number > of packets pending to be freed or returned to mac80211, forcefully reset > it might make it hard to expose some real issues. For example if somehow > ath12k fails to free/return some TX packets, we don't know that because > no warnings any more. > > That is to say we should not reset that counter during recovery (which is > already done due to above commit), instead should decrease it each time > a packet is freed/returned. Currently almost each related function has > this logic implemented, except ath12k_dp_cc_cleanup(). So add the same > there to fix this issue. > > 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@xxxxxxxxxxx> > Acked-by: Jeff Johnson <quic_jjohnson@xxxxxxxxxxx> > Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx> Patch applied to ath-next branch of ath.git, thanks. 24de1b7b231c wifi: ath12k: fix flush failure in recovery scenarios -- https://patchwork.kernel.org/project/linux-wireless/patch/20240426015434.94840-1-quic_bqiang@xxxxxxxxxxx/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches