From patchwork Mon Mar 5 10:39:44 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eliad Peller X-Patchwork-Id: 144648 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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "maxx.shmoo.com", Issuer "CA Cert Signing Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 3F4D6B6EEC for ; Mon, 5 Mar 2012 21:39:44 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id C52CC9D1DA; Mon, 5 Mar 2012 05:39:38 -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 L5IJ+33ZNX3f; Mon, 5 Mar 2012 05:39:38 -0500 (EST) Received: from maxx.shmoo.com (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id A710F9D1DD; Mon, 5 Mar 2012 05:39:34 -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 9F8E29D1DD for ; Mon, 5 Mar 2012 05:39:33 -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 Q7L4Ri-dfZJV for ; Mon, 5 Mar 2012 05:39:30 -0500 (EST) Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (not verified)) by maxx.maxx.shmoo.com (Postfix) with ESMTPS id C711C9D1DA for ; Mon, 5 Mar 2012 05:39:29 -0500 (EST) Received: by wicr5 with SMTP id r5so2868596wic.17 for ; Mon, 05 Mar 2012 02:39:28 -0800 (PST) Received-SPF: pass (google.com: domain of eliad@wizery.com designates 10.216.139.143 as permitted sender) client-ip=10.216.139.143; Authentication-Results: mr.google.com; spf=pass (google.com: domain of eliad@wizery.com designates 10.216.139.143 as permitted sender) smtp.mail=eliad@wizery.com Received: from mr.google.com ([10.216.139.143]) by 10.216.139.143 with SMTP id c15mr5605716wej.39.1330943968759 (num_hops = 1); Mon, 05 Mar 2012 02:39:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:from:to:subject:date:message-id:x-mailer :x-gm-message-state; bh=BZaFa7wDcTsiUyd0yILf/CbYoA3axqq5siqeZl0DiyM=; b=WtiPg3HiB38NP55ZDhsszss3+s33tijm93WkngYz21yvIzuh14h4GvzebBPmmzd18Z kjr0kGSjJcBunhaJJvKEpsEU7iFVQtvs8qlK3fk3HPH+p90VzPLXM3SU6Ogv/KVHVIlG ccQjJ7QaQNjLkJBrIK6OFEDBLKoGwQCjTf1VY0WXLRHkUIYhdwLjzY/ppLYMvo5HJdi8 xpVGjJNkqciHrI+h4bt2cn6ChXrD1zvqQqyP7XXy3IuM7hAw9Yg0RYTG0J2Adu3OxW8l AonMIPNu34w/PUWEhGQOiaQiQ5RbrfZpxPjvZ/Lj7q2z7XCExO9YQ+aghBFA1m5QvIz9 e1lw== MIME-Version: 1.0 Received: by 10.216.139.143 with SMTP id c15mr4459032wej.39.1330943968491; Mon, 05 Mar 2012 02:39:28 -0800 (PST) Received: from localhost.localdomain (93-172-241-23.bb.netvision.net.il. [93.172.241.23]) by mx.google.com with ESMTPS id v4sm59994277wiy.9.2012.03.05.02.39.26 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 05 Mar 2012 02:39:27 -0800 (PST) From: Eliad Peller To: Subject: [PATCH] P2P: Add deinit_p2p_cli op Date: Mon, 5 Mar 2012 12:39:44 +0200 Message-Id: <1330943984-8572-1-git-send-email-eliad@wizery.com> X-Mailer: git-send-email 1.7.6.401.g6a319 X-Gm-Message-State: ALoCoQlo4De8QkmE2Qoz3mueUoIZqOUElPeJmZeptHYhmKitqW6YV14fVFq0Ug19kIW7UuYr1TgS X-BeenThere: hostap@lists.shmoo.com X-Mailman-Version: 2.1.9 Precedence: list List-Id: HostAP Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: hostap-bounces@lists.shmoo.com Errors-To: hostap-bounces@lists.shmoo.com On p2p group removal, the GO is deinitialized correctly (and the vif mode is set back to sta), but the P2P_CLI isn't deinitialized, and the vif stays in P2P_CLI mode. Add a new deinit_p2p_cli op (similar to deinit_ap), which currently only sets the interface back to sta mode. Signed-hostap: Eliad Peller intended-for: hostap-1 --- src/drivers/driver.h | 11 +++++++++++ src/drivers/driver_nl80211.c | 9 +++++++++ wpa_supplicant/driver_i.h | 7 +++++++ wpa_supplicant/p2p_supplicant.c | 5 ++++- 4 files changed, 31 insertions(+), 1 deletions(-) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index 04aedcf..f104cd7 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -2003,6 +2003,17 @@ struct wpa_driver_ops { int (*deinit_ap)(void *priv); /** + * deinit_ap - Deinitialize P2P_CLI mode + * @priv: Private driver interface data + * Returns: 0 on success, -1 on failure (or if not supported) + * + * This optional function can be used to disable P2P_CLI mode. + * usually, it will most be used to change vif type back to + * station mode. + */ + int (*deinit_p2p_cli)(void *priv); + + /** * suspend - Notification on system suspend/hibernate event * @priv: Private driver interface data */ diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 184b26f..a3c857c 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -8263,6 +8263,14 @@ static int wpa_driver_nl80211_deinit_ap(void *priv) return wpa_driver_nl80211_set_mode(priv, NL80211_IFTYPE_STATION); } +static int wpa_driver_nl80211_deinit_p2p_cli(void *priv) +{ + struct i802_bss *bss = priv; + struct wpa_driver_nl80211_data *drv = bss->drv; + if (drv->nlmode != NL80211_IFTYPE_P2P_CLIENT) + return -1; + return wpa_driver_nl80211_set_mode(priv, NL80211_IFTYPE_STATION); +} static void wpa_driver_nl80211_resume(void *priv) { @@ -8989,6 +8997,7 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = { wpa_driver_nl80211_cancel_remain_on_channel, .probe_req_report = wpa_driver_nl80211_probe_req_report, .deinit_ap = wpa_driver_nl80211_deinit_ap, + .deinit_p2p_cli = wpa_driver_nl80211_deinit_p2p_cli, .resume = wpa_driver_nl80211_resume, .send_ft_action = nl80211_send_ft_action, .signal_monitor = nl80211_signal_monitor, diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h index 5b10540..e1e921d 100644 --- a/wpa_supplicant/driver_i.h +++ b/wpa_supplicant/driver_i.h @@ -427,6 +427,13 @@ static inline int wpa_drv_deinit_ap(struct wpa_supplicant *wpa_s) return 0; } +static inline int wpa_drv_deinit_p2p_cli(struct wpa_supplicant *wpa_s) +{ + if (wpa_s->driver->deinit_p2p_cli) + return wpa_s->driver->deinit_p2p_cli(wpa_s->drv_priv); + return 0; +} + static inline void wpa_drv_suspend(struct wpa_supplicant *wpa_s) { if (wpa_s->driver->suspend) diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 486a551..46bb123 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -311,7 +311,10 @@ static void wpas_p2p_group_delete(struct wpa_supplicant *wpa_s) wpa_printf(MSG_DEBUG, "P2P: Temporary group network not " "found"); } - wpa_supplicant_ap_deinit(wpa_s); + if (wpa_s->ap_iface) + wpa_supplicant_ap_deinit(wpa_s); + else + wpa_drv_deinit_p2p_cli(wpa_s); }