[PATCH v4 17/20] PR: Restore dev_addr to station MAC after PD wdev stop
Kavita Kavita
kavita.kavita at oss.qualcomm.com
Fri May 22 18:23:49 PDT 2026
When a PD wdev is created with a custom MAC, pr_set_dev_addr() updates
pr->cfg->dev_addr to the PD MAC address. pr_pasn_auth_rx() validates
incoming PASN frames against pr->cfg->dev_addr, so without restoring
it, subsequent ranging sessions using the station MAC would have their
PASN frames rejected.
Call pr_set_dev_addr() with wpa_s->own_addr in wpas_pr_pd_stop() so
that pr->cfg->dev_addr reflects the station MAC once the PD wdev is
torn down.
Signed-off-by: Kavita Kavita <kavita.kavita at oss.qualcomm.com>
---
wpa_supplicant/pr_supplicant.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c
index 23ba5a7cd..6529e6a0c 100644
--- a/wpa_supplicant/pr_supplicant.c
+++ b/wpa_supplicant/pr_supplicant.c
@@ -771,6 +771,8 @@ void wpas_pr_deinit(struct wpa_supplicant *wpa_s)
void wpas_pr_pd_stop(struct wpa_supplicant *wpa_s)
{
+ struct pr_data *pr = wpa_s->global->pr;
+
/* Cancel ranging session timeout and stop peer measurement */
eloop_cancel_timeout(wpas_pr_ranging_session_timeout, wpa_s, NULL);
wpa_drv_stop_peer_measurement(wpa_s);
@@ -785,7 +787,13 @@ void wpas_pr_pd_stop(struct wpa_supplicant *wpa_s)
wpa_drv_pd_stop(wpa_s);
os_memset(wpa_s->pd_addr, 0, ETH_ALEN);
- wpa_printf(MSG_DEBUG, "PR: PD wdev stopped");
+
+ /* Restore dev_addr to station MAC now that PD wdev is gone */
+ if (pr)
+ pr_set_dev_addr(pr, wpa_s->own_addr);
+
+ wpa_printf(MSG_DEBUG, "PR: PD wdev stopped, dev_addr restored to " MACSTR,
+ MAC2STR(wpa_s->own_addr));
}
--
2.34.1
More information about the Hostap
mailing list