With commit
00c2c20d74ee ("hostapd: Maintain single
wpa_driver_nl80211_data (drv) object across interfaces"), EAPOL frame
reception is always handled by the first bss of wpa_driver_nl80211_data
(drv). Issue is seen when OWE Transition mode is enabled and a peer
connects in OWE BSS (the second BSS) but recieved EAPOL frames are
wrongly handled in the open BSS (the first BSS). Iterate all BSSs to
handle EAPOL frame reception to fix that.
Fixes: 00c2c20d74ee ("hostapd: Maintain single wpa_driver_nl80211_data (drv) object across interfaces")
Signed-off-by: Chenming Huang <quic_chenhuan@quicinc.com>
static void handle_eapol(int sock, void *eloop_ctx, void *sock_ctx)
{
struct wpa_driver_nl80211_data *drv = eloop_ctx;
+ struct i802_bss *bss;
struct sockaddr_ll lladdr;
unsigned char buf[3000];
int len;
return;
}
- if (have_ifidx(drv, lladdr.sll_ifindex, IFIDX_ANY))
- drv_event_eapol_rx(drv->ctx, lladdr.sll_addr, buf, len);
+ if (have_ifidx(drv, lladdr.sll_ifindex, IFIDX_ANY)) {
+ for (bss = drv->first_bss; bss; bss = bss->next)
+ drv_event_eapol_rx(bss->ctx, lladdr.sll_addr, buf, len);
+ }
}