Sorry, I'm a bit behind things ... > > It's actually created by mac80211, but only once, and not directly > > mapped to each vif seen by userspace - it's an internal construction. > > I'm not sure it matters, but ath10k firmware can also create a monitor vdev > itself for certain reasons. (Maybe offchannel tx on some FW, but I haven't looked at > that code lately). Yeah and I think it may actually do for active monitor, but I believe those get their own MAC address anyway? That might get used in the end as the vif to the driver too. > > However, thinking about it, that also breaks userspace in other ways - > > for example if you do injection this way you actually get encryption and > > other nice things if you use the local address that matches an existing > > interface. > > I'm not entirely sure of a useful use-case for this feature in user-space. Which feature? At least ancient versions of hostapd would rely on this, but clearly that's no longer super relevant. I don't know if anyone else relies on it, but in a way that is the problem. If I knew, then I could think about alternatives or how to keep that working if we change anything here. > I am using it just to test sending some test frames to debug some firmware > features. I think another user sent hand-crafted specialized beacons in this manner > using my 10.1 ath10k firmware & driver. For whatever reason, I didn't realize monitor > vdevs were not directly used when I added that support..maybe I just got lucky > before I had to dig closely. They may be used if they were active monitor? I don't know ath10k well. But then they shouldn't have had the same MAC address to start with, IIRC. > If I make the code in my original email be skipped, so that sdata remains the > monitor vdev, then it fails a check later in that method because there is no > chanctxt for the monitor sdata object. > > I guess that changing the source MAC to something unique would cause the same > issue and no frame would be sent towards the driver. Hmm. This *should* work in one way or the other? But again, maybe ath10k has something special here? You skipped *just* that loop? johannes