P2P: Allow driver wrapper to indicate how many stations are supported
authorJouni Malinen <jouni.malinen@atheros.com>
Thu, 29 Jul 2010 22:32:33 +0000 (15:32 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 9 Sep 2010 14:17:21 +0000 (07:17 -0700)
This can be used to limit the number of clients allowed to connect
to the group on the GO.

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

index 7f1f526..1af83f1 100644 (file)
@@ -550,6 +550,12 @@ struct wpa_driver_capa {
         * max_remain_on_chan - Maximum remain-on-channel duration in msec
         */
        unsigned int max_remain_on_chan;
+
+       /**
+        * max_stations - Maximum number of associated stations the driver
+        * supports in AP mode
+        */
+       unsigned int max_stations;
 };
 
 
index fa6cfed..8b1d5c4 100644 (file)
@@ -2160,7 +2160,7 @@ int wpas_p2p_init(struct wpa_global *global, struct wpa_supplicant *wpa_s)
        p2p.concurrent_operations = !!(wpa_s->drv_flags &
                                       WPA_DRIVER_FLAGS_P2P_CONCURRENT);
 
-       p2p.max_peers = 100;
+       p2p.max_peers = wpa_s->max_stations ? wpa_s->max_stations : 100;
 
        if (wpa_s->conf->p2p_ssid_postfix) {
                p2p.ssid_postfix_len =
index bbfa291..61d1c87 100644 (file)
@@ -2101,6 +2101,7 @@ next_driver:
                }
                wpa_s->max_scan_ssids = capa.max_scan_ssids;
                wpa_s->max_remain_on_chan = capa.max_remain_on_chan;
+               wpa_s->max_stations = capa.max_stations;
        }
        if (wpa_s->max_remain_on_chan == 0)
                wpa_s->max_remain_on_chan = 1000;
index ca3a273..df4a24d 100644 (file)
@@ -408,6 +408,7 @@ struct wpa_supplicant {
        unsigned int drv_flags;
        int max_scan_ssids;
        unsigned int max_remain_on_chan;
+       unsigned int max_stations;
 
        int pending_mic_error_report;
        int pending_mic_error_pairwise;