AP/driver: Add link ID to send EAPOL callbacks
EAPOL frames may need to be transmitted from the link address and not MLD address. For example, in case of authentication between AP MLD and legacy STA. Add link_id parameter to EAPOL send APIs. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
This commit is contained in:
parent
c5271faf55
commit
172b0a9a2b
12 changed files with 40 additions and 19 deletions
|
@ -200,13 +200,13 @@ static inline int hostapd_drv_sta_remove(struct hostapd_data *hapd,
|
|||
static inline int hostapd_drv_hapd_send_eapol(struct hostapd_data *hapd,
|
||||
const u8 *addr, const u8 *data,
|
||||
size_t data_len, int encrypt,
|
||||
u32 flags)
|
||||
u32 flags, int link_id)
|
||||
{
|
||||
if (hapd->driver == NULL || hapd->driver->hapd_send_eapol == NULL)
|
||||
return 0;
|
||||
return hapd->driver->hapd_send_eapol(hapd->drv_priv, addr, data,
|
||||
data_len, encrypt,
|
||||
hapd->own_addr, flags);
|
||||
hapd->own_addr, flags, link_id);
|
||||
}
|
||||
|
||||
static inline int hostapd_drv_read_sta_data(
|
||||
|
|
|
@ -95,9 +95,14 @@ static void ieee802_1x_send(struct hostapd_data *hapd, struct sta_info *sta,
|
|||
if (sta->flags & WLAN_STA_PREAUTH) {
|
||||
rsn_preauth_send(hapd, sta, buf, len);
|
||||
} else {
|
||||
int link_id = -1;
|
||||
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
link_id = hapd->conf->mld_ap ? hapd->mld_link_id : -1;
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
hostapd_drv_hapd_send_eapol(
|
||||
hapd, sta->addr, buf, len,
|
||||
encrypt, hostapd_sta_flags_to_drv(sta->flags));
|
||||
encrypt, hostapd_sta_flags_to_drv(sta->flags), link_id);
|
||||
}
|
||||
|
||||
os_free(buf);
|
||||
|
|
|
@ -522,6 +522,11 @@ int hostapd_wpa_auth_send_eapol(void *ctx, const u8 *addr,
|
|||
struct hostapd_data *hapd = ctx;
|
||||
struct sta_info *sta;
|
||||
u32 flags = 0;
|
||||
int link_id = -1;
|
||||
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
link_id = hapd->conf->mld_ap ? hapd->mld_link_id : -1;
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
if (hapd->ext_eapol_frame_io) {
|
||||
|
@ -539,11 +544,16 @@ int hostapd_wpa_auth_send_eapol(void *ctx, const u8 *addr,
|
|||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
|
||||
sta = ap_get_sta(hapd, addr);
|
||||
if (sta)
|
||||
if (sta) {
|
||||
flags = hostapd_sta_flags_to_drv(sta->flags);
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
if (sta->mld_info.mld_sta && (sta->flags & WLAN_STA_AUTHORIZED))
|
||||
link_id = -1;
|
||||
#endif /* CONFIG_IEEE80211BE */
|
||||
}
|
||||
|
||||
return hostapd_drv_hapd_send_eapol(hapd, addr, data, data_len,
|
||||
encrypt, flags);
|
||||
encrypt, flags, link_id);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue