I'll apply your patch and let you know. Thank you very very much for your help,
patience, and re-posting the patch.
Your work is very valuable, sorry for the slowness and not testing this before.
Enrico
On Wed, 3 Jan 2018, Stanislaw Gruszka wrote:
Date: Wed, 3 Jan 2018 12:35:41
From: Stanislaw Gruszka <[email protected]>
To: Enrico Mioso <[email protected]>
Cc: [email protected], Johannes Berg <[email protected]>,
Daniel Golle <[email protected]>, Arnd Bergmann <[email protected]>,
John Crispin <[email protected]>, [email protected]
Subject: Re: ieee80211 phy0: rt2x00queue_write_tx_frame: Error - Dropping
frame due to full tx queue...?
Hi
On Sun, Dec 24, 2017 at 01:19:06PM +0100, Enrico Mioso wrote:
Unfortunately, the error di appear again. Still, I experienced no stalls.
But i am starting to think this doesn't happen necessarily when a device is
going out of range. Now I think I don't know when this triggers.
<sni>
Sun Dec 24 10:10:50 2017 authpriv.info dropbear[840]: Exit (root): Disconnect
received
Sun Dec 24 11:04:33 2017 kern.err kernel: [ 1510.616638] ieee80211 phy0:
rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2
Sun Dec 24 11:04:33 2017 kern.err kernel: [ 1510.626106] ieee80211 phy0:
rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2
Sun Dec 24 11:04:33 2017 kern.err kernel: [ 1510.635562] ieee80211 phy0:
rt2x00queue_write_tx_frame: Error - Dropping frame due to full tx queue 2
I would also try bigger threshold for waking queue like
in below patch for those errors:
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
index 357c0941aaad..b8bdf57ed7ea 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
@@ -416,7 +416,7 @@ static void rt2x00lib_clear_entry(struct rt2x00_dev
*rt2x00dev,
* before it was stopped.
*/
spin_lock_bh(&entry->queue->tx_lock);
- if (!rt2x00queue_threshold(entry->queue))
+ if (rt2x00queue_available(queue) > 2*queue->threshold)
rt2x00queue_unpause_queue(entry->queue);
spin_unlock_bh(&entry->queue->tx_lock);
}