P2P: Add optional op_class argument to P2P_SET listen_channel
authorLior David <qca_liord@qca.qualcomm.com>
Thu, 18 Feb 2016 13:20:03 +0000 (15:20 +0200)
committerJouni Malinen <j@w1.fi>
Mon, 7 Mar 2016 11:51:01 +0000 (13:51 +0200)
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 <qca_liord@qca.qualcomm.com>
wpa_supplicant/README-P2P
wpa_supplicant/ctrl_iface.c

index b8cf209..23ac7fa 100644 (file)
@@ -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 <channel> [<op_class>]
 
 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 <postfix>
 
 Set postfix string to be added to the automatically generated P2P SSID
index be0cf5c..4e16987 100644 (file)
@@ -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) {