static int wpas_wps_start_dev_pw(struct wpa_supplicant *wpa_s, const u8 *bssid,
                                 const char *pin, int p2p_group, u16 dev_pw_id,
-                                const u8 *peer_pubkey_hash)
+                                const u8 *peer_pubkey_hash,
+                                const u8 *ssid_val, size_t ssid_len)
 {
        struct wpa_ssid *ssid;
        char val[128 + 2 * WPS_OOB_PUBKEY_HASH_LEN];
 
        wpas_clear_wps(wpa_s);
        ssid = wpas_wps_add_network(wpa_s, 0, bssid);
-       if (ssid == NULL)
+       if (ssid == NULL) {
+               wpa_printf(MSG_DEBUG, "WPS: Could not add network");
                return -1;
+       }
        ssid->temporary = 1;
        ssid->p2p_group = p2p_group;
+       if (ssid_val) {
+               ssid->ssid = os_malloc(ssid_len);
+               if (ssid->ssid) {
+                       os_memcpy(ssid->ssid, ssid_val, ssid_len);
+                       ssid->ssid_len = ssid_len;
+               }
+       }
        if (peer_pubkey_hash) {
                os_memcpy(hash, " pkhash=", 8);
                wpa_snprintf_hex_uppercase(hash + 8, sizeof(hash) - 8,
                       const char *pin, int p2p_group, u16 dev_pw_id)
 {
        return wpas_wps_start_dev_pw(wpa_s, bssid, pin, p2p_group, dev_pw_id,
-                                    NULL);
+                                    NULL, NULL, 0);
 }
 
 
 
 int wpas_wps_start_nfc(struct wpa_supplicant *wpa_s, const u8 *bssid,
                       const struct wpabuf *dev_pw, u16 dev_pw_id,
-                      int p2p_group, const u8 *peer_pubkey_hash)
+                      int p2p_group, const u8 *peer_pubkey_hash,
+                      const u8 *ssid, size_t ssid_len)
 {
        struct wps_context *wps = wpa_s->wps;
        char pw[32 * 2 + 1];
        wpa_snprintf_hex_uppercase(pw, sizeof(pw),
                                   wpabuf_head(dev_pw), wpabuf_len(dev_pw));
        return wpas_wps_start_dev_pw(wpa_s, bssid, pw, p2p_group, dev_pw_id,
-                                    peer_pubkey_hash);
+                                    peer_pubkey_hash, ssid, ssid_len);
 }
 
 
 
 struct wpabuf * wpas_wps_nfc_token(struct wpa_supplicant *wpa_s, int ndef);
 int wpas_wps_start_nfc(struct wpa_supplicant *wpa_s, const u8 *bssid,
                       const struct wpabuf *dev_pw, u16 dev_pw_id,
-                      int p2p_group, const u8 *peer_pubkey_hash);
+                      int p2p_group, const u8 *peer_pubkey_hash,
+                      const u8 *ssid, size_t ssid_len);
 int wpas_wps_nfc_tag_read(struct wpa_supplicant *wpa_s,
                          const struct wpabuf *data);
 struct wpabuf * wpas_wps_nfc_handover_req(struct wpa_supplicant *wpa_s, int cr);