Bugs in wake-queue logic.
Michal Kazior
michal.kazior at tieto.com
Sat Dec 5 05:42:08 PST 2015
On 04/12/2015, Ben Greear <greearb at 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.
Michal
More information about the ath10k
mailing list