nl80211: Fix regression in returning to AP mode after scan

Commit b1f625e0d8 extended
ap_scan_as_station to be able to distinguish between AP and P2P GO
iftypes. However, it did this in a way that completely lost the original
mode because drv->nlmode had already been replaced with the station
mode. Fix this by storing the correct old mode.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Yun Park 2014-02-04 23:11:14 +02:00 committed by Jouni Malinen
parent a05e236b11
commit 72e7fb3fd9

View File

@ -4901,6 +4901,8 @@ static int wpa_driver_nl80211_scan(struct i802_bss *bss,
wpa_printf(MSG_DEBUG, "nl80211: Scan trigger failed: ret=%d " wpa_printf(MSG_DEBUG, "nl80211: Scan trigger failed: ret=%d "
"(%s)", ret, strerror(-ret)); "(%s)", ret, strerror(-ret));
if (drv->hostapd && is_ap_interface(drv->nlmode)) { if (drv->hostapd && is_ap_interface(drv->nlmode)) {
enum nl80211_iftype old_mode = drv->nlmode;
/* /*
* mac80211 does not allow scan requests in AP mode, so * mac80211 does not allow scan requests in AP mode, so
* try to do this in station mode. * try to do this in station mode.
@ -4915,7 +4917,7 @@ static int wpa_driver_nl80211_scan(struct i802_bss *bss,
} }
/* Restore AP mode when processing scan results */ /* Restore AP mode when processing scan results */
drv->ap_scan_as_station = drv->nlmode; drv->ap_scan_as_station = old_mode;
ret = 0; ret = 0;
} else } else
goto nla_put_failure; goto nla_put_failure;