From patchwork Thu Oct 8 09:36:04 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilan Peer X-Patchwork-Id: 527648 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from maxx.maxx.shmoo.com (maxx.shmoo.com [205.134.188.171]) by ozlabs.org (Postfix) with ESMTP id 0851F140D87 for ; Thu, 8 Oct 2015 20:39:14 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 94E3C9D3FB; Thu, 8 Oct 2015 05:38:08 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FEIafFUNJ2sO; Thu, 8 Oct 2015 05:38:08 -0400 (EDT) Received: from maxx.shmoo.com (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 5D38917C38D; Thu, 8 Oct 2015 05:36:52 -0400 (EDT) X-Original-To: mailman-post+hostap@maxx.shmoo.com Delivered-To: mailman-post+hostap@maxx.shmoo.com Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id B786517C316 for ; Thu, 8 Oct 2015 05:36:42 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aJSFH0zqqFop for ; Thu, 8 Oct 2015 05:36:41 -0400 (EDT) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 1637F17C2E4 for ; Thu, 8 Oct 2015 05:36:34 -0400 (EDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP; 08 Oct 2015 02:36:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,654,1437462000"; d="scan'208";a="822158286" Received: from unknown (HELO JEL00311.ger.corp.intel.com) ([10.12.217.137]) by fmsmga002.fm.intel.com with ESMTP; 08 Oct 2015 02:36:30 -0700 From: Ilan Peer To: hostap@lists.shmoo.com Subject: [PATCH v2 09/12] P2PS: Don't add unnecessary follow-on PD request attributes Date: Thu, 8 Oct 2015 12:36:04 +0300 Message-Id: <1444296967-20844-10-git-send-email-ilan.peer@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1444296967-20844-1-git-send-email-ilan.peer@intel.com> References: <1444296967-20844-1-git-send-email-ilan.peer@intel.com> X-BeenThere: hostap@lists.shmoo.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: HostAP Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: hostap-bounces@lists.shmoo.com Errors-To: hostap-bounces@lists.shmoo.com From: Max Stepanov Don't add unnecessary P2PS follow-on PD request attributes when the request status differ of P2P_SC_SUCCESS_DEFERRED. Signed-off-by: Max Stepanov --- src/p2p/p2p_pd.c | 77 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c index 10cdbac..8df44bf 100644 --- a/src/p2p/p2p_pd.c +++ b/src/p2p/p2p_pd.c @@ -101,10 +101,13 @@ static void p2ps_add_pd_req_attrs(struct p2p_data *p2p, struct p2p_device *dev, size_t ssid_len; u8 go_dev_addr[ETH_ALEN]; u8 intended_addr[ETH_ALEN]; + int follow_on_req_fail = (prov->status >= 0 && + prov->status != P2P_SC_SUCCESS_DEFERRED); /* If we might be explicite group owner, add GO details */ - if (prov->conncap & (P2PS_SETUP_GROUP_OWNER | - P2PS_SETUP_NEW)) + if (!follow_on_req_fail && + (prov->conncap & (P2PS_SETUP_GROUP_OWNER | + P2PS_SETUP_NEW))) p2ps_add_new_group_info(p2p, dev, buf); if (prov->status >= 0) @@ -112,46 +115,54 @@ static void p2ps_add_pd_req_attrs(struct p2p_data *p2p, struct p2p_device *dev, else prov->method = config_methods; - if (p2p->cfg->get_persistent_group) { - shared_group = p2p->cfg->get_persistent_group( - p2p->cfg->cb_ctx, dev->info.p2p_device_addr, NULL, 0, - go_dev_addr, ssid, &ssid_len, intended_addr); - } - - if (shared_group || - (prov->conncap & P2PS_SETUP_CLIENT) || - (prov->conncap & P2PS_SETUP_NEW)) - p2p_buf_add_channel_list(buf, p2p->cfg->country, - &p2p->channels); + if (!follow_on_req_fail) { + if (p2p->cfg->get_persistent_group) { + shared_group = p2p->cfg->get_persistent_group( + p2p->cfg->cb_ctx, dev->info.p2p_device_addr, + NULL, 0, go_dev_addr, ssid, &ssid_len, + intended_addr); + } - if ((shared_group && !is_zero_ether_addr(intended_addr)) || - (prov->conncap & P2PS_SETUP_GROUP_OWNER) || - (prov->conncap & P2PS_SETUP_NEW)) - p2p_buf_add_operating_channel(buf, p2p->cfg->country, - p2p->op_reg_class, - p2p->op_channel); + if (shared_group || + (prov->conncap & P2PS_SETUP_CLIENT) || + (prov->conncap & P2PS_SETUP_NEW)) + p2p_buf_add_channel_list(buf, p2p->cfg->country, + &p2p->channels); + + if ((shared_group && !is_zero_ether_addr(intended_addr)) || + (prov->conncap & P2PS_SETUP_GROUP_OWNER) || + (prov->conncap & P2PS_SETUP_NEW)) + p2p_buf_add_operating_channel(buf, p2p->cfg->country, + p2p->op_reg_class, + p2p->op_channel); + } - if (prov->info[0]) + if (prov->status < 0 && prov->info[0]) p2p_buf_add_session_info(buf, prov->info); - p2p_buf_add_connection_capability(buf, prov->conncap); + if (!follow_on_req_fail) + p2p_buf_add_connection_capability(buf, prov->conncap); p2p_buf_add_advertisement_id(buf, prov->adv_id, prov->adv_mac); - if (shared_group || prov->conncap == P2PS_SETUP_NEW || - prov->conncap == - (P2PS_SETUP_GROUP_OWNER | P2PS_SETUP_NEW) || - prov->conncap == - (P2PS_SETUP_GROUP_OWNER | P2PS_SETUP_CLIENT)) { - /* Add Config Timeout */ - p2p_buf_add_config_timeout(buf, p2p->go_timeout, - p2p->client_timeout); - } + if (!follow_on_req_fail) { + if (shared_group || prov->conncap == P2PS_SETUP_NEW || + prov->conncap == + (P2PS_SETUP_GROUP_OWNER | P2PS_SETUP_NEW) || + prov->conncap == + (P2PS_SETUP_GROUP_OWNER | P2PS_SETUP_CLIENT)) { + /* Add Config Timeout */ + p2p_buf_add_config_timeout(buf, p2p->go_timeout, + p2p->client_timeout); + } - p2p_buf_add_listen_channel(buf, p2p->cfg->country, p2p->cfg->reg_class, - p2p->cfg->channel); + p2p_buf_add_listen_channel(buf, p2p->cfg->country, + p2p->cfg->reg_class, + p2p->cfg->channel); + } - p2p_buf_add_session_id(buf, prov->session_id, prov->session_mac); + p2p_buf_add_session_id(buf, prov->session_id, + prov->session_mac); p2p_buf_add_feature_capability(buf, sizeof(fcap), (const u8 *) &fcap);