P2P: Do not omit known operating channel preference from GO Neg Resp
authorAhmad Kholaif <akholaif@qca.qualcomm.com>
Fri, 24 Jul 2015 08:56:48 +0000 (01:56 -0700)
committerJouni Malinen <j@w1.fi>
Thu, 30 Jul 2015 19:13:48 +0000 (22:13 +0300)
Add an extra condition to omit operating channel preference when
building GO Negotiation Response. If the local device supports the
preferred frequency list extension, then when sending a GO Negotiation
Response frame, advertise the preferred operating channel unless local
device is assuming the P2P Client role and has an empty preferred
frequency list, in which case local device can omit its preference for
the operating channel.

This change helps make use of the preferred frequency list and the
calculated best channel for both negotiating parties of the P2P
connection.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/p2p/p2p_go_neg.c

index d47763a..4752b29 100644 (file)
@@ -315,7 +315,7 @@ static struct wpabuf * p2p_build_go_neg_resp(struct p2p_data *p2p,
                               group_capab);
        p2p_buf_add_go_intent(buf, (p2p->go_intent << 1) | tie_breaker);
        p2p_buf_add_config_timeout(buf, p2p->go_timeout, p2p->client_timeout);
-       if (peer && peer->go_state == REMOTE_GO) {
+       if (peer && peer->go_state == REMOTE_GO && !p2p->num_pref_freq) {
                p2p_dbg(p2p, "Omit Operating Channel attribute");
        } else {
                p2p_buf_add_operating_channel(buf, p2p->cfg->country,