From patchwork Wed Nov 5 11:35:09 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daichi Ueura X-Patchwork-Id: 406951 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 8CF8514008C for ; Wed, 5 Nov 2014 22:35:55 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id A11969D347; Wed, 5 Nov 2014 06:35:53 -0500 (EST) 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 XbUweTcEYs3k; Wed, 5 Nov 2014 06:35:53 -0500 (EST) Received: from maxx.shmoo.com (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 71F889D348; Wed, 5 Nov 2014 06:35:47 -0500 (EST) 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 E2D3D9D347 for ; Wed, 5 Nov 2014 06:35:45 -0500 (EST) 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 COBuncJBQGJf for ; Wed, 5 Nov 2014 06:35:38 -0500 (EST) Received: from mail-pd0-f169.google.com (mail-pd0-f169.google.com [209.85.192.169]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (not verified)) by maxx.maxx.shmoo.com (Postfix) with ESMTPS id C42729D349 for ; Wed, 5 Nov 2014 06:35:28 -0500 (EST) Received: by mail-pd0-f169.google.com with SMTP id y10so601230pdj.14 for ; Wed, 05 Nov 2014 03:35:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lUoF64utYSl+Ilo2JMXfsqDoJi3eu45IHYzgfUF6ed0=; b=Qq0y8CW0KMOI+TW8DXYPI3ESn69TGC+v03rWy3mPz696VvNSbGtJ7JnUexh4mt2v22 gfadhGpttrz5Z9mCirNEyMPTYMR4wPpotTyJswDNi/Kfd9vMlDretMHQrDRSUCJhYGsS T5DeLRA6+kQc4NbRuJPfy06W5oQto4NqJfJEauLDhVlH1Z5MnpOabMOKupDGW36h64ft OwKbyaBWxlMml5sZOprZwpHwa/K9sfJX9rrQ2/qAYVdqukxEdGKBOjjYqBLnoVxdAMM/ p9d3OP5Ao/Sa/Q82PsfRYbw0um8SpyFj62y//JBRx2bJpoECDyT2HwH4u+W+h8V3/hda GriA== X-Received: by 10.70.41.13 with SMTP id b13mr55936952pdl.20.1415187327670; Wed, 05 Nov 2014 03:35:27 -0800 (PST) Received: from localhost.localdomain (124-144-18-103.rev.home.ne.jp. [124.144.18.103]) by mx.google.com with ESMTPSA id ob17sm2988957pdb.34.2014.11.05.03.35.24 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 05 Nov 2014 03:35:26 -0800 (PST) From: Daichi Ueura X-Google-Original-From: Daichi Ueura To: hostap@lists.shmoo.com Subject: [PATCH 2/2] P2P: Add support for freq option in p2p_find Date: Wed, 5 Nov 2014 20:35:09 +0900 Message-Id: <1415187309-12742-2-git-send-email-daichi.ueura@sonymobile.com> X-Mailer: git-send-email 1.8.2.2 In-Reply-To: <1415187309-12742-1-git-send-email-daichi.ueura@sonymobile.com> References: <1415187309-12742-1-git-send-email-daichi.ueura@sonymobile.com> Cc: daichi.ueura@gmail.com, Daisuke Niwa , Daichi Ueura X-BeenThere: hostap@lists.shmoo.com X-Mailman-Version: 2.1.11 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: Daisuke Niwa This allows a channel to be specified for the p2p_find. Signed-off-by: Daichi Ueura --- src/p2p/p2p.c | 8 +++++++- src/p2p/p2p.h | 5 ++++- wpa_supplicant/ctrl_iface.c | 11 ++++++++++- wpa_supplicant/dbus/dbus_new_handlers_p2p.c | 2 +- wpa_supplicant/p2p_supplicant.c | 4 ++-- wpa_supplicant/p2p_supplicant.h | 2 +- 6 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c index d17f70d..e67a4e6 100644 --- a/src/p2p/p2p.c +++ b/src/p2p/p2p.c @@ -1080,7 +1080,7 @@ static void p2p_free_req_dev_types(struct p2p_data *p2p) int p2p_find(struct p2p_data *p2p, unsigned int timeout, enum p2p_discovery_type type, unsigned int num_req_dev_types, const u8 *req_dev_types, - const u8 *dev_id, unsigned int search_delay) + const u8 *dev_id, unsigned int search_delay, int freq) { int res; @@ -1122,6 +1122,12 @@ int p2p_find(struct p2p_data *p2p, unsigned int timeout, p2p, NULL); switch (type) { case P2P_FIND_START_WITH_FULL: + if (freq > 0) { + res = p2p->cfg->p2p_scan(p2p->cfg->cb_ctx, P2P_SCAN_SPECIFIC, freq, + p2p->num_req_dev_types, + p2p->req_dev_types, dev_id, DEV_PW_DEFAULT); + break; + } case P2P_FIND_PROGRESSIVE: res = p2p->cfg->p2p_scan(p2p->cfg->cb_ctx, P2P_SCAN_FULL, 0, p2p->num_req_dev_types, diff --git a/src/p2p/p2p.h b/src/p2p/p2p.h index dcd3027..ba4dcb7 100644 --- a/src/p2p/p2p.h +++ b/src/p2p/p2p.h @@ -943,12 +943,15 @@ enum p2p_discovery_type { * requested device types. * @dev_id: Device ID to search for or %NULL to find all devices * @search_delay: Extra delay in milliseconds between search iterations + * @freq: Requested frequency for P2P_SCAN_SPECIFIC. + * If p2p_find is already in progress, + * this parameter is ignored and full scan will be executed. * Returns: 0 on success, -1 on failure */ int p2p_find(struct p2p_data *p2p, unsigned int timeout, enum p2p_discovery_type type, unsigned int num_req_dev_types, const u8 *req_dev_types, - const u8 *dev_id, unsigned int search_delay); + const u8 *dev_id, unsigned int search_delay, int freq); /** * p2p_notify_scan_trigger_status - Indicate scan trigger status diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 58480a7..f2c21a2 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -4057,6 +4057,7 @@ static int p2p_ctrl_find(struct wpa_supplicant *wpa_s, char *cmd) u8 dev_type[WPS_DEV_TYPE_LEN], *_dev_type = NULL; char *pos; unsigned int search_delay; + int freq = 0; if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) { wpa_dbg(wpa_s, MSG_INFO, @@ -4091,8 +4092,16 @@ static int p2p_ctrl_find(struct wpa_supplicant *wpa_s, char *cmd) } else search_delay = wpas_p2p_search_delay(wpa_s); + pos = os_strstr(cmd, "freq="); + if (pos) { + pos += 6; + freq = atoi(pos); + if (freq <= 0) + return -1; + } + return wpas_p2p_find(wpa_s, timeout, type, _dev_type != NULL, _dev_type, - _dev_id, search_delay); + _dev_id, search_delay, freq); } diff --git a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c index f006887..767c58d 100644 --- a/wpa_supplicant/dbus/dbus_new_handlers_p2p.c +++ b/wpa_supplicant/dbus/dbus_new_handlers_p2p.c @@ -131,7 +131,7 @@ DBusMessage * wpas_dbus_handler_p2p_find(DBusMessage *message, wpa_s = wpa_s->p2p_dev; wpas_p2p_find(wpa_s, timeout, type, num_req_dev_types, req_dev_types, - NULL, 0); + NULL, 0, 0); os_free(req_dev_types); return reply; diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 931200d..605f58a 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -5890,7 +5890,7 @@ static void wpas_p2p_clear_pending_action_tx(struct wpa_supplicant *wpa_s) int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout, enum p2p_discovery_type type, unsigned int num_req_dev_types, const u8 *req_dev_types, - const u8 *dev_id, unsigned int search_delay) + const u8 *dev_id, unsigned int search_delay, int freq) { wpas_p2p_clear_pending_action_tx(wpa_s); wpa_s->p2p_long_listen = 0; @@ -5903,7 +5903,7 @@ int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout, return p2p_find(wpa_s->global->p2p, timeout, type, num_req_dev_types, req_dev_types, dev_id, - search_delay); + search_delay, freq); } diff --git a/wpa_supplicant/p2p_supplicant.h b/wpa_supplicant/p2p_supplicant.h index 4bc90fb..8381a32 100644 --- a/wpa_supplicant/p2p_supplicant.h +++ b/wpa_supplicant/p2p_supplicant.h @@ -55,7 +55,7 @@ enum p2p_discovery_type; int wpas_p2p_find(struct wpa_supplicant *wpa_s, unsigned int timeout, enum p2p_discovery_type type, unsigned int num_req_dev_types, const u8 *req_dev_types, - const u8 *dev_id, unsigned int search_delay); + const u8 *dev_id, unsigned int search_delay, int freq); void wpas_p2p_stop_find(struct wpa_supplicant *wpa_s); int wpas_p2p_listen(struct wpa_supplicant *wpa_s, unsigned int timeout); int wpas_p2p_assoc_req_ie(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,