* [Cerowrt-devel] [Bug #442] < vs <= in two comparisons
@ 2014-04-19 3:26 Dave Taht
2014-04-19 11:22 ` Felix Fietkau
0 siblings, 1 reply; 3+ messages in thread
From: Dave Taht @ 2014-04-19 3:26 UTC (permalink / raw)
To: cerowrt-devel, cerowrt, Felix Fietkau
Could part of it be as simple as not checking for '<=' but only < in
txq_max_pending below?
in ath_tx_start:
ath_txq_lock(sc, txq);
if (txq == sc->tx.txq_map[q] &&
++txq->pending_frames > sc->tx.txq_max_pending[q] &&
!txq->stopped) {
ieee80211_stop_queue(sc->hw, q);
txq->stopped = true;
}
in ath_txq_skb_done:
if (txq->stopped &&
txq->pending_frames < sc->tx.txq_max_pending[q]) {
ieee80211_wake_queue(sc->hw, q);
txq->stopped = false;
}
--
Dave Täht
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Cerowrt-devel] [Bug #442] < vs <= in two comparisons
2014-04-19 3:26 [Cerowrt-devel] [Bug #442] < vs <= in two comparisons Dave Taht
@ 2014-04-19 11:22 ` Felix Fietkau
2014-04-19 18:00 ` Dave Taht
0 siblings, 1 reply; 3+ messages in thread
From: Felix Fietkau @ 2014-04-19 11:22 UTC (permalink / raw)
To: Dave Taht, cerowrt-devel, cerowrt
On 2014-04-19 05:26, Dave Taht wrote:
> Could part of it be as simple as not checking for '<=' but only < in
> txq_max_pending below?
I don't see how that would make any meaningful difference in practice.
By the way, did you test my patch?
> in ath_tx_start:
>
> ath_txq_lock(sc, txq);
> if (txq == sc->tx.txq_map[q] &&
> ++txq->pending_frames > sc->tx.txq_max_pending[q] &&
> !txq->stopped) {
> ieee80211_stop_queue(sc->hw, q);
> txq->stopped = true;
> }
>
> in ath_txq_skb_done:
>
> if (txq->stopped &&
> txq->pending_frames < sc->tx.txq_max_pending[q]) {
> ieee80211_wake_queue(sc->hw, q);
> txq->stopped = false;
> }
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Cerowrt-devel] [Bug #442] < vs <= in two comparisons
2014-04-19 11:22 ` Felix Fietkau
@ 2014-04-19 18:00 ` Dave Taht
0 siblings, 0 replies; 3+ messages in thread
From: Dave Taht @ 2014-04-19 18:00 UTC (permalink / raw)
To: Felix Fietkau; +Cc: cerowrt, cerowrt-devel
On Sat, Apr 19, 2014 at 4:22 AM, Felix Fietkau <nbd@openwrt.org> wrote:
> On 2014-04-19 05:26, Dave Taht wrote:
>> Could part of it be as simple as not checking for '<=' but only < in
>> txq_max_pending below?
> I don't see how that would make any meaningful difference in practice.
Didn't think it would, still thought <= was more correct.
> By the way, did you test my patch?
It is in the as yet untested 3.10.36-6 build, along with resetting qlen
down to 12 again to try to trigger the bug sooner.
http://snapon.lab.bufferbloat.net/~cero2/cerowrt/wndr/3.10.36-6/
>
>> in ath_tx_start:
>>
>> ath_txq_lock(sc, txq);
>> if (txq == sc->tx.txq_map[q] &&
>> ++txq->pending_frames > sc->tx.txq_max_pending[q] &&
>> !txq->stopped) {
>> ieee80211_stop_queue(sc->hw, q);
>> txq->stopped = true;
>> }
>>
>> in ath_txq_skb_done:
>>
>> if (txq->stopped &&
>> txq->pending_frames < sc->tx.txq_max_pending[q]) {
>> ieee80211_wake_queue(sc->hw, q);
>> txq->stopped = false;
>> }
>>
>>
>
--
Dave Täht
NSFW: https://w2.eff.org/Censorship/Internet_censorship_bills/russell_0296_indecent.article
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-04-19 18:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-19 3:26 [Cerowrt-devel] [Bug #442] < vs <= in two comparisons Dave Taht
2014-04-19 11:22 ` Felix Fietkau
2014-04-19 18:00 ` Dave Taht
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox