mesh: Make maximum number of peer links configurable
Maximum number of peer links is maximum number of connecting mesh peers at the same time. This value is 0..255 based on the dot11MeshNumberOfPeerings range. Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
This commit is contained in:
parent
8b2600329f
commit
4b4093686b
7 changed files with 24 additions and 1 deletions
|
@ -953,6 +953,7 @@ struct wpa_driver_mesh_join_params {
|
||||||
int ie_len;
|
int ie_len;
|
||||||
int freq;
|
int freq;
|
||||||
int beacon_int;
|
int beacon_int;
|
||||||
|
int max_peer_links;
|
||||||
enum ht_mode ht_mode;
|
enum ht_mode ht_mode;
|
||||||
struct wpa_driver_mesh_bss_params conf;
|
struct wpa_driver_mesh_bss_params conf;
|
||||||
#define WPA_DRIVER_MESH_FLAG_USER_MPM 0x00000001
|
#define WPA_DRIVER_MESH_FLAG_USER_MPM 0x00000001
|
||||||
|
|
|
@ -7801,6 +7801,10 @@ wpa_driver_nl80211_join_mesh(void *priv,
|
||||||
if (!(params->conf.flags & WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS) &&
|
if (!(params->conf.flags & WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS) &&
|
||||||
nla_put_u32(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS, 0))
|
nla_put_u32(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS, 0))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
if ((params->conf.flags & WPA_DRIVER_MESH_FLAG_DRIVER_MPM) &&
|
||||||
|
nla_put_u16(msg, NL80211_MESHCONF_MAX_PEER_LINKS,
|
||||||
|
params->max_peer_links))
|
||||||
|
goto fail;
|
||||||
nla_nest_end(msg, container);
|
nla_nest_end(msg, container);
|
||||||
|
|
||||||
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
|
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
|
||||||
|
|
|
@ -3450,6 +3450,7 @@ struct wpa_config * wpa_config_alloc_empty(const char *ctrl_interface,
|
||||||
config->eapol_version = DEFAULT_EAPOL_VERSION;
|
config->eapol_version = DEFAULT_EAPOL_VERSION;
|
||||||
config->ap_scan = DEFAULT_AP_SCAN;
|
config->ap_scan = DEFAULT_AP_SCAN;
|
||||||
config->user_mpm = DEFAULT_USER_MPM;
|
config->user_mpm = DEFAULT_USER_MPM;
|
||||||
|
config->max_peer_links = DEFAULT_MAX_PEER_LINKS;
|
||||||
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
config->fast_reauth = DEFAULT_FAST_REAUTH;
|
||||||
config->p2p_go_intent = DEFAULT_P2P_GO_INTENT;
|
config->p2p_go_intent = DEFAULT_P2P_GO_INTENT;
|
||||||
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
config->p2p_intra_bss = DEFAULT_P2P_INTRA_BSS;
|
||||||
|
@ -3998,6 +3999,7 @@ static const struct global_parse_data global_fields[] = {
|
||||||
{ FUNC(bgscan), 0 },
|
{ FUNC(bgscan), 0 },
|
||||||
#ifdef CONFIG_MESH
|
#ifdef CONFIG_MESH
|
||||||
{ INT(user_mpm), 0 },
|
{ INT(user_mpm), 0 },
|
||||||
|
{ INT_RANGE(max_peer_links, 0, 255), 0 },
|
||||||
#endif /* CONFIG_MESH */
|
#endif /* CONFIG_MESH */
|
||||||
{ INT(disable_scan_offload), 0 },
|
{ INT(disable_scan_offload), 0 },
|
||||||
{ INT(fast_reauth), 0 },
|
{ INT(fast_reauth), 0 },
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#define DEFAULT_AP_SCAN 1
|
#define DEFAULT_AP_SCAN 1
|
||||||
#endif /* CONFIG_NO_SCAN_PROCESSING */
|
#endif /* CONFIG_NO_SCAN_PROCESSING */
|
||||||
#define DEFAULT_USER_MPM 1
|
#define DEFAULT_USER_MPM 1
|
||||||
|
#define DEFAULT_MAX_PEER_LINKS 99
|
||||||
#define DEFAULT_FAST_REAUTH 1
|
#define DEFAULT_FAST_REAUTH 1
|
||||||
#define DEFAULT_P2P_GO_INTENT 7
|
#define DEFAULT_P2P_GO_INTENT 7
|
||||||
#define DEFAULT_P2P_INTRA_BSS 1
|
#define DEFAULT_P2P_INTRA_BSS 1
|
||||||
|
@ -1111,6 +1112,13 @@ struct wpa_config {
|
||||||
* If AMPE or SAE is enabled, the MPM is always in userspace.
|
* If AMPE or SAE is enabled, the MPM is always in userspace.
|
||||||
*/
|
*/
|
||||||
int user_mpm;
|
int user_mpm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* max_peer_links - Maximum number of peer links
|
||||||
|
*
|
||||||
|
* Maximum number of mesh peering currently maintained by the STA.
|
||||||
|
*/
|
||||||
|
int max_peer_links;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1216,6 +1216,9 @@ static void wpa_config_write_global(FILE *f, struct wpa_config *config)
|
||||||
|
|
||||||
if (config->user_mpm != DEFAULT_USER_MPM)
|
if (config->user_mpm != DEFAULT_USER_MPM)
|
||||||
fprintf(f, "user_mpm=%d\n", config->user_mpm);
|
fprintf(f, "user_mpm=%d\n", config->user_mpm);
|
||||||
|
|
||||||
|
if (config->max_peer_links != DEFAULT_MAX_PEER_LINKS)
|
||||||
|
fprintf(f, "max_peer_links=%d\n", config->max_peer_links);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_NO_CONFIG_WRITE */
|
#endif /* CONFIG_NO_CONFIG_WRITE */
|
||||||
|
|
|
@ -169,7 +169,7 @@ static int wpa_supplicant_mesh_init(struct wpa_supplicant *wpa_s,
|
||||||
bss->iconf = conf;
|
bss->iconf = conf;
|
||||||
ifmsh->conf = conf;
|
ifmsh->conf = conf;
|
||||||
|
|
||||||
ifmsh->bss[0]->max_plinks = 99;
|
ifmsh->bss[0]->max_plinks = wpa_s->conf->max_peer_links;
|
||||||
os_strlcpy(bss->conf->iface, wpa_s->ifname, sizeof(bss->conf->iface));
|
os_strlcpy(bss->conf->iface, wpa_s->ifname, sizeof(bss->conf->iface));
|
||||||
|
|
||||||
mconf = mesh_config_create(ssid);
|
mconf = mesh_config_create(ssid);
|
||||||
|
@ -323,6 +323,7 @@ int wpa_supplicant_join_mesh(struct wpa_supplicant *wpa_s,
|
||||||
params.beacon_int = ssid->beacon_int;
|
params.beacon_int = ssid->beacon_int;
|
||||||
else if (wpa_s->conf->beacon_int > 0)
|
else if (wpa_s->conf->beacon_int > 0)
|
||||||
params.beacon_int = wpa_s->conf->beacon_int;
|
params.beacon_int = wpa_s->conf->beacon_int;
|
||||||
|
params.max_peer_links = wpa_s->conf->max_peer_links;
|
||||||
#ifdef CONFIG_IEEE80211N
|
#ifdef CONFIG_IEEE80211N
|
||||||
params.ht_mode = ssid->mesh_ht_mode;
|
params.ht_mode = ssid->mesh_ht_mode;
|
||||||
#endif /* CONFIG_IEEE80211N */
|
#endif /* CONFIG_IEEE80211N */
|
||||||
|
|
|
@ -123,6 +123,10 @@ ap_scan=1
|
||||||
# 1: wpa_supplicant provides an MPM which handles peering (default)
|
# 1: wpa_supplicant provides an MPM which handles peering (default)
|
||||||
#user_mpm=1
|
#user_mpm=1
|
||||||
|
|
||||||
|
# Maximum number of peer links (0-255; default: 99)
|
||||||
|
# Maximum number of mesh peering currently maintained by the STA.
|
||||||
|
#max_peer_links=99
|
||||||
|
|
||||||
# EAP fast re-authentication
|
# EAP fast re-authentication
|
||||||
# By default, fast re-authentication is enabled for all EAP methods that
|
# By default, fast re-authentication is enabled for all EAP methods that
|
||||||
# support it. This variable can be used to disable fast re-authentication.
|
# support it. This variable can be used to disable fast re-authentication.
|
||||||
|
|
Loading…
Reference in a new issue