Do not allow scanning when the network interface is down. Return 0 instead of -EBUSY when scanning is in progress on the same network interface.
Signed-off-by: Jiri Benc <[EMAIL PROTECTED]> --- net/d80211/ieee80211_ioctl.c | 6 ++++++ net/d80211/ieee80211_sta.c | 5 ++++- 2 files changed, 10 insertions(+), 1 deletions(-) 2cf10f1a78222a375297d01a919d55d1a3c2a5a6 diff --git a/net/d80211/ieee80211_ioctl.c b/net/d80211/ieee80211_ioctl.c index d73693e..e43e3b0 100644 --- a/net/d80211/ieee80211_ioctl.c +++ b/net/d80211/ieee80211_ioctl.c @@ -1091,6 +1091,9 @@ static int ieee80211_ioctl_scan_req(stru if (local->user_space_mlme) return -EOPNOTSUPP; + if (!netif_running(dev)) + return -ENETDOWN; + if (left < len || len > IEEE80211_MAX_SSID_LEN) return -EINVAL; @@ -1914,6 +1917,9 @@ static int ieee80211_ioctl_siwscan(struc u8 *ssid = NULL; size_t ssid_len = 0; + if (!netif_running(dev)) + return -ENETDOWN; + if (local->scan_flags & IEEE80211_SCAN_MATCH_SSID) { if (sdata->type == IEEE80211_IF_TYPE_STA || sdata->type == IEEE80211_IF_TYPE_IBSS) { diff --git a/net/d80211/ieee80211_sta.c b/net/d80211/ieee80211_sta.c index 22f9599..13dcdae 100644 --- a/net/d80211/ieee80211_sta.c +++ b/net/d80211/ieee80211_sta.c @@ -2548,8 +2548,11 @@ int ieee80211_sta_req_scan(struct net_de /* TODO: if assoc, move to power save mode for the duration of the * scan */ - if (local->sta_scanning) + if (local->sta_scanning) { + if (local->scan_work.data == dev) + return 0; return -EBUSY; + } printk(KERN_DEBUG "%s: starting scan\n", dev->name); -- 1.3.0 - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html