[RFC PATCH 28/34] Update PR device mac address on mac randomization

Peddolla Harshavardhan Reddy peddolla at qti.qualcomm.com
Thu May 15 00:17:51 PDT 2025


Signed-off-by: Peddolla Harshavardhan Reddy <peddolla at qti.qualcomm.com>
---
 src/common/proximity_ranging.c  | 7 +++++++
 src/common/proximity_ranging.h  | 1 +
 wpa_supplicant/pr_supplicant.c  | 6 ++++++
 wpa_supplicant/pr_supplicant.h  | 4 ++++
 wpa_supplicant/wpa_supplicant.c | 1 +
 5 files changed, 19 insertions(+)

diff --git a/src/common/proximity_ranging.c b/src/common/proximity_ranging.c
index 16544c6ae..a07fcf10f 100644
--- a/src/common/proximity_ranging.c
+++ b/src/common/proximity_ranging.c
@@ -138,6 +138,13 @@ void pr_deinit(struct pr_data *pr)
 }
 
 
+void pr_set_dev_addr(struct pr_data *pr, const u8 *addr)
+{
+	if (pr && addr)
+		os_memcpy(pr->cfg->dev_addr, addr, ETH_ALEN);
+}
+
+
 void pr_clear_dev_iks(struct pr_data *pr)
 {
 	struct pr_device *dev;
diff --git a/src/common/proximity_ranging.h b/src/common/proximity_ranging.h
index 93ec99960..c99020dd6 100644
--- a/src/common/proximity_ranging.h
+++ b/src/common/proximity_ranging.h
@@ -416,6 +416,7 @@ struct operation_mode {
 
 struct pr_data * pr_init(const struct pr_config *cfg);
 void pr_deinit(struct pr_data *pr);
+void pr_set_dev_addr(struct pr_data *pr, const u8 *addr);
 void pr_clear_dev_iks(struct pr_data *pr);
 void pr_add_dev_ik(struct pr_data *pr, const u8 *dik, const char *password,
 		   const u8 *pmk, bool own);
diff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c
index ab5ac853d..1f7a6ba68 100644
--- a/wpa_supplicant/pr_supplicant.c
+++ b/wpa_supplicant/pr_supplicant.c
@@ -245,6 +245,12 @@ void wpas_pr_deinit(struct wpa_supplicant *wpa_s)
 }
 
 
+void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s)
+{
+	pr_set_dev_addr(wpa_s->global->pr, wpa_s->own_addr);
+}
+
+
 void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s)
 {
 	struct pr_data *pr = wpa_s->global->pr;
diff --git a/wpa_supplicant/pr_supplicant.h b/wpa_supplicant/pr_supplicant.h
index 22df69050..209c3ba5c 100644
--- a/wpa_supplicant/pr_supplicant.h
+++ b/wpa_supplicant/pr_supplicant.h
@@ -15,6 +15,7 @@
 
 int wpas_pr_init(struct wpa_global *global, struct wpa_supplicant *wpa_s);
 void wpas_pr_deinit(struct wpa_supplicant *wpa_s);
+void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s);
 void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s);
 void wpas_pr_set_dev_ik(struct wpa_supplicant *wpa_s, const u8 *dik,
 			const char *password, const u8 *pmk, bool own);
@@ -42,6 +43,9 @@ static inline void wpas_pr_deinit(struct wpa_supplicant *wpa_s)
 {
 }
 
+static inline void wpas_pr_update_dev_addr(struct wpa_supplicant *wpa_s)
+{
+}
 
 static inline void wpas_pr_clear_dev_iks(struct wpa_supplicant *wpa_s)
 {
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index af9f94d47..fa2fda46f 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -2630,6 +2630,7 @@ int wpas_update_random_addr(struct wpa_supplicant *wpa_s,
 	}
 
 	wpas_p2p_update_dev_addr(wpa_s);
+	wpas_pr_update_dev_addr(wpa_s);
 
 	wpa_msg(wpa_s, MSG_DEBUG, "Using random MAC address " MACSTR,
 		MAC2STR(addr));
-- 
2.34.1




More information about the Hostap mailing list