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 <sgruszka@xxxxxxxxxx>
To: Enrico Mioso <mrkiko.rs@xxxxxxxxx>
Cc: linux-wireless@xxxxxxxxxxxxxxx, Johannes Berg <johannes.berg@xxxxxxxxx>,
Daniel Golle <daniel@xxxxxxxxxxxxxx>, Arnd Bergmann <arnd@xxxxxxxx>,
John Crispin <john@xxxxxxxxxxx>, nbd@xxxxxxxx
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);
}