On Wed, 2019-09-11 at 08:54 -0700, James Prestwood wrote: > > I could have made this a bit more clear. I initially did measure the > time to a full connection, including EAPoL, but the more I timed the > more chance there was for scheduling delays that really threw off the > results. Not that these results weren't valid, I just would have needed > to time many many more runs to get a decent averaged time. The method > of timings I took just isolated things a bit better. Sure, makes sense, and I didn't think you were doing that, I was just wondering what exactly you did measure. > For the three methods below I measured the time from the connection > initiation (either powering down via RTNL, changing MAC via RTNL, or > sending CMD_CONNECT) until we got a success callback from CMD_CONNECT, > including changing the MAC via RTNL in those cases. Ah, ok. > Out of curiosity how this behavior is different than the power down + > RTNL MAC change (the current way of doing things)? If you power down > the device, change the MAC, then power up does that MAC get reset after > a disconnection/failure? No, of course not? But then you're explicitly issuing a command ("change the MAC address") that is supposed to affect state indefinitely, vs. issuing a command ("please connect") that isn't really meant to. If there was one thing that we learned from wext, IMHO it was that keeping all the state in the kernel is bad for you, and it's much better to handle things if the state gets reset when you disconnect etc. In most places that's what we do now and I think it has served us well, so I'm very reluctant to mix things that need state in the kernel with those that don't. (You might not remember wext, but you'd have to issue a bunch of commands in the right order, and it would keep all the state inbetween; if you forgot to clear the BSSID after setting it, it'd be remembered and you couldn't connect to a new AP unless you reset it, etc.) Thanks, johannes