P2P: Set CTWindow only for P2P GO
authorAvraham Stern <avraham.stern@intel.com>
Wed, 14 Oct 2015 09:26:30 +0000 (12:26 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 14 Oct 2015 18:09:41 +0000 (21:09 +0300)
CTWindow was set for all AP interfaces if the driver supports it and
this parameter is set in wpa_supplicant configuration. This results in
failing to start an AP that is not a P2P GO as this setting is rejected
by the driver.

Fix that by setting the CTWindow only for P2P GO interface.

Signed-off-by: Avraham Stern <avraham.stern@intel.com>
wpa_supplicant/ap.c

index 26ac703..cefb3dc 100644 (file)
@@ -301,13 +301,17 @@ static int wpa_supplicant_conf_ap(struct wpa_supplicant *wpa_s,
                conf->beacon_int = wpa_s->conf->beacon_int;
 
 #ifdef CONFIG_P2P
-       if (wpa_s->conf->p2p_go_ctwindow > conf->beacon_int) {
-               wpa_printf(MSG_INFO,
-                          "CTWindow (%d) is bigger than beacon interval (%d) - avoid configuring it",
-                          wpa_s->conf->p2p_go_ctwindow, conf->beacon_int);
-               conf->p2p_go_ctwindow = 0;
-       } else {
-               conf->p2p_go_ctwindow = wpa_s->conf->p2p_go_ctwindow;
+       if (ssid->mode == WPAS_MODE_P2P_GO ||
+           ssid->mode == WPAS_MODE_P2P_GROUP_FORMATION) {
+               if (wpa_s->conf->p2p_go_ctwindow > conf->beacon_int) {
+                       wpa_printf(MSG_INFO,
+                                  "CTWindow (%d) is bigger than beacon interval (%d) - avoid configuring it",
+                                  wpa_s->conf->p2p_go_ctwindow,
+                                  conf->beacon_int);
+                       conf->p2p_go_ctwindow = 0;
+               } else {
+                       conf->p2p_go_ctwindow = wpa_s->conf->p2p_go_ctwindow;
+               }
        }
 #endif /* CONFIG_P2P */