Search Linux Wireless

Re: [PATCH] mt76: introduce q->stopped parameter

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 27, 2019 at 10:40:41PM +0100, Lorenzo Bianconi wrote:
> @@ -289,9 +290,14 @@ mt76_tx(struct mt76_dev *dev, struct ieee80211_sta *sta,
>  	dev->queue_ops->tx_queue_skb(dev, q, skb, wcid, sta);
>  	dev->queue_ops->kick(dev, q);
>  
> -	if (q->queued > q->ndesc - 8)
> -		ieee80211_stop_queue(dev->hw, skb_get_queue_mapping(skb));
> +	stop = q->queued > q->ndesc - 8 && !q->stopped;
> +	if (stop)
> +		q->stopped = true;
> +
>  	spin_unlock_bh(&q->lock);
> +
> +	if (stop)
> +		ieee80211_stop_queue(dev->hw, skb_get_queue_mapping(skb));

I don't think taking this outside of spin_lock section is beneficial.
Actually is better to do this faster than slower to prevent enqueue
frames by mac80211 and then dropped them due to lack of space in
mt76 queue.

Stanislaw



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux