From: Barak Bercovitz Date: Thu, 5 Dec 2013 09:21:26 +0000 (+0200) Subject: cfg80211: stop sched scan only when needed X-Git-Tag: next-20131220~59^2~78 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=24d584d70e478bf2e815135e8bf60f72685046f7;p=karo-tx-linux.git cfg80211: stop sched scan only when needed cfg80211_leave stops sched scan when any station vif is leaving. Add an explicit check and call it only when the relevant vif (the one we scan on) is leaving. Signed-off-by: Barak Bercovitz [Eliad - changed the commit message a bit] Signed-off-by: Eliad Peller [Johannes - add ASSERT_RTNL since that protects the pointer] Signed-off-by: Johannes Berg --- diff --git a/net/wireless/core.c b/net/wireless/core.c index fc968c861ee4..c0443558b7bf 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c @@ -756,13 +756,16 @@ void cfg80211_leave(struct cfg80211_registered_device *rdev, { struct net_device *dev = wdev->netdev; + ASSERT_RTNL(); + switch (wdev->iftype) { case NL80211_IFTYPE_ADHOC: cfg80211_leave_ibss(rdev, dev, true); break; case NL80211_IFTYPE_P2P_CLIENT: case NL80211_IFTYPE_STATION: - __cfg80211_stop_sched_scan(rdev, false); + if (rdev->sched_scan_req && dev == rdev->sched_scan_req->dev) + __cfg80211_stop_sched_scan(rdev, false); wdev_lock(wdev); #ifdef CONFIG_CFG80211_WEXT