return ret;
}
+
+int pr_pasn_auth_tx_status(struct pr_data *pr, const u8 *data, size_t data_len,
+ bool acked)
+{
+ int ret = 0;
+ struct pr_device *dev;
+ struct pasn_data *pasn;
+ const struct ieee80211_mgmt *mgmt =
+ (const struct ieee80211_mgmt *) data;
+
+ if (!pr)
+ return -1;
+
+ dev = pr_get_device(pr, mgmt->da);
+ if (!dev || !dev->pasn) {
+ wpa_printf(MSG_INFO, "PR PASN: Peer not found " MACSTR,
+ MAC2STR(mgmt->da));
+ return -1;
+ }
+
+ pasn = dev->pasn;
+ wpa_printf(MSG_DEBUG, "PR PASN: TX status from " MACSTR " ack=%d",
+ MAC2STR(mgmt->da), acked);
+
+ ret = wpa_pasn_auth_tx_status(pasn, data, data_len, acked);
+ wpabuf_free(pasn->frame);
+ pasn->frame = NULL;
+
+ return ret;
+}
+
#endif /* CONFIG_PASN */
int pr_initiate_pasn_auth(struct pr_data *pr, const u8 *addr, int freq,
u8 auth_mode, u8 ranging_role, u8 ranging_type,
int forced_pr_freq);
+int pr_pasn_auth_tx_status(struct pr_data *pr, const u8 *data, size_t data_len,
+ bool acked);
#endif /* PROXIMITY_RANGING_H */
#include "wmm_ac.h"
#include "nan_usd.h"
#include "dpp_supplicant.h"
+#include "pr_supplicant.h"
#define MAX_OWE_TRANSITION_BSS_SELECT_COUNT 5
data->tx_status.ack) == 0)
break;
#endif /* CONFIG_P2P */
+#ifdef CONFIG_PR
+ if (data->tx_status.type == WLAN_FC_TYPE_MGMT &&
+ data->tx_status.stype == WLAN_FC_STYPE_AUTH &&
+ !wpa_s->pasn_auth_work &&
+ wpa_s->pr_pasn_auth_work &&
+ wpas_pr_pasn_auth_tx_status(wpa_s,
+ data->tx_status.data,
+ data->tx_status.data_len,
+ data->tx_status.ack) == 0)
+ break;
+#endif /* CONFIG_PR */
if (data->tx_status.type == WLAN_FC_TYPE_MGMT &&
data->tx_status.stype == WLAN_FC_STYPE_AUTH &&
wpas_pasn_auth_tx_status(wpa_s, data->tx_status.data,
return 0;
}
+
+int wpas_pr_pasn_auth_tx_status(struct wpa_supplicant *wpa_s, const u8 *data,
+ size_t data_len, bool acked)
+{
+ struct pr_data *pr = wpa_s->global->pr;
+
+ if (!wpa_s->pr_pasn_auth_work)
+ return -1;
+
+ return pr_pasn_auth_tx_status(pr, data, data_len, acked);
+}
+
#endif /* CONFIG_PASN */
const u8 *peer_addr, int freq, u8 auth_mode,
u8 ranging_role, u8 ranging_type,
int forced_pr_freq);
+int wpas_pr_pasn_auth_tx_status(struct wpa_supplicant *wpa_s, const u8 *data,
+ size_t data_len, bool acked);
#else /* CONFIG_PR */
return 0;
}
+static inline int wpas_pr_pasn_auth_tx_status(struct wpa_supplicant *wpa_s,
+ const u8 *data, size_t data_len,
+ bool acked)
+{
+ return 0;
+}
+
#endif /* CONFIG_PR */
#endif /* PR_SUPPLICANT_H */