> > My AP have 3 bssid, the wlan0 is set in WPA-EAP, the wlan0_1 is set > in WPA-PSK and the latest wlan0_2 is without security. It is useful > for my test, I only need to change the sta configuration. > > I added some debug in net/mac80211/tx.c > > When I use the BSSID set in WPA-PSK (this case works), the broadcast > frames are sent through the netdev wlan0_1.sta1. > When I use the BSSID set in WPA-EAP (this case doesn't work) the > broadcast frames are sent through the netdev wlan0 (use fast_xmit > path). But the wlan0.sta1 netdev is created in the system, added to > the bridge, and received the frame from the bridge. But in this case > the function ieee80211_lookup_ra_sta return ENOLINK for wlan0.sta1 > and the frame is dropped. > > So I think the issue is in transmit side, I don't why, but with > WPA-EAP the mac80211 state seem different and the WDS doesn't work. > > Do you have any explanation or idea to locate the origin ? Not really. The code there is just switch (sdata->vif.type) { case NL80211_IFTYPE_AP_VLAN: sta = rcu_dereference(sdata->u.vlan.sta); if (sta) { *sta_out = sta; return 0; } else if (sdata->wdev.use_4addr) { return -ENOLINK; } as far as I can tell, right? > Yes So if you got into the -ENOLINK case, then it means that userspace didn't add the right station to the 4-addr VLAN interface, which I guess was "wlan0.sta1"? Not sure how that'd happen. > The wlan0.sta1 net dev was created by hostapd to manage the wds sta. This netdev type is AP VLAN. The function ieee80211_lookup_ra_sta return >-ENOLINK because the pointer sdata->u.vlan.sta was not defined. >In mac80211, where this rcu pointer is allocated? Which NL message the user space use ?