On Tue, 2023-04-18 at 17:22 +0800, Wen Gong wrote: > > It should work, I will test it later. > > For the 1st assoc link, the data->u.mgd.assoc_data is empty in > ieee80211_mgd_setup_link(), Yeah for the first link it should work. > because ieee80211_mgd_setup_link() is called from nl80211_authenticate() > for the 1st assoc link. > > So ieee80211_mgd_setup_link() use eth_random_addr() for the 1st assoc link. Right. > For the 2nd link, ieee80211_mgd_setup_link() is called from > nl80211_associate() I don't think so, it should only be called from ieee80211_assoc_success()? > the sdata->u.mgd.assoc_data is NOT empty, > > and the sdata->u.mgd.assoc_data->link[link_id].addr is valid, > > it is addr by eth_random_addr(assoc_data->link[i].addr) in > ieee80211_mgd_assoc(). > Exactly, so we've already decided on the address long before we actually add the link data structure, so your callback would be much too late. We'd need to have it called from ieee80211_mgd_assoc() already? johannes