Hello list, I am using compat-wireless-2014-11-04 and hostapd-2014-06-03 in an openwrt environment. I have set up a wpa_supplicant and an AP using Atheros chips. The supplicant is set in 4-addresses mode. The AP is set to put its 4-addresses clients into a bridge. Symptom: the supplicant associates to the AP as expected. But from the AP it is not possible to ping the PC connected behind the supplicant, until that PC send something (an ARP or whatever data frame). The reason I found is that hostapd does not put the 4-addr station in the bridge. I noticed that in mac80211/mlme.c the client station sends a null data frame to inform the AP that it will use the 4-addresses format. On the AP, hostapd logs show that it does not receive an event for this frame, but it receives a 4-addr event alright on a subsequent, real data frame. I also noticed that in mac80211/rx.c the ieee80211_rx_h_sta_process() function sends an event to userspace. But in the case of the first null-data, the frame is trapped before, in ieee80211_rx_h_check(), in the test of cfg80211_rx_spurious_frame(). So, though everything looks all set for the AP to detect its 4-addr client, this does not occur if the client does not send real data. I tried to move the event generation code from ieee80211_rx_h_sta_process() to ieee80211_rx_h_check(), but this does not work, it looks like rx->sta does not exist yet at this point in the frame processing. I'm stuck now. Any ideas?
<<attachment: winmail.dat>>