path: root/src
diff options
authorJouni Malinen <jouni@qca.qualcomm.com>2011-12-27 18:32:29 (GMT)
committerJouni Malinen <j@w1.fi>2011-12-27 18:32:29 (GMT)
commit0d891981db732ca5c22b5724d0f525440b292665 (patch)
tree3d86bfef62d66c334576f84d4a7de70c0db4e51c /src
parentd7e70476f25b519fa538d0d0bd25db55a1fc8a07 (diff)
nl80211: Do not stop AP mode Probe Request reporting on Listen stop
When nl80211_setup_ap() has enabled Probe Request reporting, this must not be disabled when P2P Listen state is stopped to avoid breaking AP mode operations. This could happen, e.g., if a Probe Request frame was received from a P2P device that the we are trying to invite to our group (i.e., when operating in GO role). p2p_probe_req_rx() calls p2p_invite_start() in this case and that ends up calling p2p->cfg->stop_listen() which calls probe_req_report() driver op. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'src')
1 files changed, 10 insertions, 1 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 2299cc8..431c890 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -8058,7 +8058,16 @@ static int wpa_driver_nl80211_probe_req_report(void *priv, int report)
struct wpa_driver_nl80211_data *drv = bss->drv;
if (!report) {
- if (bss->nl_preq) {
+ if (bss->nl_preq && drv->device_ap_sme &&
+ is_ap_interface(drv->nlmode)) {
+ /*
+ * Do not disable Probe Request reporting that was
+ * enabled in nl80211_setup_ap().
+ */
+ wpa_printf(MSG_DEBUG, "nl80211: Skip disabling of "
+ "Probe Request reporting nl_preq=%p while "
+ "in AP mode", bss->nl_preq);
+ } else if (bss->nl_preq) {
wpa_printf(MSG_DEBUG, "nl80211: Disable Probe Request "
"reporting nl_preq=%p", bss->nl_preq);