Lines Matching defs:drv

197 static void mlme_event_auth(struct wpa_driver_nl80211_data *drv,
203 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME) &&
204 drv->force_connect_cmd) {
222 os_memcpy(drv->auth_bssid, mgmt->sa, ETH_ALEN);
223 os_memset(drv->auth_attempt_bssid, 0, ETH_ALEN);
235 wpa_supplicant_event(drv->ctx, EVENT_AUTH, &event);
259 static void mlme_event_assoc(struct wpa_driver_nl80211_data *drv,
268 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME) &&
269 drv->force_connect_cmd) {
299 wpa_supplicant_event(drv->ctx, EVENT_ASSOC_REJECT, &event);
303 drv->associated = 1;
304 os_memcpy(drv->bssid, mgmt->sa, ETH_ALEN);
305 os_memcpy(drv->prev_bssid, mgmt->sa, ETH_ALEN);
322 * drv->ssid needs to be set here to satisfy later checking. */
323 ssid_len = nl80211_get_assoc_ssid(drv, drv->ssid);
325 drv->ssid_len = ssid_len;
327 "nl80211: Set drv->ssid based on scan res info to '%s'",
328 wpa_ssid_txt(drv->ssid, drv->ssid_len));
331 event.assoc_info.freq = drv->assoc_freq;
332 drv->first_bss->flink->freq = drv->assoc_freq;
336 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, &event);
375 drv_get_connect_fail_reason_code(struct wpa_driver_nl80211_data *drv)
381 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR);
389 ret = send_and_recv_resp(drv, msg,
426 static void qca_nl80211_link_reconfig_event(struct wpa_driver_nl80211_data *drv,
445 if (!drv->sta_mlo_info.valid_links ||
446 !ether_addr_equal(drv->sta_mlo_info.ap_mld_addr, ap_mld)) {
447 if (drv->pending_link_reconfig_data == data) {
450 os_free(drv->pending_link_reconfig_data);
451 drv->pending_link_reconfig_data = NULL;
457 if (drv->pending_link_reconfig_data) {
459 os_free(drv->pending_link_reconfig_data);
461 drv->pending_link_reconfig_data = os_memdup(data, len);
462 if (!drv->pending_link_reconfig_data)
464 drv->pending_link_reconfig_data_len = len;
473 drv->sta_mlo_info.valid_links &= ~removed_links;
479 if (removed_links & BIT(drv->sta_mlo_info.assoc_link_id)) {
480 for_each_link(drv->sta_mlo_info.valid_links, i) {
481 os_memcpy(drv->bssid, drv->sta_mlo_info.links[i].bssid,
483 drv->sta_mlo_info.assoc_link_id = i;
491 wpa_supplicant_event(drv->ctx, EVENT_LINK_RECONFIG, NULL);
733 static void nl80211_parse_mlo_info(struct wpa_driver_nl80211_data *drv,
741 struct driver_sta_mlo_info *mlo = &drv->sta_mlo_info;
759 drv->sta_mlo_info.assoc_link_id = res;
780 os_memcpy(drv->bssid, mlo->links[drv->sta_mlo_info.assoc_link_id].bssid,
782 os_memcpy(drv->prev_bssid, drv->bssid, ETH_ALEN);
788 qca_nl80211_tid_to_link_map_event(struct wpa_driver_nl80211_data *drv,
808 if (!drv->sta_mlo_info.valid_links ||
809 !ether_addr_equal(drv->sta_mlo_info.ap_mld_addr, ap_mld)) {
810 if (drv->pending_t2lm_data == data) {
813 os_free(drv->pending_t2lm_data);
814 drv->pending_t2lm_data = NULL;
819 if (drv->pending_t2lm_data) {
822 os_free(drv->pending_t2lm_data);
824 drv->pending_t2lm_data = os_memdup(data, len);
825 if (!drv->pending_t2lm_data)
827 drv->pending_t2lm_data_len = len;
872 for_each_link(drv->sta_mlo_info.valid_links, i) {
885 drv->sta_mlo_info.default_map = event.t2l_map_info.default_map;
887 event.t2l_map_info.valid_links = drv->sta_mlo_info.valid_links;
888 for (i = 0; i < MAX_NUM_MLD_LINKS && !drv->sta_mlo_info.default_map;
890 if (!(drv->sta_mlo_info.valid_links & BIT(i)))
893 drv->sta_mlo_info.links[i].t2lmap.uplink =
895 drv->sta_mlo_info.links[i].t2lmap.downlink =
899 wpa_supplicant_event(drv->ctx, EVENT_TID_LINK_MAP, &event);
904 static void mlme_event_connect(struct wpa_driver_nl80211_data *drv,
926 if (drv->capa.flags & WPA_DRIVER_FLAGS_SME) {
936 drv->connect_reassoc = 0;
943 status_code, drv->ignore_next_local_disconnect);
952 if (drv->ignore_next_local_disconnect) {
953 drv->ignore_next_local_disconnect = 0;
956 drv->auth_attempt_bssid)) {
996 if (drv->get_sta_info_vendor_cmd_avail) {
999 reason_code = drv_get_connect_fail_reason_code(drv);
1005 wpa_supplicant_event(drv->ctx, EVENT_ASSOC_REJECT, &event);
1009 drv->associated = 1;
1010 os_memset(&drv->sta_mlo_info, 0, sizeof(drv->sta_mlo_info));
1011 nl80211_parse_mlo_info(drv, qca_roam_auth, addr, mlo_links, req_ie,
1013 if (!drv->sta_mlo_info.valid_links && addr) {
1014 os_memcpy(drv->bssid, nla_data(addr), ETH_ALEN);
1015 os_memcpy(drv->prev_bssid, drv->bssid, ETH_ALEN);
1027 drv->ssid_len = ssid[1];
1028 os_memcpy(drv->ssid, ssid + 2, ssid[1]);
1030 "nl80211: Set drv->ssid based on req_ie to '%s'",
1031 wpa_ssid_txt(drv->ssid,
1032 drv->ssid_len));
1041 event.assoc_info.freq = nl80211_get_assoc_freq(drv);
1042 drv->first_bss->flink->freq = drv->assoc_freq;
1045 (ssid_len = nl80211_get_assoc_ssid(drv, drv->ssid)) > 0) {
1047 * drv->ssid needs to be set here to satisfy later checking. */
1048 drv->ssid_len = ssid_len;
1050 "nl80211: Set drv->ssid based on scan res info to '%s'",
1051 wpa_ssid_txt(drv->ssid, drv->ssid_len));
1094 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, &event);
1101 drv->ignore_next_local_disconnect = 0;
1104 if (drv->pending_t2lm_data)
1105 qca_nl80211_tid_to_link_map_event(drv, drv->pending_t2lm_data,
1106 drv->pending_t2lm_data_len);
1108 drv->sta_mlo_info.default_map = true;
1110 if (drv->pending_link_reconfig_data)
1112 drv, drv->pending_link_reconfig_data,
1113 drv->pending_link_reconfig_data_len);
1118 static void mlme_event_disconnect(struct wpa_driver_nl80211_data *drv,
1125 if (drv->capa.flags & WPA_DRIVER_FLAGS_SME) {
1135 if (drv->ignore_next_local_disconnect) {
1136 drv->ignore_next_local_disconnect = 0;
1148 nl80211_mark_disconnected(drv);
1153 wpa_supplicant_event(drv->ctx, EVENT_DEAUTH, &data);
1193 static void mlme_event_ch_switch(struct wpa_driver_nl80211_data *drv,
1214 bss = get_bss_ifindex(drv, ifidx);
1286 if (link && is_sta_interface(drv->nlmode)) {
1290 drv->sta_mlo_info.valid_links & BIT(link_id)) {
1291 drv->sta_mlo_info.links[link_id].freq =
1299 if (link_id != drv->sta_mlo_info.assoc_link_id)
1303 drv->assoc_freq = data.ch_switch.freq;
1310 static void mlme_timeout_event(struct wpa_driver_nl80211_data *drv,
1331 wpa_supplicant_event(drv->ctx, ev, &event);
1340 struct wpa_driver_nl80211_data *drv = bss->drv;
1363 rx_freq = drv->last_mgmt_freq = event.rx_mgmt.freq;
1379 wpa_supplicant_event(drv->ctx, EVENT_RX_MGMT, &event);
1389 struct wpa_driver_nl80211_data *drv = bss->drv;
1403 if (cookie_val && cookie_val == drv->eapol_tx_cookie &&
1416 if (!is_ap_interface(drv->nlmode) &&
1424 cookie_val == drv->send_frame_cookie ?
1426 if (cookie_val != drv->send_frame_cookie)
1428 } else if (!is_ap_interface(drv->nlmode) &&
1442 event.tx_status.link_id = cookie_val == drv->send_frame_cookie ?
1443 drv->send_frame_link_id : NL80211_DRV_LINK_ID_NA;
1448 static void mlme_event_deauth_disassoc(struct wpa_driver_nl80211_data *drv,
1466 if ((drv->capa.flags & WPA_DRIVER_FLAGS_SME) &&
1467 !drv->associated &&
1468 !ether_addr_equal(bssid, drv->auth_bssid) &&
1469 !ether_addr_equal(bssid, drv->auth_attempt_bssid) &&
1470 ether_addr_equal(bssid, drv->prev_bssid)) {
1479 if (ether_addr_equal(mgmt->sa, drv->first_bss->addr) ||
1480 (!is_zero_ether_addr(drv->first_bss->prev_addr) &&
1482 drv->first_bss->prev_addr))) {
1485 drv->ignore_next_local_deauth = 0;
1490 MAC2STR(drv->auth_attempt_bssid));
1495 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_SME) &&
1496 drv->connect_reassoc && drv->associated &&
1497 ether_addr_equal(bssid, drv->prev_bssid) &&
1498 !ether_addr_equal(bssid, drv->auth_attempt_bssid)) {
1509 MAC2STR(drv->auth_attempt_bssid));
1513 if (drv->associated != 0 &&
1514 !ether_addr_equal(bssid, drv->bssid) &&
1515 !ether_addr_equal(bssid, drv->auth_bssid)) {
1528 nl80211_mark_disconnected(drv);
1537 ether_addr_equal(mgmt->sa, drv->first_bss->addr);
1547 ether_addr_equal(mgmt->sa, drv->first_bss->addr);
1548 if (drv->ignore_deauth_event) {
1550 drv->ignore_deauth_event = 0;
1552 drv->ignore_next_local_deauth = 0;
1555 if (drv->ignore_next_local_deauth) {
1556 drv->ignore_next_local_deauth = 0;
1572 wpa_supplicant_event(drv->ctx, type, &event);
1576 static void mlme_event_unprot_disconnect(struct wpa_driver_nl80211_data *drv,
1609 wpa_supplicant_event(drv->ctx, type, &event);
1613 static void mlme_event_unprot_beacon(struct wpa_driver_nl80211_data *drv,
1626 wpa_supplicant_event(drv->ctx, EVENT_UNPROT_BEACON, &event);
1652 struct wpa_driver_nl80211_data *drv = bss->drv;
1660 mlme_timeout_event(drv, cmd, addr);
1720 (is_zero_ether_addr(drv->first_bss->prev_addr) ||
1733 mlme_event_auth(drv, nla_data(frame), nla_len(frame));
1736 mlme_event_assoc(drv, nla_data(frame), nla_len(frame), wmm,
1740 mlme_event_deauth_disassoc(drv, EVENT_DEAUTH,
1744 mlme_event_deauth_disassoc(drv, EVENT_DISASSOC,
1756 mlme_event_unprot_disconnect(drv, EVENT_UNPROT_DEAUTH,
1760 mlme_event_unprot_disconnect(drv, EVENT_UNPROT_DISASSOC,
1764 mlme_event_unprot_beacon(drv, nla_data(frame), nla_len(frame));
1808 static void mlme_event_join_ibss(struct wpa_driver_nl80211_data *drv,
1819 os_memcpy(drv->bssid, nla_data(tb[NL80211_ATTR_MAC]), ETH_ALEN);
1821 drv->associated = 1;
1823 MAC2STR(drv->bssid));
1825 freq = nl80211_get_assoc_freq(drv);
1829 drv->first_bss->flink->freq = freq;
1835 wpa_supplicant_event(drv->ctx, EVENT_ASSOC, &event);
1839 static void mlme_event_remain_on_channel(struct wpa_driver_nl80211_data *drv,
1870 cookie == drv->remain_on_chan_cookie ? "match" : "unknown");
1872 if (cookie != drv->remain_on_chan_cookie)
1876 drv->pending_remain_on_chan = 0;
1881 wpa_supplicant_event(drv->ctx, cancel_event ?
1887 static void mlme_event_ft_event(struct wpa_driver_nl80211_data *drv,
1911 wpa_supplicant_event(drv->ctx, EVENT_FT_RESPONSE, &data);
1915 static void mlme_event_dh_event(struct wpa_driver_nl80211_data *drv,
1923 if (!is_ap_interface(drv->nlmode))
1968 static void send_scan_event(struct wpa_driver_nl80211_data *drv, int aborted,
1979 if (!external_scan && drv->scan_for_auth) {
1980 drv->scan_for_auth = 0;
1983 wpa_driver_nl80211_authenticate_retry(drv);
2041 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, &event);
2045 static void nl80211_cqm_event(struct wpa_driver_nl80211_data *drv,
2082 wpa_supplicant_event(drv->ctx, EVENT_STATION_LOW_ACK, &ed);
2088 wpa_supplicant_event(drv->ctx, EVENT_BEACON_LOSS, NULL);
2131 res = nl80211_get_link_signal(drv, drv->bssid, &ed.signal_change.data);
2141 res = nl80211_get_link_noise(drv, &ed.signal_change);
2150 wpa_supplicant_event(drv->ctx, EVENT_SIGNAL_CHANGE, &ed);
2154 static void nl80211_new_peer_candidate(struct wpa_driver_nl80211_data *drv,
2160 if (drv->nlmode != NL80211_IFTYPE_MESH_POINT ||
2172 wpa_supplicant_event(drv->ctx, EVENT_NEW_PEER_CANDIDATE, &data);
2176 static void nl80211_new_station_event(struct wpa_driver_nl80211_data *drv,
2189 if (is_ap_interface(drv->nlmode) && drv->device_ap_sme) {
2237 if (drv->nlmode != NL80211_IFTYPE_ADHOC)
2246 static void nl80211_del_station_event(struct wpa_driver_nl80211_data *drv,
2259 if (is_ap_interface(drv->nlmode) && drv->device_ap_sme) {
2264 if (drv->nlmode != NL80211_IFTYPE_ADHOC)
2273 static void nl80211_rekey_offload_event(struct wpa_driver_nl80211_data *drv,
2308 wpa_supplicant_event(drv->ctx, EVENT_DRIVER_GTK_REKEY, &data);
2312 static void nl80211_pmksa_candidate_event(struct wpa_driver_nl80211_data *drv,
2342 wpa_supplicant_event(drv->ctx, EVENT_PMKID_CANDIDATE, &data);
2346 static void nl80211_client_probe_event(struct wpa_driver_nl80211_data *drv,
2367 wpa_supplicant_event(drv->ctx, EVENT_DRIVER_CLIENT_POLL_OK, &data);
2371 static void nl80211_tdls_oper_event(struct wpa_driver_nl80211_data *drv,
2410 wpa_supplicant_event(drv->ctx, EVENT_TDLS, &data);
2414 static void nl80211_stop_ap(struct wpa_driver_nl80211_data *drv,
2417 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_UNAVAILABLE, NULL);
2421 static void nl80211_connect_failed_event(struct wpa_driver_nl80211_data *drv,
2454 wpa_supplicant_event(drv->ctx, EVENT_CONNECT_FAILED_REASON, &data);
2458 static void nl80211_radar_event(struct wpa_driver_nl80211_data *drv,
2477 nl80211_get_link_id_by_freq(drv->first_bss,
2520 wpa_supplicant_event(drv->ctx, EVENT_DFS_RADAR_DETECTED, &data);
2523 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_FINISHED, &data);
2526 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_ABORTED, &data);
2529 wpa_supplicant_event(drv->ctx, EVENT_DFS_NOP_FINISHED, &data);
2532 wpa_supplicant_event(drv->ctx, EVENT_DFS_PRE_CAC_EXPIRED,
2536 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_STARTED, &data);
2549 struct wpa_driver_nl80211_data *drv = bss->drv;
2560 wpa_supplicant_event(drv->ctx, EVENT_RX_FROM_UNKNOWN, &event);
2566 static void qca_nl80211_avoid_freq(struct wpa_driver_nl80211_data *drv,
2607 wpa_supplicant_event(drv->ctx, EVENT_AVOID_FREQUENCIES, &event);
2632 static unsigned int chan_to_freq(struct wpa_driver_nl80211_data *drv,
2642 modes = nl80211_get_hw_feature_data(drv->first_bss, &num_modes,
2678 static void qca_nl80211_acs_select_ch(struct wpa_driver_nl80211_data *drv,
2719 chan_to_freq(drv, chan,
2730 chan_to_freq(drv, chan,
2769 wpa_supplicant_event(drv->ctx, EVENT_ACS_CHANNEL_SELECTED, &event);
2773 static void qca_nl80211_key_mgmt_auth(struct wpa_driver_nl80211_data *drv,
2794 mlme_event_connect(drv, NL80211_CMD_ROAM, true, NULL,
2812 drv, OUI_QCA, QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_ROAM_AUTH,
2820 qca_nl80211_key_mgmt_auth_handler(struct wpa_driver_nl80211_data *drv,
2823 if (!drv->roam_indication_done) {
2827 os_free(drv->pending_roam_data);
2828 drv->pending_roam_data = os_memdup(data, len);
2829 if (!drv->pending_roam_data)
2831 drv->pending_roam_data_len = len;
2834 drv->roam_indication_done = false;
2835 qca_nl80211_key_mgmt_auth(drv, data, len);
2840 struct wpa_driver_nl80211_data *drv, u32 subcmd, u8 *msg, int length)
2867 nl80211_get_link_id_by_freq(drv->first_bss,
2912 wpa_supplicant_event(drv->ctx, EVENT_DFS_RADAR_DETECTED, &data);
2915 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_STARTED, &data);
2918 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_FINISHED, &data);
2921 wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_ABORTED, &data);
2924 wpa_supplicant_event(drv->ctx, EVENT_DFS_NOP_FINISHED, &data);
2935 static void qca_nl80211_scan_trigger_event(struct wpa_driver_nl80211_data *drv,
2949 if (cookie != drv->vendor_scan_cookie) {
2960 drv->scan_state = SCAN_STARTED;
2961 wpa_supplicant_event(drv->ctx, EVENT_SCAN_STARTED, &event);
2965 static void send_vendor_scan_event(struct wpa_driver_nl80211_data *drv,
3024 wpa_supplicant_event(drv->ctx, EVENT_SCAN_RESULTS, &event);
3028 static void qca_nl80211_scan_done_event(struct wpa_driver_nl80211_data *drv,
3047 if (cookie != drv->vendor_scan_cookie) {
3053 drv->scan_state = SCAN_COMPLETED;
3055 drv->scan_state = SCAN_ABORTED;
3057 eloop_cancel_timeout(wpa_driver_nl80211_scan_timeout, drv,
3058 drv->ctx);
3059 drv->vendor_scan_cookie = 0;
3060 drv->last_scan_cmd = 0;
3063 send_vendor_scan_event(drv, (status == VENDOR_SCAN_STATUS_ABORTED), tb,
3068 static void qca_nl80211_p2p_lo_stop_event(struct wpa_driver_nl80211_data *drv,
3089 wpa_supplicant_event(drv->ctx, EVENT_P2P_LO_STOP, &event);
3095 static void qca_nl80211_pasn_auth(struct wpa_driver_nl80211_data *drv,
3163 wpa_supplicant_event(drv->ctx, EVENT_PASN_AUTH, &event);
3171 static void nl80211_vendor_event_qca(struct wpa_driver_nl80211_data *drv,
3180 qca_nl80211_avoid_freq(drv, data, len);
3183 qca_nl80211_key_mgmt_auth_handler(drv, data, len);
3186 qca_nl80211_acs_select_ch(drv, data, len);
3193 qca_nl80211_dfs_offload_radar_event(drv, subcmd, data, len);
3196 qca_nl80211_scan_trigger_event(drv, data, len);
3199 qca_nl80211_scan_done_event(drv, data, len);
3202 qca_nl80211_p2p_lo_stop_event(drv, data, len);
3206 qca_nl80211_pasn_auth(drv, data, len);
3210 qca_nl80211_tid_to_link_map_event(drv, data, len);
3213 qca_nl80211_link_reconfig_event(drv, data, len);
3227 static void brcm_nl80211_acs_select_ch(struct wpa_driver_nl80211_data *drv,
3278 wpa_supplicant_event(drv->ctx, EVENT_ACS_CHANNEL_SELECTED, &event);
3282 static void nl80211_vendor_event_brcm(struct wpa_driver_nl80211_data *drv,
3293 brcm_nl80211_acs_select_ch(drv, data, len);
3306 static void nl80211_vendor_event(struct wpa_driver_nl80211_data *drv,
3333 wiphy_idx = nl80211_get_wiphy_index(drv->first_bss);
3344 * qca_nl80211_key_mgmt_auth() and drv->pending_roam_data). */
3347 wpa_driver_nl80211_driver_event(drv, vendor_id, subcmd, data,
3354 nl80211_vendor_event_qca(drv, subcmd, data, len);
3358 nl80211_vendor_event_brcm(drv, subcmd, data, len);
3368 static void nl80211_reg_change_event(struct wpa_driver_nl80211_data *drv,
3427 wpa_supplicant_event(drv->ctx, EVENT_CHANNEL_LIST_CHANGED, &data);
3471 static void nl80211_reg_beacon_hint_event(struct wpa_driver_nl80211_data *drv,
3489 wpa_supplicant_event(drv->ctx, EVENT_CHANNEL_LIST_CHANGED, &data);
3493 static void nl80211_external_auth(struct wpa_driver_nl80211_data *drv,
3544 wpa_supplicant_event(drv->ctx, EVENT_EXTERNAL_AUTH, &event);
3548 static void nl80211_port_authorized(struct wpa_driver_nl80211_data *drv,
3564 if (is_ap_interface(drv->nlmode) && drv->device_ap_sme) {
3569 } else if (is_sta_interface(drv->nlmode)) {
3572 connected_addr = drv->sta_mlo_info.valid_links ?
3573 drv->sta_mlo_info.ap_mld_addr : drv->bssid;
3592 wpa_supplicant_event(drv->ctx, EVENT_PORT_AUTHORIZED, &event);
3596 static void nl80211_sta_opmode_change_event(struct wpa_driver_nl80211_data *drv,
3665 wpa_supplicant_event(drv->ctx, EVENT_STATION_OPMODE_CHANGED, &ed);
3718 struct wpa_driver_nl80211_data *drv = bss->drv;
3734 nla_get_u64(cookie) == drv->eapol_tx_cookie ?
3735 drv->eapol_tx_link_id : NL80211_DRV_LINK_ID_NA;
3741 static void nl80211_frame_wait_cancel(struct wpa_driver_nl80211_data *drv,
3752 for (i = 0; i < drv->num_send_frame_cookies; i++) {
3753 if (cookie == drv->send_frame_cookies[i]) {
3762 drv->send_frame_cookie == cookie ? " (match-saved)" : "");
3763 if (drv->send_frame_cookie == cookie) {
3764 drv->send_frame_cookie = (u64) -1;
3771 if (i < drv->num_send_frame_cookies - 1)
3772 os_memmove(&drv->send_frame_cookies[i],
3773 &drv->send_frame_cookies[i + 1],
3774 (drv->num_send_frame_cookies - i - 1) * sizeof(u64));
3775 drv->num_send_frame_cookies--;
3778 wpa_supplicant_event(drv->ctx, EVENT_TX_WAIT_EXPIRE, NULL);
3782 static void nl80211_assoc_comeback(struct wpa_driver_nl80211_data *drv,
3859 struct wpa_driver_nl80211_data *drv = bss->drv;
3868 (drv->capa.flags & WPA_DRIVER_FLAGS_KEY_MGMT_OFFLOAD)) {
3869 if (drv->pending_roam_data) {
3872 qca_nl80211_key_mgmt_auth(drv, drv->pending_roam_data,
3873 drv->pending_roam_data_len);
3874 os_free(drv->pending_roam_data);
3875 drv->pending_roam_data = NULL;
3882 drv->roam_indication_done = true;
3890 if (drv->ap_scan_as_station != NL80211_IFTYPE_UNSPECIFIED &&
3897 wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Scan trigger");
3898 drv->scan_state = SCAN_STARTED;
3899 if (drv->scan_for_auth) {
3909 wpa_supplicant_event(drv->ctx, EVENT_SCAN_STARTED, NULL);
3912 wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Sched scan started");
3913 drv->scan_state = SCHED_SCAN_STARTED;
3916 wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Sched scan stopped");
3917 drv->scan_state = SCHED_SCAN_STOPPED;
3918 wpa_supplicant_event(drv->ctx, EVENT_SCHED_SCAN_STOPPED, NULL);
3921 wpa_dbg(drv->ctx, MSG_DEBUG,
3923 if (drv->last_scan_cmd != NL80211_CMD_VENDOR)
3924 drv->scan_state = SCAN_COMPLETED;
3925 drv->scan_complete_events = 1;
3926 if (drv->last_scan_cmd == NL80211_CMD_TRIGGER_SCAN) {
3928 drv, drv->ctx);
3929 drv->last_scan_cmd = 0;
3933 send_scan_event(drv, 0, tb, external_scan_event);
3936 wpa_dbg(drv->ctx, MSG_DEBUG,
3938 drv->scan_state = SCHED_SCAN_RESULTS;
3939 send_scan_event(drv, 0, tb, 0);
3942 wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Scan aborted");
3943 if (drv->last_scan_cmd != NL80211_CMD_VENDOR)
3944 drv->scan_state = SCAN_ABORTED;
3945 if (drv->last_scan_cmd == NL80211_CMD_TRIGGER_SCAN) {
3951 drv, drv->ctx);
3952 drv->last_scan_cmd = 0;
3956 send_scan_event(drv, 1, tb, external_scan_event);
3977 mlme_event_connect(drv, cmd, false,
3993 mlme_event_ch_switch(drv,
4005 mlme_event_ch_switch(drv,
4017 mlme_event_disconnect(drv, tb[NL80211_ATTR_REASON_CODE],
4025 mlme_event_join_ibss(drv, tb);
4028 mlme_event_remain_on_channel(drv, 0, tb);
4031 mlme_event_remain_on_channel(drv, 1, tb);
4034 nl80211_cqm_event(drv, tb);
4038 nl80211_reg_change_event(drv, tb);
4041 nl80211_reg_beacon_hint_event(drv, tb);
4044 nl80211_new_station_event(drv, bss, tb);
4047 nl80211_del_station_event(drv, bss, tb);
4050 nl80211_rekey_offload_event(drv, tb);
4053 nl80211_pmksa_candidate_event(drv, tb);
4056 nl80211_client_probe_event(drv, tb);
4059 nl80211_tdls_oper_event(drv, tb);
4062 nl80211_connect_failed_event(drv, tb);
4065 mlme_event_ft_event(drv, tb);
4068 nl80211_radar_event(drv, tb);
4071 nl80211_stop_ap(drv, tb);
4074 nl80211_vendor_event(drv, tb);
4077 nl80211_new_peer_candidate(drv, tb);
4080 nl80211_port_authorized(drv, tb);
4083 nl80211_sta_opmode_change_event(drv, tb);
4086 mlme_event_dh_event(drv, bss, tb);
4090 mlme_event_unprot_beacon(drv, nla_data(frame),
4103 nl80211_frame_wait_cancel(drv, tb[NL80211_ATTR_COOKIE]);
4106 nl80211_assoc_comeback(drv, tb[NL80211_ATTR_MAC],
4118 wpa_supplicant_event(drv->ctx, EVENT_LINK_RECONFIG, NULL);
4121 wpa_dbg(drv->ctx, MSG_DEBUG, "nl80211: Ignored unknown event "
4129 struct wpa_driver_nl80211_data *drv)
4135 if (drv == tmp)
4148 struct wpa_driver_nl80211_data *drv, *tmp;
4160 dl_list_for_each_safe(drv, tmp, &global->interfaces,
4162 if (drv->ignore_next_local_deauth > 0 &&
4163 drv->ignore_next_local_deauth <= seq) {
4166 drv->ignore_next_local_deauth = 0;
4169 if (drv->ignore_next_local_disconnect > 0 &&
4170 drv->ignore_next_local_disconnect <= seq) {
4173 drv->ignore_next_local_disconnect = 0;
4193 dl_list_for_each_safe(drv, tmp, &global->interfaces,
4195 for (bss = drv->first_bss; bss; bss = bss->next) {
4211 if (!nl80211_drv_in_list(global, drv))
4260 nl80211_external_auth(bss->drv, tb);