On 2016-05-16 04:29, Roman Yeryomin wrote:
On 9 May 2016 at 15:26, Michal Kazior <michal.kaz...@tieto.com> wrote:
Hi Roman,

On 22 April 2016 at 19:05, Roman Yeryomin <leroi.li...@gmail.com> wrote:
On 19 April 2016 at 18:35, Valo, Kalle <kv...@qca.qualcomm.com> wrote:
Michal Kazior <michal.kaz...@tieto.com> writes:

On 19 April 2016 at 09:31, Roman Yeryomin <leroi.li...@gmail.com> wrote:
On 19 April 2016 at 08:28, Michal Kazior <michal.kaz...@tieto.com> wrote:

If my hunch is right there's no easy (and proper) fix for that now.

One of the patchset patches (ath10k: implement wake_tx_queue) starts
to use mac80211 software queuing. This introduces extra induced
latency and I'm guessing it results in fill-in-then-drain sequences in some cases which end up being long enough to make fq_codel_drop more
work than normal.

This is required for other changes and MU-MIMO performance
improvements so this patch can't be removed.

But qca988x doesn't support MU-MIMO, AFAIK.

Correct.


Can this be made chip dependent?

I guess it could but it'd arguably make the driver more complex and
harder to maintain. What we want is a long-term fix, not a short-term
one.

But we should never go backwards and TCP dropping from 750 Mbps to ~550 Mbps is a huge drop, so this is not ok. We have to do something to fix this, be it reverting the wake_tx_queue support, somehow disabling it by
default or something.

I would agree with Kalle here. This looks like very serious regression.
But I'm afraid I can only help with testing here.

Can you give the following patch a try, please? I didn't get to
reproduce your problem on a real AP135/AP152 board and instead tried
to simulate a slow uni-proc system via KVM and cooling_device in
sysfs. The patch does improve things in this synthetic setup for me.

  http://lists.infradead.org/pipermail/ath10k/2016-May/007526.html


Unfortunately doesn't seem to make any difference at all (really, if
there is, it's less than 10Mbps).
Please see this thread also:
https://lists.openwrt.org/pipermail/openwrt-devel/2016-May/041445.html
That is with your and Eric's patch applied.

Roman,

Can you please try without registering wake_tx_queue callback? software queuing is needed for devices that supports peer-flow-control.

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 6829a08638b2..5df904169ded 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7313,7 +7313,6 @@ ath10k_mac_op_switch_vif_chanctx(struct ieee80211_hw *hw,

 static const struct ieee80211_ops ath10k_ops = {
        .tx                             = ath10k_mac_op_tx,
-       .wake_tx_queue                  = ath10k_mac_op_wake_tx_queue,
        .start                          = ath10k_start,
        .stop                           = ath10k_stop,
        .config                         = ath10k_config,

-Rajkumar

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

Reply via email to