From: Ben Greear <greearb@candelatech.com>
To: Michal Kazior <michal.kazior@tieto.com>
Cc: ath10k <ath10k@lists.infradead.org>
Subject: Re: Bugs in wake-queue logic.
Date: Sat, 05 Dec 2015 10:19:54 -0800 [thread overview]
Message-ID: <56632ACA.3080909@candelatech.com> (raw)
In-Reply-To: <CA+BoTQmLHsYnHQ4cGse=v-Yt7r8PekiYBo5VGe+aWwWLpJ+TiQ@mail.gmail.com>
On 12/05/2015 08:42 AM, Michal Kazior wrote:
> On 05/12/2015, Ben Greear <greearb@candelatech.com> wrote:
>> On 12/05/2015 05:42 AM, Michal Kazior wrote:
>>> On 04/12/2015, Ben Greear <greearb@candelatech.com> wrote:
>>>> So, after tweaking a firmware image to actually be able to use
>>>> all tx-buffers, then queues can actually be stopped on the host
>>>> now.
>>>>
>>>> I'm now getting splats related to tx-queue being
>>>> out of range.
>>>>
>>>> Why are we using vdev_id as the queue-id below?
>>>>
>>>> void ath10k_mac_vif_tx_unlock(struct ath10k_vif *arvif, int reason)
>>>> {
>>>> struct ath10k *ar = arvif->ar;
>>>>
>>>> lockdep_assert_held(&ar->htt.tx_lock);
>>>>
>>>> WARN_ON(reason >= BITS_PER_LONG);
>>>> arvif->tx_paused &= ~BIT(reason);
>>>>
>>>> if (ar->tx_paused)
>>>> return;
>>>>
>>>> if (arvif->tx_paused)
>>>> return;
>>>>
>>>> ieee80211_wake_queue(ar->hw, arvif->vdev_id);
>>>
>>> I guess you could try replacing arvif->vdev_id with
>>> arvif->vif->cab_queue. This along with vif->hw_queue[] share the same
>>> queue number associated with vdev_id. Refer to the add_interface()
>>> implementation, please.
>>>
>>> You don't need to increase mac80211's max_queues unless you intend to
>>> support a similar host queue control via firmware events like qca6174.
>>
>> What about the comments about tx-locking? Does that only apply to qca6174?
>
> The code applies the logic to all chips but only qca6174 generates the
> events that can stop queues per vif. The qca6174 doesn't have any
> iface combinations with 16 vdevs so the logic works fine in all cases
> as far as upstream is concerned.
So, for non qca6174, do we even need more than one tx-queue?
>> For host queue control, are firmware events really needed, or can we
>> just keep track of buffered pkts per peer and/or per vdev and use
>> that on the host?
>
> It's possible. However you probably have your 16+ vdev setup in mind.
> This in itself won't work as-is because of the modulo/overlap.
>
> You'll probably need to add some kind of mechanism to avoid waking up
> a queue when multiple vdevs share one.
Seems like fake hardware tx-queues might not be the way to do this...upper levels
could make the decisions needed on a per-peer (and maybe per-tid?) basis based on the
peer's tx-rate (my firmware can report this properly). If the firmware
ever exhausts it's tx-buffers, stopping all TX is as good as anything
else I think...
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k
next prev parent reply other threads:[~2015-12-05 18:20 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-03 19:52 Bugs in wake-queue logic Ben Greear
2015-12-04 6:06 ` Janusz Dziedzic
2015-12-04 6:11 ` Janusz Dziedzic
2015-12-04 6:30 ` Ben Greear
2015-12-04 9:15 ` Janusz Dziedzic
2015-12-05 13:42 ` Michal Kazior
2015-12-05 16:18 ` Ben Greear
2015-12-05 16:42 ` Michal Kazior
2015-12-05 18:19 ` Ben Greear [this message]
2015-12-06 4:32 ` Michal Kazior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56632ACA.3080909@candelatech.com \
--to=greearb@candelatech.com \
--cc=ath10k@lists.infradead.org \
--cc=michal.kazior@tieto.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox