Skip to content

Commit

Permalink
[PATCH] mac80211: Don't stop tx queue on master device while scanning.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mattias Nissler authored and John W. Linville committed Jun 12, 2007
1 parent 0107136 commit 14042cb
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions net/mac80211/ieee80211_sta.c
Original file line number Diff line number Diff line change
Expand Up @@ -2592,11 +2592,17 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)

read_lock(&local->sub_if_lock);
list_for_each_entry(sdata, &local->sub_if_list, list) {

/* No need to wake the master device. */
if (sdata->dev == local->mdev)
continue;

if (sdata->type == IEEE80211_IF_TYPE_STA) {
if (sdata->u.sta.associated)
ieee80211_send_nullfunc(local, sdata, 0);
ieee80211_sta_timer((unsigned long)sdata);
}

netif_wake_queue(sdata->dev);
}
read_unlock(&local->sub_if_lock);
Expand Down Expand Up @@ -2738,6 +2744,12 @@ static int ieee80211_sta_start_scan(struct net_device *dev,

read_lock(&local->sub_if_lock);
list_for_each_entry(sdata, &local->sub_if_list, list) {

/* Don't stop the master interface, otherwise we can't transmit
* probes! */
if (sdata->dev == local->mdev)
continue;

netif_stop_queue(sdata->dev);
if (sdata->type == IEEE80211_IF_TYPE_STA &&
sdata->u.sta.associated)
Expand Down

0 comments on commit 14042cb

Please sign in to comment.