From c4ea4c5c90cb80ea28073a6c40609c3a76f2a118 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 29 Jul 2010 15:32:33 -0700 Subject: [PATCH] P2P: Allow driver wrapper to indicate how many stations are supported This can be used to limit the number of clients allowed to connect to the group on the GO. --- src/drivers/driver.h | 6 ++++++ wpa_supplicant/p2p_supplicant.c | 2 +- wpa_supplicant/wpa_supplicant.c | 1 + wpa_supplicant/wpa_supplicant_i.h | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 7f1f526c2..1af83f151 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -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; }; diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index fa6cfed00..8b1d5c4bd 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -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 = diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index bbfa29166..61d1c87e4 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -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; diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h index ca3a27334..df4a24ded 100644 --- a/wpa_supplicant/wpa_supplicant_i.h +++ b/wpa_supplicant/wpa_supplicant_i.h @@ -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;