}
break;
case EVENT_EAPOL_TX_STATUS:
+ hapd = switch_link_hapd(hapd, data->eapol_tx_status.link_id);
hostapd_eapol_tx_status(hapd, data->eapol_tx_status.dst,
data->eapol_tx_status.data,
data->eapol_tx_status.data_len,
* @data: Data starting with IEEE 802.1X header (!)
* @data_len: Length of data
* @ack: Indicates ack or lost frame
+ * @link_id: MLD link id used to transmit the frame or -1 for non MLO
*
* This corresponds to hapd_send_eapol if the frame sent
* there isn't just reported as EVENT_TX_STATUS.
const u8 *data;
int data_len;
int ack;
+ int link_id;
} eapol_tx_status;
/**
"nl80211: tx_control_port cookie=0x%llx",
(long long unsigned int) cookie);
drv->eapol_tx_cookie = cookie;
+ drv->eapol_tx_link_id = link_id;
}
return ret;
u64 send_frame_cookies[MAX_SEND_FRAME_COOKIES];
unsigned int num_send_frame_cookies;
u64 eapol_tx_cookie;
+ int eapol_tx_link_id;
unsigned int last_mgmt_freq;
event.eapol_tx_status.data = frame + ETH_HLEN;
event.eapol_tx_status.data_len = len - ETH_HLEN;
event.eapol_tx_status.ack = ack != NULL;
+ event.eapol_tx_status.link_id =
+ nla_get_u64(cookie) == drv->eapol_tx_cookie ?
+ drv->eapol_tx_link_id : NL80211_DRV_LINK_ID_NA;
+
wpa_supplicant_event(drv->ctx, EVENT_EAPOL_TX_STATUS, &event);
}