Thread (5 messages) 5 messages, 3 authors, 2017-03-29

Re: [REGRESSION] mac80211: IBSS vif queue stopped when started after 11s vif

From: Johannes Berg <hidden>
Date: 2017-03-29 11:53:06
Also in: linux-wireless
Subsystem: mac80211, the rest · Maintainers: Johannes Berg, Linus Torvalds

    if (local->ops->wake_tx_queue)
    		return;

evaluates to true. The rest rest of the function is therefore always
skipped for ath9k.
Ahh, yes, ok.
Removing this is enough to fix the problem. And now you will propably
say "hey, this is not my code". And this is the reason why I have now
CC'ed the author of 80a83cfc434b ("mac80211: skip netdev queue
control with software queuing"). This change in
ieee80211_propagate_queue_wake is basically breaking 
the (delayed) startup of the ibss netdev queue [1] when the device
was offchan during the ieee80211_do_open of the ibss interface.

Not sure whether removing it in ieee80211_propagate_queue_wake will
have other odd side effects with software queuing. Maybe Michal
Kazior can tell us if it is safe to remove it.
No, it's the other way around.

Michal's patches correctly added a test for this to
__ieee80211_stop_queue(), the only missing thing is that this test
should also be in ieee80211_do_open() like this:
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 40813dd3301c..5bb0c5012819 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -718,7 +718,8 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
 	ieee80211_recalc_ps(local);
 
 	if (sdata->vif.type == NL80211_IFTYPE_MONITOR ||
-	    sdata->vif.type == NL80211_IFTYPE_AP_VLAN) {
+	    sdata->vif.type == NL80211_IFTYPE_AP_VLAN ||
+	    local->ops->wake_tx_queue) {
 		/* XXX: for AP_VLAN, actually track AP queues */
 		netif_tx_start_all_queues(dev);
 	} else if (dev) {
johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help