Commit 14042cbefce4af12f7ca35d2604686154d803291
Committed by
John W. Linville
1 parent
0107136c04
Exists in
master
and in
7 other branches
[PATCH] mac80211: Don't stop tx queue on master device while scanning.
mac80211 stops the tx queues during scans. This is wrong with respect to the master deivce tx queue, since stopping it prevents any probes from being sent during the scan. Instead, they accumulate in the queue and are only sent after the scan is finished, which is obviously wrong. Signed-off-by: Mattias Nissler <mattias.nissler@gmx.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Showing 1 changed file with 12 additions and 0 deletions Side-by-side Diff
net/mac80211/ieee80211_sta.c
... | ... | @@ -2592,11 +2592,17 @@ |
2592 | 2592 | |
2593 | 2593 | read_lock(&local->sub_if_lock); |
2594 | 2594 | list_for_each_entry(sdata, &local->sub_if_list, list) { |
2595 | + | |
2596 | + /* No need to wake the master device. */ | |
2597 | + if (sdata->dev == local->mdev) | |
2598 | + continue; | |
2599 | + | |
2595 | 2600 | if (sdata->type == IEEE80211_IF_TYPE_STA) { |
2596 | 2601 | if (sdata->u.sta.associated) |
2597 | 2602 | ieee80211_send_nullfunc(local, sdata, 0); |
2598 | 2603 | ieee80211_sta_timer((unsigned long)sdata); |
2599 | 2604 | } |
2605 | + | |
2600 | 2606 | netif_wake_queue(sdata->dev); |
2601 | 2607 | } |
2602 | 2608 | read_unlock(&local->sub_if_lock); |
... | ... | @@ -2738,6 +2744,12 @@ |
2738 | 2744 | |
2739 | 2745 | read_lock(&local->sub_if_lock); |
2740 | 2746 | list_for_each_entry(sdata, &local->sub_if_list, list) { |
2747 | + | |
2748 | + /* Don't stop the master interface, otherwise we can't transmit | |
2749 | + * probes! */ | |
2750 | + if (sdata->dev == local->mdev) | |
2751 | + continue; | |
2752 | + | |
2741 | 2753 | netif_stop_queue(sdata->dev); |
2742 | 2754 | if (sdata->type == IEEE80211_IF_TYPE_STA && |
2743 | 2755 | sdata->u.sta.associated) |