Bugs in wake-queue logic.
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
> 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;
> WARN_ON(reason >= BITS_PER_LONG);
> arvif->tx_paused &= ~BIT(reason);
> if (ar->tx_paused)
> if (arvif->tx_paused)
> 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()
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.
More information about the ath10k