2015-07-09 08:50:24

by Raja Mani

[permalink] [raw]
Subject: [PATCH 1/2] ath10k: ensure pktlog disable cmd reaches fw before pdev suspend

Found incorrect sequence in ath10k_core_stop() where wmi pktlog
disable cmd is passed from ath10k_debug_stop() to firmware
immediately after wmi pdev suspend cmd. Firmware will not accept
any wmi cmd after receiving wmi pdev suspend cmd.

Fix this issue in ath10k_core_stop() by moving ath10k_debug_stop()
just before sending pdev suspend cmd. So that pktlog disable cmd
will get passed before pdev suspend cmd.

Signed-off-by: Raja Mani <[email protected]>
---
drivers/net/wireless/ath/ath10k/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index f79fa6c..6d19d3d 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -1368,13 +1368,13 @@ int ath10k_wait_for_suspend(struct ath10k *ar, u32 suspend_opt)
void ath10k_core_stop(struct ath10k *ar)
{
lockdep_assert_held(&ar->conf_mutex);
+ ath10k_debug_stop(ar);

/* try to suspend target */
if (ar->state != ATH10K_STATE_RESTARTING &&
ar->state != ATH10K_STATE_UTF)
ath10k_wait_for_suspend(ar, WMI_PDEV_SUSPEND_AND_DISABLE_INTR);

- ath10k_debug_stop(ar);
ath10k_hif_stop(ar);
ath10k_htt_tx_free(&ar->htt);
ath10k_htt_rx_free(&ar->htt);
--
1.8.1.2



2015-07-09 08:50:50

by Raja Mani

[permalink] [raw]
Subject: [PATCH 2/2] ath10k: free collected fw stats memory if .pull_fw_stats fails

If .pull_fw_stats() fails for some reason while processing
fw stats event, collected pdev/vdev/peer stats just before
the failure should be freed. This is unlikely to happen,
just code review catch.

Signed-off-by: Raja Mani <[email protected]>
---
drivers/net/wireless/ath/ath10k/debug.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/debug.c b/drivers/net/wireless/ath/ath10k/debug.c
index edf6047..fc6852c 100644
--- a/drivers/net/wireless/ath/ath10k/debug.c
+++ b/drivers/net/wireless/ath/ath10k/debug.c
@@ -321,7 +321,7 @@ void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb)
ret = ath10k_wmi_pull_fw_stats(ar, skb, &stats);
if (ret) {
ath10k_warn(ar, "failed to pull fw stats: %d\n", ret);
- goto unlock;
+ goto free;
}

/* Stat data may exceed htc-wmi buffer limit. In such case firmware
@@ -384,7 +384,6 @@ free:
ath10k_debug_fw_stats_vdevs_free(&stats.vdevs);
ath10k_debug_fw_stats_peers_free(&stats.peers);

-unlock:
spin_unlock_bh(&ar->data_lock);
}

--
1.8.1.2


2015-08-19 10:15:03

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH 1/2] ath10k: ensure pktlog disable cmd reaches fw before pdev suspend

Raja Mani <[email protected]> writes:

> Found incorrect sequence in ath10k_core_stop() where wmi pktlog
> disable cmd is passed from ath10k_debug_stop() to firmware
> immediately after wmi pdev suspend cmd. Firmware will not accept
> any wmi cmd after receiving wmi pdev suspend cmd.
>
> Fix this issue in ath10k_core_stop() by moving ath10k_debug_stop()
> just before sending pdev suspend cmd. So that pktlog disable cmd
> will get passed before pdev suspend cmd.
>
> Signed-off-by: Raja Mani <[email protected]>

Thanks, applied.

--
Kalle Valo