From 92ac756c84f4001269f551236c55f0b115a4dd7f Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Thu, 27 Dec 2012 07:58:04 +0200 Subject: [PATCH] P2P: Set FORCE_FREQ flag as part of p2p_prepare_channel() Both p2p_connect and p2p_authorize use the same functionality to select the channel preferences for GO Negotiation. The part of setting this device flag was copied to each function, but it can also be handled by the shared function after some reordering of code. Signed-hostap: Jouni Malinen --- src/p2p/p2p.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index 47f8593cc..b729fce59 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -1117,8 +1117,8 @@ void p2p_stop_find(struct p2p_data *p2p) } -static int p2p_prepare_channel(struct p2p_data *p2p, unsigned int force_freq, - unsigned int pref_freq) +static int p2p_prepare_channel(struct p2p_data *p2p, struct p2p_device *dev, + unsigned int force_freq, unsigned int pref_freq) { if (force_freq || pref_freq) { u8 op_reg_class, op_channel; @@ -1200,6 +1200,11 @@ static int p2p_prepare_channel(struct p2p_data *p2p, unsigned int force_freq, p2p->op_reg_class, p2p->op_channel, force_freq ? " (forced)" : ""); + if (force_freq) + dev->flags |= P2P_DEV_FORCE_FREQ; + else + dev->flags &= ~P2P_DEV_FORCE_FREQ; + return 0; } @@ -1240,9 +1245,6 @@ int p2p_connect(struct p2p_data *p2p, const u8 *peer_addr, MAC2STR(peer_addr), go_intent, MAC2STR(own_interface_addr), wps_method, persistent_group, pd_before_go_neg); - if (p2p_prepare_channel(p2p, force_freq, pref_freq) < 0) - return -1; - dev = p2p_get_device(p2p, peer_addr); if (dev == NULL || (dev->flags & P2P_DEV_PROBE_REQ_ONLY)) { wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, @@ -1251,6 +1253,9 @@ int p2p_connect(struct p2p_data *p2p, const u8 *peer_addr, return -1; } + if (p2p_prepare_channel(p2p, dev, force_freq, pref_freq) < 0) + return -1; + if (dev->flags & P2P_DEV_GROUP_CLIENT_ONLY) { if (!(dev->info.dev_capab & P2P_DEV_CAPAB_CLIENT_DISCOVERABILITY)) { @@ -1318,11 +1323,6 @@ int p2p_connect(struct p2p_data *p2p, const u8 *peer_addr, dev->wps_method = wps_method; dev->status = P2P_SC_SUCCESS; - if (force_freq) - dev->flags |= P2P_DEV_FORCE_FREQ; - else - dev->flags &= ~P2P_DEV_FORCE_FREQ; - if (p2p->p2p_scan_running) { wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, "P2P: p2p_scan running - delay connect send"); @@ -1352,9 +1352,6 @@ int p2p_authorize(struct p2p_data *p2p, const u8 *peer_addr, MAC2STR(peer_addr), go_intent, MAC2STR(own_interface_addr), wps_method, persistent_group); - if (p2p_prepare_channel(p2p, force_freq, pref_freq) < 0) - return -1; - dev = p2p_get_device(p2p, peer_addr); if (dev == NULL) { wpa_msg(p2p->cfg->msg_ctx, MSG_DEBUG, @@ -1363,6 +1360,9 @@ int p2p_authorize(struct p2p_data *p2p, const u8 *peer_addr, return -1; } + if (p2p_prepare_channel(p2p, dev, force_freq, pref_freq) < 0) + return -1; + p2p->ssid_set = 0; if (force_ssid) { wpa_hexdump_ascii(MSG_DEBUG, "P2P: Forced SSID", @@ -1383,11 +1383,6 @@ int p2p_authorize(struct p2p_data *p2p, const u8 *peer_addr, dev->wps_method = wps_method; dev->status = P2P_SC_SUCCESS; - if (force_freq) - dev->flags |= P2P_DEV_FORCE_FREQ; - else - dev->flags &= ~P2P_DEV_FORCE_FREQ; - return 0; } -- 2.39.2