From 0fad5fef711777dd896ee8fa4aaadefb34072a4c Mon Sep 17 00:00:00 2001 From: Andrew Zaborowski Date: Wed, 9 Sep 2020 01:49:19 +0200 Subject: [PATCH] p2p: Do provisioning scan from the Interface Address For WSC we should have been sending our probe requests from the same address we're going to be doing EAP-WSC with the GO. Somehow I was able to connect to most devices without that but other implementations seem to use the Interface Address (the P2P-Client's MAC), not the Device Address (P2P-Device's MAC). We could switch the order to first create the new interface and scan from it is simpler to use the scan_context we already have created on the device interface and set a different mac. --- src/p2p.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/p2p.c b/src/p2p.c index 34ff94bf..6c36d5b0 100644 --- a/src/p2p.c +++ b/src/p2p.c @@ -1300,6 +1300,13 @@ static void p2p_provision_scan_start(struct p2p_device *dev) ¶ms.extra_ie_size); L_WARN_ON(!params.extra_ie); + /* + * Rather than create the new interface and create a new + * scan_context on it, use the P2P-Device interface and set + * params.source_mac to our future P2P-Client address. + */ + params.source_mac = dev->conn_addr; + /* * Initially scan just the Operating Channel the GO reported * during the negotiation. In theory there's no guarantee that