]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2P: Add new driver option for interface allocation
authorJouni Malinen <jouni.malinen@atheros.com>
Fri, 26 Nov 2010 13:52:16 +0000 (15:52 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 26 Nov 2010 13:52:16 +0000 (15:52 +0200)
WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P flag can now be used to
indicate that the initial interface (e.g., wlan0) is used for
P2P management operations and potentially non-P2P connections.
This is otherwise identical to
WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE, but the possibility of
non-P2P connections makes some operations differ.

src/drivers/driver.h
wpa_supplicant/p2p_supplicant.c

index b386ab1d75121b1fc2ee4d1ac9d720f84b7cbece..d936895867996ce188f1e73c6a2e2472cc23fdc2 100644 (file)
@@ -540,13 +540,19 @@ struct wpa_driver_capa {
 #define WPA_DRIVER_FLAGS_P2P_CONCURRENT        0x00000200
 /*
  * Driver uses the initial interface as a dedicated management interface, i.e.,
- * it cannot be used for P2P group operations.
+ * it cannot be used for P2P group operations or non-P2P purposes.
  */
 #define WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE       0x00000400
 /* This interface is P2P capable (P2P Device, GO, or P2P Client */
 #define WPA_DRIVER_FLAGS_P2P_CAPABLE   0x00000800
 /* Driver supports concurrent operations on multiple channels */
 #define WPA_DRIVER_FLAGS_MULTI_CHANNEL_CONCURRENT      0x00001000
+/*
+ * Driver uses the initial interface for P2P management interface and non-P2P
+ * purposes (e.g., connect to infra AP), but this interface cannot be used for
+ * P2P group operations.
+ */
+#define WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P          0x00002000
        unsigned int flags;
 
        int max_scan_ssids;
index 0177449341df37094a2f7a7180eab619b3e0c828..248d9f14c584fbf59fd9402b0a6355b02df90ddc 100644 (file)
@@ -2427,7 +2427,9 @@ void wpas_p2p_deinit_global(struct wpa_global *global)
 
 static int wpas_p2p_create_iface(struct wpa_supplicant *wpa_s)
 {
-       if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE)
+       if (wpa_s->drv_flags &
+           (WPA_DRIVER_FLAGS_P2P_DEDICATED_INTERFACE |
+            WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P))
                return 1; /* P2P group requires a new interface in every case
                           */
        if (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_P2P_CONCURRENT))