Patchwork [v2,03/10] wpa_driver: add init and deinit P2P device functions

login
register
mail settings
Submitter dvdspndl@gmail.com
Date March 17, 2013, 8:57 p.m.
Message ID <1363553840-7844-4-git-send-email-dvdspndl@gmail.com>
Download mbox | patch
Permalink /patch/228322/
State Changes Requested
Headers show

Comments

dvdspndl@gmail.com - March 17, 2013, 8:57 p.m.
From: David Spinadel <david.spinadel@intel.com>

Add functions to handle creation and destroying P2P device interface.

Signed-off-by: David Spinadel <david.spinadel@intel.com>
---
 src/drivers/driver.h      |   17 +++++++++++++++++
 wpa_supplicant/driver_i.h |   14 ++++++++++++++
 2 files changed, 31 insertions(+)

Patch

diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 9ccd8ce..abcf339 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -2646,6 +2646,23 @@  struct wpa_driver_ops {
 	 * avoid frequency conflict in single channel concurrency.
 	 */
 	int (*switch_channel)(void *priv, unsigned int freq);
+
+	/**
+	 * init_p2p_dev - Initialize P2P device interface
+	 * @priv: Private driver data of the already existing interface
+	 * @ifname: interface name, e.g., p2p-wlan0, mainly for debugging
+	 * Returns: Pointer to private data of P2P device, %NULL on failure
+	 *
+	 * NULL is returned also if P2P device interface is not supported by the
+	 * HW.
+	 */
+	void * (*init_p2p_dev)(void *priv, const char *ifname, u8 *addr);
+
+	/**
+	 * deinit_p2p_dev - Deinitialize P2P device interface
+	 * @priv: private data of the P2P device interface
+	 */
+	void (*deinit_p2p_dev)(void *priv);
 };
 
 
diff --git a/wpa_supplicant/driver_i.h b/wpa_supplicant/driver_i.h
index 29113ff..d70da3d 100644
--- a/wpa_supplicant/driver_i.h
+++ b/wpa_supplicant/driver_i.h
@@ -753,4 +753,18 @@  wpa_drv_p2p_cancel_remain_on_channel(struct wpa_supplicant *wpa_s)
 	return -1;
 }
 
+static inline void *wpa_drv_init_p2p_dev(struct wpa_supplicant *wpa_s,
+					 const char *ifname, u8 *addr)
+{
+	if (!wpa_s->driver->init_p2p_dev)
+		return NULL;
+	return wpa_s->driver->init_p2p_dev(wpa_s->drv_priv, ifname, addr);
+}
+
+static inline void wpa_drv_deinit_p2p_dev(struct wpa_supplicant *wpa_s)
+{
+	if (wpa_s->driver->deinit_p2p_dev)
+		wpa_s->driver->deinit_p2p_dev(wpa_s->p2p_drv_priv);
+}
+
 #endif /* DRIVER_I_H */