From dfe0745c9a8246400316879be0115cc119c4882f Mon Sep 17 00:00:00 2001 From: Lior David Date: Thu, 18 Feb 2016 15:20:03 +0200 Subject: [PATCH] P2P: Add optional op_class argument to P2P_SET listen_channel The existing implementation in p2p_ctrl_set used a hard-coded operating class 81 which is only suitable for the social channels in the 2.4 GHz band, and will not work for the social channel in the 60 GHz band. Extend this by adding an optional op_class argument to P2P_SET listen_channel. If not specified, use the default value of 81 to match existing behavior. Signed-off-by: Lior David --- wpa_supplicant/README-P2P | 7 ++++++- wpa_supplicant/ctrl_iface.c | 11 +++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/wpa_supplicant/README-P2P b/wpa_supplicant/README-P2P index b8cf2091b..23ac7fa05 100644 --- a/wpa_supplicant/README-P2P +++ b/wpa_supplicant/README-P2P @@ -640,12 +640,17 @@ p2p_set managed <0/1> Disable/enable managed P2P Device operations. This is disabled by default. -p2p_set listen_channel <1/6/11> +p2p_set listen_channel [] Set P2P Listen channel. This is mainly meant for testing purposes and changing the Listen channel during normal operations can result in protocol failures. +When specifying a social channel on the 2.4 GHz band (1/6/11) there is +no need to specify the operating class since it defaults to 81. When +specifying a social channel on the 60 GHz band (2), specify the 60 GHz +operating class (180). + p2p_set ssid_postfix Set postfix string to be added to the automatically generated P2P SSID diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index be0cf5c68..4e1698713 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -5919,8 +5919,15 @@ static int p2p_ctrl_set(struct wpa_supplicant *wpa_s, char *cmd) } if (os_strcmp(cmd, "listen_channel") == 0) { - return p2p_set_listen_channel(wpa_s->global->p2p, 81, - atoi(param), 1); + char *pos; + u8 channel, op_class; + + channel = atoi(param); + pos = os_strchr(param, ' '); + op_class = pos ? atoi(pos) : 81; + + return p2p_set_listen_channel(wpa_s->global->p2p, op_class, + channel, 1); } if (os_strcmp(cmd, "ssid_postfix") == 0) {