diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 14ca88233..444a785eb 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -2005,8 +2005,8 @@ static void nl80211_client_probe_event(struct wpa_driver_nl80211_data *drv, } -static void nl80211_spurious_class3_frame(struct i802_bss *bss, - struct nlattr **tb) +static void nl80211_spurious_frame(struct i802_bss *bss, struct nlattr **tb, + int wds) { struct wpa_driver_nl80211_data *drv = bss->drv; union wpa_event_data event; @@ -2022,6 +2022,7 @@ static void nl80211_spurious_class3_frame(struct i802_bss *bss, os_memset(&event, 0, sizeof(event)); event.rx_from_unknown.bssid = bssid; event.rx_from_unknown.addr = nla_data(tb[NL80211_ATTR_MAC]); + event.rx_from_unknown.wds = wds; wpa_supplicant_event(drv->ctx, EVENT_RX_FROM_UNKNOWN, &event); } @@ -2210,7 +2211,10 @@ static int process_bss_event(struct nl_msg *msg, void *arg) tb[NL80211_ATTR_COOKIE]); break; case NL80211_CMD_UNEXPECTED_FRAME: - nl80211_spurious_class3_frame(bss, tb); + nl80211_spurious_frame(bss, tb, 0); + break; + case NL80211_CMD_UNEXPECTED_4ADDR_FRAME: + nl80211_spurious_frame(bss, tb, 1); break; default: wpa_printf(MSG_DEBUG, "nl80211: Ignored unknown event "