Timeout Issues

Michal Kazior michal.kazior at tieto.com
Tue Aug 19 23:48:30 PDT 2014


On 20 August 2014 07:40, Kalle Valo <kvalo at qca.qualcomm.com> wrote:
> Pushpal Sidhu <psidhu at gateworks.com> writes:
>
>> One interesting thing I found is if I use OpenWrt trunk, ath10k seems
>> to behave fine, but another distro seems to break things. I'll need to
>> dig further into that, but in the mean time, do you have any thoughts?
>
> What do you mean? On the exact same board ath10k works with openwrt but
> with another distribution it fails?
>
> What's this another distribution?

I'm rather interested in the toolchain differences. Perhaps the
compiler you used to build 3.16 reorders instructions so much it
breaks driver interaction with the hardware. This would suggests
ath10k is missing some compiler/memory barriers.

Can you apply the following patch and see if it changes anything, please?


>From 3f5fc9bae19a0b429370025e781701472fc64529 Mon Sep 17 00:00:00 2001
From: Michal Kazior <michal.kazior at tieto.com>
Date: Wed, 20 Aug 2014 08:30:15 +0200
Subject: [PATCH] ath10k: add memory barries

Testing purposes.

Signed-off-by: Michal Kazior <michal.kazior at tieto.com>
---
 drivers/net/wireless/ath/ath10k/htc.c | 1 +
 drivers/net/wireless/ath/ath10k/pci.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/htc.c
b/drivers/net/wireless/ath/ath10k/htc.c
index 7e08bb3..a1eb639 100644
--- a/drivers/net/wireless/ath/ath10k/htc.c
+++ b/drivers/net/wireless/ath/ath10k/htc.c
@@ -682,6 +682,7 @@ int ath10k_htc_connect_service(struct ath10k_htc *htc,
        req_msg->service_id = __cpu_to_le16(conn_req->service_id);

        reinit_completion(&htc->ctl_resp);
+       mb();

        status = ath10k_htc_send(htc, ATH10K_HTC_EP_0, skb);
        if (status) {
diff --git a/drivers/net/wireless/ath/ath10k/pci.c
b/drivers/net/wireless/ath/ath10k/pci.c
index 98c029b..673de9f 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -1115,6 +1115,8 @@ static int ath10k_pci_hif_start(struct ath10k *ar)
                goto err_stop;
        }

+       mb();
+
        /* Post buffers once to start things off. */
        ret = ath10k_pci_post_rx(ar);
        if (ret) {
-- 
1.8.5.3



More information about the ath10k mailing list