static int p2p_prepare_pasn_extra_ie(struct p2p_data *p2p,
struct wpabuf *extra_ies,
- const struct wpabuf *frame)
+ const struct wpabuf *frame, bool add_dira)
{
struct wpabuf *buf, *buf2;
size_t len;
/* P2P Capability Extension attribute */
p2p_buf_add_pcea(buf, p2p);
+ if (add_dira) {
+ /* Device Identity Resolution attribute */
+ p2p_buf_add_dira(buf, p2p);
+ }
+
if (frame) {
p2p_dbg(p2p, "Add Action frame wrapper for PASN");
wpabuf_put_u8(buf, P2P_ATTR_ACTION_FRAME_WRAPPER);
return -1;
}
- if (p2p_prepare_pasn_extra_ie(p2p, extra_ies, req)) {
+ if (p2p_prepare_pasn_extra_ie(p2p, extra_ies, req, true)) {
p2p_dbg(p2p, "Prepare PASN extra IEs failed");
ret = -1;
goto out;
return -1;
}
- if (p2p_prepare_pasn_extra_ie(p2p, extra_ies, req)) {
+ if (p2p_prepare_pasn_extra_ie(p2p, extra_ies, req, false)) {
p2p_dbg(p2p, "Failed to prepare PASN extra elements");
ret = -1;
goto out;
extra_ies = wpabuf_alloc(1500);
if (!extra_ies ||
p2p_prepare_pasn_extra_ie(p2p, extra_ies,
- dev->action_frame_wrapper)) {
+ dev->action_frame_wrapper, false)) {
p2p_dbg(p2p, "Failed to prepare PASN extra elements");
goto out;
}