}
+struct wpabuf * p2p_group_build_p2p2_ie(struct p2p_data *p2p,
+ struct wpabuf *p2p2_ie, int freq)
+{
+ u8 *len;
+
+ wpabuf_put_u8(p2p2_ie, WLAN_EID_VENDOR_SPECIFIC);
+ len = wpabuf_put(p2p2_ie, 1);
+ wpabuf_put_be32(p2p2_ie, P2P2_IE_VENDOR_TYPE);
+ wpa_printf(MSG_DEBUG, "P2P: * P2P2 IE header");
+ p2p_buf_add_pcea(p2p2_ie, p2p);
+ *len = (u8 *) wpabuf_put(p2p2_ie, 0) - len - 1;
+
+ return p2p2_ie;
+}
+
+
static struct wpabuf * p2p_group_build_beacon_ie(struct p2p_group *group)
{
struct wpabuf *ie;
u8 *len;
size_t extra = 0;
+ struct wpabuf *p2p2_ie;
#ifdef CONFIG_WIFI_DISPLAY
if (group->p2p->wfd_ie_beacon)
group->p2p->vendor_elem[VENDOR_ELEM_BEACON_P2P_GO])
extra += wpabuf_len(group->p2p->vendor_elem[VENDOR_ELEM_BEACON_P2P_GO]);
- ie = wpabuf_alloc(257 + extra);
+ ie = wpabuf_alloc(500 + extra);
if (ie == NULL)
return NULL;
p2p_group_add_noa(ie, group->noa);
p2p_buf_update_ie_hdr(ie, len);
+ if (group->cfg->p2p2) {
+ p2p2_ie = wpabuf_alloc(255);
+ if (!p2p2_ie) {
+ wpabuf_free(ie);
+ return NULL;
+ }
+
+ p2p_group_build_p2p2_ie(group->p2p, p2p2_ie, group->cfg->freq);
+ ie = wpabuf_concat(p2p2_ie, ie);
+ }
+
return ie;
}
static struct wpabuf * p2p_group_build_probe_resp_ie(struct p2p_group *group)
{
struct wpabuf *p2p_subelems, *ie;
+ struct wpabuf *p2p2_ie;
p2p_subelems = wpabuf_alloc(500);
if (p2p_subelems == NULL)
ie = wpabuf_concat(wfd, ie);
}
#endif /* CONFIG_WIFI_DISPLAY */
+ if (group->cfg->p2p2) {
+ p2p2_ie = wpabuf_alloc(255);
+ if (!p2p2_ie) {
+ wpabuf_free(ie);
+ return NULL;
+ }
+ p2p_group_build_p2p2_ie(group->p2p, p2p2_ie, group->cfg->freq);
+ ie = wpabuf_concat(p2p2_ie, ie);
+ }
return ie;
}
struct wpabuf *resp;
u8 *rlen;
size_t extra = 0;
+ struct wpabuf *p2p2_ie;
#ifdef CONFIG_WIFI_DISPLAY
if (group->wfd_ie)
p2p_buf_add_status(resp, status);
p2p_buf_update_ie_hdr(resp, rlen);
+ if (group->cfg->p2p2) {
+ p2p2_ie = wpabuf_alloc(255);
+ if (!p2p2_ie) {
+ wpabuf_free(resp);
+ return NULL;
+ }
+
+ p2p_group_build_p2p2_ie(group->p2p, p2p2_ie, group->cfg->freq);
+ resp = wpabuf_concat(p2p2_ie, resp);
+ }
+
return resp;
}