]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Android: Add P2P/WPS wrappers for private lib
authorJouni Malinen <j@w1.fi>
Thu, 7 Nov 2013 14:18:44 +0000 (16:18 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 22 Nov 2013 18:23:03 +0000 (20:23 +0200)
Android uses a vendor specific library for implementing couple of driver
interface functions. Add the wrapper code to allow that mechanism to be
used.

Signed-hostap: Jouni Malinen <j@w1.fi>

src/drivers/driver_nl80211.c

index 9b2f81e3ee05df4d048472c62ecded27b6269642..484c6176803ef1c83a2c021a73924b6627e55024 100644 (file)
@@ -363,6 +363,14 @@ static int android_pno_start(struct i802_bss *bss,
                             struct wpa_driver_scan_params *params);
 static int android_pno_stop(struct i802_bss *bss);
 #endif /* ANDROID */
+#ifdef ANDROID_P2P
+int wpa_driver_set_p2p_noa(void *priv, u8 count, int start, int duration);
+int wpa_driver_get_p2p_noa(void *priv, u8 *buf, size_t len);
+int wpa_driver_set_p2p_ps(void *priv, int legacy_ps, int opp_ps, int ctwindow);
+int wpa_driver_set_ap_wps_p2p_ie(void *priv, const struct wpabuf *beacon,
+                                const struct wpabuf *proberesp,
+                                const struct wpabuf *assocresp);
+#endif /* ANDROID_P2P */
 
 static void add_ifidx(struct wpa_driver_nl80211_data *drv, int ifidx);
 static void del_ifidx(struct wpa_driver_nl80211_data *drv, int ifidx);
@@ -615,10 +623,13 @@ static int send_and_recv_msgs_global(struct nl80211_global *global,
 }
 
 
-static int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv,
-                             struct nl_msg *msg,
-                             int (*valid_handler)(struct nl_msg *, void *),
-                             void *valid_data)
+#ifndef ANDROID_P2P
+static
+#endif /* ANDROID_P2P */
+int send_and_recv_msgs(struct wpa_driver_nl80211_data *drv,
+                      struct nl_msg *msg,
+                      int (*valid_handler)(struct nl_msg *, void *),
+                      void *valid_data)
 {
        return send_and_recv(drv->global, drv->global->nl, msg,
                             valid_handler, valid_data);
@@ -10610,8 +10621,13 @@ static int nl80211_set_p2p_powersave(void *priv, int legacy_ps, int opp_ps,
        wpa_printf(MSG_DEBUG, "nl80211: set_p2p_powersave (legacy_ps=%d "
                   "opp_ps=%d ctwindow=%d)", legacy_ps, opp_ps, ctwindow);
 
-       if (opp_ps != -1 || ctwindow != -1)
+       if (opp_ps != -1 || ctwindow != -1) {
+#ifdef ANDROID_P2P
+               wpa_driver_set_p2p_ps(priv, legacy_ps, opp_ps, ctwindow);
+#else /* ANDROID_P2P */
                return -1; /* Not yet supported */
+#endif /* ANDROID_P2P */
+       }
 
        if (legacy_ps == -1)
                return 0;
@@ -11433,4 +11449,9 @@ const struct wpa_driver_ops wpa_driver_nl80211_ops = {
        .get_survey = wpa_driver_nl80211_get_survey,
        .status = wpa_driver_nl80211_status,
        .switch_channel = nl80211_switch_channel,
+#ifdef ANDROID_P2P
+       .set_noa = wpa_driver_set_p2p_noa,
+       .get_noa = wpa_driver_get_p2p_noa,
+       .set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie,
+#endif /* ANDROID_P2P */
 };