Hi Johannes,
TBH, I'm not really sure I see any point in this to start with, many devices will give the address to the firmware when the interface is brought up (even iwlwifi does - I'm not sure we'd want to take your patch for iwlwifi even if that works today, nothing says the firmware might not change its mind on that), and so it's quite likely only going to be supported in few devices.
Hmm... I sense a pattern of you not seeing a point in doing many things... Do you actually use the stuff you maintain?
You've also not really explained what exactly is troubling you with changing the MAC address, you just mentioned some sort of "race condition"?
Well, one possible use case might be, oh something like this: https://source.android.com/devices/tech/connect/wifi-mac-randomization
Now, one thing I can imagine would be that you'd want to optimize * ifdown - remove iface from fw/hw - stop fw/hw * change MAC * ifup - start fw/hw - add iface to fw/hw to just * ifdown - remove iface from fw/hw * change MAC * ifup - add iface to fw/hw
That would be a part of it...
i.e. not restart the firmware (which takes time) for all this, but that seems much easier to solve by e.g. having a combined operation for all of this that gets handled in mac80211, or more generally by having a "please keep the firmware running" token that you can hold while you do the operation?
And also maybe a bunch of other optimizations like not flushing scan results?
Your changes are also a bit strange - you modified the "connect" path and iwlwifi, but the connect path is not usually (other than with iw or even iwconfig) taken for iwlwifi? And if you modify auth/assoc paths, you get into even weirder problems - what if you use different addresses for auth and assoc? What if the assoc (or even connect) really was a *re*assoc, and thus must have the same MAC address? To me, the whole thing seems like more of a problem than a solution.
Okay, so there are some obstacles. But can you get over the whole "Don't hold it like this" part and actually offer up something constructive?
Regards, -Denis