• Home
  • Raw
  • Download

Lines Matching refs:sm

85 static void wpa_tdls_peer_free(struct wpa_sm *sm, struct wpa_tdls_peer *peer);
86 static void wpa_tdls_disable_peer_link(struct wpa_sm *sm,
88 static int wpa_tdls_send_teardown(struct wpa_sm *sm, const u8 *addr,
158 static int wpa_tdls_get_privacy(struct wpa_sm *sm) in wpa_tdls_get_privacy() argument
165 return sm->pairwise_cipher != WPA_CIPHER_NONE; in wpa_tdls_get_privacy()
176 static int wpa_tdls_del_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) in wpa_tdls_del_key() argument
178 if (wpa_sm_set_key(sm, WPA_ALG_NONE, peer->addr, in wpa_tdls_del_key()
189 static int wpa_tdls_set_key(struct wpa_sm *sm, struct wpa_tdls_peer *peer) in wpa_tdls_set_key() argument
208 sm->pairwise_cipher); in wpa_tdls_set_key()
212 if (wpa_sm_set_key(sm, alg, peer->addr, -1, 1, in wpa_tdls_set_key()
222 static int wpa_tdls_send_tpk_msg(struct wpa_sm *sm, const u8 *dst, in wpa_tdls_send_tpk_msg() argument
227 return wpa_sm_send_tdls_mgmt(sm, dst, action_code, dialog_token, in wpa_tdls_send_tpk_msg()
233 static int wpa_tdls_tpk_send(struct wpa_sm *sm, const u8 *dest, u8 action_code, in wpa_tdls_tpk_send() argument
245 if (wpa_tdls_send_tpk_msg(sm, dest, action_code, dialog_token, in wpa_tdls_tpk_send()
259 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_tpk_send()
270 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_send()
297 wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_send()
302 static int wpa_tdls_do_teardown(struct wpa_sm *sm, struct wpa_tdls_peer *peer, in wpa_tdls_do_teardown() argument
307 ret = wpa_tdls_send_teardown(sm, peer->addr, reason_code); in wpa_tdls_do_teardown()
309 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_do_teardown()
318 struct wpa_sm *sm = eloop_ctx; in wpa_tdls_tpk_retry_timeout() local
332 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, in wpa_tdls_tpk_retry_timeout()
338 if (wpa_tdls_send_tpk_msg(sm, peer->sm_tmr.dest, in wpa_tdls_tpk_retry_timeout()
350 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_retry_timeout()
353 wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_retry_timeout()
355 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_retry_timeout()
358 wpa_tdls_do_teardown(sm, peer, in wpa_tdls_tpk_retry_timeout()
364 static void wpa_tdls_tpk_retry_timeout_cancel(struct wpa_sm *sm, in wpa_tdls_tpk_retry_timeout_cancel() argument
373 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_tpk_retry_timeout_cancel()
618 struct wpa_sm *sm = eloop_ctx; in wpa_tdls_tpk_timeout() local
636 wpa_tdls_do_teardown(sm, peer, in wpa_tdls_tpk_timeout()
638 wpa_tdls_start(sm, addr); in wpa_tdls_tpk_timeout()
642 wpa_tdls_do_teardown(sm, peer, in wpa_tdls_tpk_timeout()
648 static void wpa_tdls_peer_remove_from_list(struct wpa_sm *sm, in wpa_tdls_peer_remove_from_list() argument
653 cur = sm->tdls; in wpa_tdls_peer_remove_from_list()
670 sm->tdls = peer->next; in wpa_tdls_peer_remove_from_list()
674 static void wpa_tdls_peer_clear(struct wpa_sm *sm, struct wpa_tdls_peer *peer) in wpa_tdls_peer_clear() argument
678 eloop_cancel_timeout(wpa_tdls_tpk_timeout, sm, peer); in wpa_tdls_peer_clear()
679 eloop_cancel_timeout(wpa_tdls_tpk_retry_timeout, sm, peer); in wpa_tdls_peer_clear()
707 static void wpa_tdls_peer_free(struct wpa_sm *sm, struct wpa_tdls_peer *peer) in wpa_tdls_peer_free() argument
709 wpa_tdls_peer_clear(sm, peer); in wpa_tdls_peer_free()
710 wpa_tdls_peer_remove_from_list(sm, peer); in wpa_tdls_peer_free()
715 static void wpa_tdls_linkid(struct wpa_sm *sm, struct wpa_tdls_peer *peer, in wpa_tdls_linkid() argument
720 os_memcpy(lnkid->bssid, sm->bssid, ETH_ALEN); in wpa_tdls_linkid()
722 os_memcpy(lnkid->init_sta, sm->own_addr, ETH_ALEN); in wpa_tdls_linkid()
726 os_memcpy(lnkid->resp_sta, sm->own_addr, ETH_ALEN); in wpa_tdls_linkid()
731 static int wpa_tdls_send_teardown(struct wpa_sm *sm, const u8 *addr, in wpa_tdls_send_teardown() argument
741 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_send_teardown()
745 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_send_teardown()
760 wpa_sm_tdls_disable_channel_switch(sm, peer->addr); in wpa_tdls_send_teardown()
769 if (wpa_tdls_get_privacy(sm) && peer->tpk_set && peer->tpk_success) { in wpa_tdls_send_teardown()
783 if (!wpa_tdls_get_privacy(sm) || !peer->tpk_set || !peer->tpk_success) in wpa_tdls_send_teardown()
807 wpa_tdls_linkid(sm, peer, &lnkid); in wpa_tdls_send_teardown()
817 wpa_tdls_tpk_send(sm, addr, WLAN_TDLS_TEARDOWN, 0, in wpa_tdls_send_teardown()
825 int wpa_tdls_teardown_link(struct wpa_sm *sm, const u8 *addr, u16 reason_code) in wpa_tdls_teardown_link() argument
829 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_teardown_link()
832 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_teardown_link()
849 return wpa_tdls_do_teardown(sm, peer, reason_code); in wpa_tdls_teardown_link()
853 static void wpa_tdls_disable_peer_link(struct wpa_sm *sm, in wpa_tdls_disable_peer_link() argument
856 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr); in wpa_tdls_disable_peer_link()
857 wpa_tdls_peer_free(sm, peer); in wpa_tdls_disable_peer_link()
861 void wpa_tdls_disable_unreachable_link(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_disable_unreachable_link() argument
865 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_disable_unreachable_link()
877 if (wpa_tdls_is_external_setup(sm)) { in wpa_tdls_disable_unreachable_link()
883 wpa_sm_tdls_disable_channel_switch(sm, peer->addr); in wpa_tdls_disable_unreachable_link()
884 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, addr); in wpa_tdls_disable_unreachable_link()
885 wpa_tdls_send_teardown(sm, addr, in wpa_tdls_disable_unreachable_link()
887 wpa_tdls_peer_free(sm, peer); in wpa_tdls_disable_unreachable_link()
889 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_disable_unreachable_link()
894 const char * wpa_tdls_get_link_status(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_get_link_status() argument
898 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_get_link_status()
901 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_get_link_status()
916 static int wpa_tdls_recv_teardown(struct wpa_sm *sm, const u8 *src_addr, in wpa_tdls_recv_teardown() argument
928 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_recv_teardown()
966 if (!wpa_tdls_get_privacy(sm) || !peer->tpk_set || !peer->tpk_success) in wpa_tdls_recv_teardown()
990 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_recv_teardown()
1004 static int wpa_tdls_send_error(struct wpa_sm *sm, const u8 *dst, in wpa_tdls_send_error() argument
1011 return wpa_tdls_tpk_send(sm, dst, tdls_action, dialog_token, status, in wpa_tdls_send_error()
1017 wpa_tdls_add_peer(struct wpa_sm *sm, const u8 *addr, int *existing) in wpa_tdls_add_peer() argument
1023 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_add_peer()
1039 peer->next = sm->tdls; in wpa_tdls_add_peer()
1040 sm->tdls = peer; in wpa_tdls_add_peer()
1046 static int wpa_tdls_send_tpk_m1(struct wpa_sm *sm, in wpa_tdls_send_tpk_m1() argument
1058 if (!wpa_tdls_get_privacy(sm)) { in wpa_tdls_send_tpk_m1()
1128 if (wpa_tdls_get_privacy(sm)) in wpa_tdls_send_tpk_m1()
1132 if (wpa_tdls_get_privacy(sm) && in wpa_tdls_send_tpk_m1()
1140 wpa_tdls_peer_free(sm, peer); in wpa_tdls_send_tpk_m1()
1145 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_send_tpk_m1()
1156 wpa_msg(sm->ctx->msg_ctx, MSG_WARNING, in wpa_tdls_send_tpk_m1()
1159 wpa_tdls_peer_free(sm, peer); in wpa_tdls_send_tpk_m1()
1207 wpa_tdls_linkid(sm, peer, l); in wpa_tdls_send_tpk_m1()
1217 status = wpa_tdls_tpk_send(sm, peer->addr, WLAN_TDLS_SETUP_REQUEST, in wpa_tdls_send_tpk_m1()
1225 static int wpa_tdls_send_tpk_m2(struct wpa_sm *sm, in wpa_tdls_send_tpk_m2() argument
1238 if (wpa_tdls_get_privacy(sm)) { in wpa_tdls_send_tpk_m2()
1254 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_send_tpk_m2()
1307 status = wpa_tdls_tpk_send(sm, src_addr, WLAN_TDLS_SETUP_RESPONSE, in wpa_tdls_send_tpk_m2()
1316 static int wpa_tdls_send_tpk_m3(struct wpa_sm *sm, in wpa_tdls_send_tpk_m3() argument
1330 if (wpa_tdls_get_privacy(sm)) { in wpa_tdls_send_tpk_m3()
1346 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_send_tpk_m3()
1405 status = wpa_tdls_tpk_send(sm, src_addr, WLAN_TDLS_SETUP_CONFIRM, in wpa_tdls_send_tpk_m3()
1414 static int wpa_tdls_send_discovery_response(struct wpa_sm *sm, in wpa_tdls_send_discovery_response() argument
1428 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_send_discovery_response()
1470 if (wpa_tdls_get_privacy(sm)) { in wpa_tdls_send_discovery_response()
1477 wpa_tdls_peer_free(sm, peer); in wpa_tdls_send_discovery_response()
1482 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_send_discovery_response()
1492 status = wpa_tdls_tpk_send(sm, peer->addr, WLAN_TDLS_DISCOVERY_RESPONSE, in wpa_tdls_send_discovery_response()
1501 wpa_tdls_process_discovery_request(struct wpa_sm *sm, const u8 *addr, in wpa_tdls_process_discovery_request() argument
1542 if (os_memcmp(sm->bssid, lnkid->bssid, ETH_ALEN) != 0) { in wpa_tdls_process_discovery_request()
1548 peer = wpa_tdls_add_peer(sm, addr, NULL); in wpa_tdls_process_discovery_request()
1552 return wpa_tdls_send_discovery_response(sm, peer, dialog_token); in wpa_tdls_process_discovery_request()
1556 int wpa_tdls_send_discovery_request(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_send_discovery_request() argument
1558 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_send_discovery_request()
1563 return wpa_tdls_tpk_send(sm, addr, WLAN_TDLS_DISCOVERY_REQUEST, in wpa_tdls_send_discovery_request()
1737 static int wpa_tdls_addset_peer(struct wpa_sm *sm, struct wpa_tdls_peer *peer, in wpa_tdls_addset_peer() argument
1740 return wpa_sm_tdls_peer_addset(sm, peer->addr, add, peer->aid, in wpa_tdls_addset_peer()
1754 static int wpa_tdls_process_tpk_m1(struct wpa_sm *sm, const u8 *src_addr, in wpa_tdls_process_tpk_m1() argument
1775 int tdls_prohibited = sm->tdls_prohibited; in wpa_tdls_process_tpk_m1()
1789 peer = wpa_tdls_add_peer(sm, src_addr, &existing_peer); in wpa_tdls_process_tpk_m1()
1801 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr); in wpa_tdls_process_tpk_m1()
1802 wpa_tdls_peer_clear(sm, peer); in wpa_tdls_process_tpk_m1()
1811 if (os_memcmp(sm->own_addr, src_addr, ETH_ALEN) < 0) { in wpa_tdls_process_tpk_m1()
1822 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, in wpa_tdls_process_tpk_m1()
1824 wpa_tdls_peer_clear(sm, peer); in wpa_tdls_process_tpk_m1()
1852 if (os_memcmp(sm->bssid, lnkid->bssid, ETH_ALEN) != 0) { in wpa_tdls_process_tpk_m1()
1889 peer = wpa_tdls_add_peer(sm, src_addr, NULL); in wpa_tdls_process_tpk_m1()
1895 wpa_sm_tdls_peer_addset(sm, peer->addr, 1, 0, 0, NULL, 0, NULL, in wpa_tdls_process_tpk_m1()
1897 wpa_tdls_send_tpk_m1(sm, peer); in wpa_tdls_process_tpk_m1()
1914 if (!wpa_tdls_get_privacy(sm)) { in wpa_tdls_process_tpk_m1()
1981 if (os_memcmp(sm->own_addr, peer->addr, ETH_ALEN) < 0) { in wpa_tdls_process_tpk_m1()
1995 if (!wpa_tdls_get_privacy(sm)) { in wpa_tdls_process_tpk_m1()
2019 wpa_msg(sm->ctx->ctx, MSG_WARNING, in wpa_tdls_process_tpk_m1()
2072 wpa_tdls_generate_tpk(peer, sm->own_addr, sm->bssid); in wpa_tdls_process_tpk_m1()
2081 if (wpa_tdls_addset_peer(sm, peer, 1) < 0) in wpa_tdls_process_tpk_m1()
2090 if (wpa_tdls_send_tpk_m2(sm, src_addr, dtoken, lnkid, peer) < 0) { in wpa_tdls_process_tpk_m1()
2091 wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr); in wpa_tdls_process_tpk_m1()
2098 wpa_tdls_send_error(sm, src_addr, WLAN_TDLS_SETUP_RESPONSE, dtoken, 0, in wpa_tdls_process_tpk_m1()
2101 wpa_tdls_peer_free(sm, peer); in wpa_tdls_process_tpk_m1()
2106 static int wpa_tdls_enable_link(struct wpa_sm *sm, struct wpa_tdls_peer *peer) in wpa_tdls_enable_link() argument
2110 eloop_cancel_timeout(wpa_tdls_tpk_timeout, sm, peer); in wpa_tdls_enable_link()
2111 if (wpa_tdls_get_privacy(sm)) { in wpa_tdls_enable_link()
2120 sm, peer); in wpa_tdls_enable_link()
2125 eloop_cancel_timeout(wpa_tdls_tpk_timeout, sm, peer); in wpa_tdls_enable_link()
2130 if (peer->reconfig_key && wpa_tdls_set_key(sm, peer) < 0) { in wpa_tdls_enable_link()
2137 return wpa_sm_tdls_oper(sm, TDLS_ENABLE_LINK, peer->addr); in wpa_tdls_enable_link()
2141 static int wpa_tdls_process_tpk_m2(struct wpa_sm *sm, const u8 *src_addr, in wpa_tdls_process_tpk_m2() argument
2160 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_process_tpk_m2()
2187 wpa_tdls_tpk_retry_timeout_cancel(sm, peer, WLAN_TDLS_SETUP_REQUEST); in wpa_tdls_process_tpk_m2()
2190 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_process_tpk_m2()
2202 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_process_tpk_m2()
2214 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_process_tpk_m2()
2250 if (os_memcmp(sm->bssid, lnkid->bssid, ETH_ALEN) != 0) { in wpa_tdls_process_tpk_m2()
2282 if (!wpa_tdls_get_privacy(sm)) { in wpa_tdls_process_tpk_m2()
2372 wpa_tdls_generate_tpk(peer, sm->own_addr, sm->bssid); in wpa_tdls_process_tpk_m2()
2378 wpa_tdls_del_key(sm, peer); in wpa_tdls_process_tpk_m2()
2379 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_process_tpk_m2()
2383 if (wpa_tdls_set_key(sm, peer) < 0) { in wpa_tdls_process_tpk_m2()
2397 if (wpa_tdls_addset_peer(sm, peer, 0) < 0) in wpa_tdls_process_tpk_m2()
2402 if (wpa_tdls_send_tpk_m3(sm, src_addr, dtoken, lnkid, peer) < 0) in wpa_tdls_process_tpk_m2()
2411 ret = wpa_tdls_enable_link(sm, peer); in wpa_tdls_process_tpk_m2()
2415 sm, peer, in wpa_tdls_process_tpk_m2()
2422 wpa_tdls_send_error(sm, src_addr, WLAN_TDLS_SETUP_CONFIRM, dtoken, 1, in wpa_tdls_process_tpk_m2()
2425 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_process_tpk_m2()
2430 static int wpa_tdls_process_tpk_m3(struct wpa_sm *sm, const u8 *src_addr, in wpa_tdls_process_tpk_m3() argument
2446 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_process_tpk_m3()
2455 wpa_tdls_tpk_retry_timeout_cancel(sm, peer, WLAN_TDLS_SETUP_RESPONSE); in wpa_tdls_process_tpk_m3()
2492 if (os_memcmp(sm->bssid, lnkid->bssid, ETH_ALEN) != 0) { in wpa_tdls_process_tpk_m3()
2497 if (!wpa_tdls_get_privacy(sm)) in wpa_tdls_process_tpk_m3()
2551 wpa_tdls_del_key(sm, peer); in wpa_tdls_process_tpk_m3()
2555 if (wpa_tdls_set_key(sm, peer) < 0) { in wpa_tdls_process_tpk_m3()
2567 if (wpa_tdls_addset_peer(sm, peer, 0) < 0) in wpa_tdls_process_tpk_m3()
2576 ret = wpa_tdls_enable_link(sm, peer); in wpa_tdls_process_tpk_m3()
2584 wpa_tdls_do_teardown(sm, peer, WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED); in wpa_tdls_process_tpk_m3()
2612 int wpa_tdls_start(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_start() argument
2615 int tdls_prohibited = sm->tdls_prohibited; in wpa_tdls_start()
2617 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_start()
2635 peer = wpa_tdls_add_peer(sm, addr, NULL); in wpa_tdls_start()
2647 if (wpa_sm_tdls_peer_addset(sm, peer->addr, 1, 0, 0, NULL, 0, NULL, in wpa_tdls_start()
2649 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_start()
2655 if (wpa_tdls_send_tpk_m1(sm, peer) < 0) { in wpa_tdls_start()
2656 wpa_tdls_disable_peer_link(sm, peer); in wpa_tdls_start()
2664 void wpa_tdls_remove(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_remove() argument
2668 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_remove()
2671 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_remove()
2679 if (sm->tdls_external_setup) { in wpa_tdls_remove()
2684 wpa_tdls_do_teardown(sm, peer, in wpa_tdls_remove()
2698 struct wpa_sm *sm = ctx; in wpa_supplicant_rx_tdls() local
2704 if (sm->tdls_disabled || !sm->tdls_supported) { in wpa_supplicant_rx_tdls()
2710 if (os_memcmp(src_addr, sm->own_addr, ETH_ALEN) == 0) { in wpa_supplicant_rx_tdls()
2732 wpa_tdls_process_tpk_m1(sm, src_addr, buf, len); in wpa_supplicant_rx_tdls()
2735 wpa_tdls_process_tpk_m2(sm, src_addr, buf, len); in wpa_supplicant_rx_tdls()
2738 wpa_tdls_process_tpk_m3(sm, src_addr, buf, len); in wpa_supplicant_rx_tdls()
2741 wpa_tdls_recv_teardown(sm, src_addr, buf, len); in wpa_supplicant_rx_tdls()
2744 wpa_tdls_process_discovery_request(sm, src_addr, buf, len); in wpa_supplicant_rx_tdls()
2764 int wpa_tdls_init(struct wpa_sm *sm) in wpa_tdls_init() argument
2766 if (sm == NULL) in wpa_tdls_init()
2769 sm->l2_tdls = l2_packet_init(sm->bridge_ifname ? sm->bridge_ifname : in wpa_tdls_init()
2770 sm->ifname, in wpa_tdls_init()
2771 sm->own_addr, in wpa_tdls_init()
2773 sm, 0); in wpa_tdls_init()
2774 if (sm->l2_tdls == NULL) { in wpa_tdls_init()
2784 if (wpa_sm_tdls_get_capa(sm, &sm->tdls_supported, in wpa_tdls_init()
2785 &sm->tdls_external_setup, in wpa_tdls_init()
2786 &sm->tdls_chan_switch) < 0) { in wpa_tdls_init()
2787 sm->tdls_supported = 1; in wpa_tdls_init()
2788 sm->tdls_external_setup = 0; in wpa_tdls_init()
2792 "driver", sm->tdls_supported ? "" : " not"); in wpa_tdls_init()
2794 sm->tdls_external_setup ? "external" : "internal"); in wpa_tdls_init()
2796 sm->tdls_chan_switch ? "supports" : "does not support"); in wpa_tdls_init()
2802 void wpa_tdls_teardown_peers(struct wpa_sm *sm) in wpa_tdls_teardown_peers() argument
2806 if (!sm) in wpa_tdls_teardown_peers()
2808 peer = sm->tdls; in wpa_tdls_teardown_peers()
2816 if (sm->tdls_external_setup) in wpa_tdls_teardown_peers()
2817 wpa_tdls_do_teardown(sm, peer, in wpa_tdls_teardown_peers()
2820 wpa_sm_tdls_oper(sm, TDLS_TEARDOWN, peer->addr); in wpa_tdls_teardown_peers()
2827 static void wpa_tdls_remove_peers(struct wpa_sm *sm) in wpa_tdls_remove_peers() argument
2831 peer = sm->tdls; in wpa_tdls_remove_peers()
2836 res = wpa_sm_tdls_oper(sm, TDLS_DISABLE_LINK, peer->addr); in wpa_tdls_remove_peers()
2839 wpa_tdls_peer_free(sm, peer); in wpa_tdls_remove_peers()
2851 void wpa_tdls_deinit(struct wpa_sm *sm) in wpa_tdls_deinit() argument
2853 if (sm == NULL) in wpa_tdls_deinit()
2856 if (sm->l2_tdls) in wpa_tdls_deinit()
2857 l2_packet_deinit(sm->l2_tdls); in wpa_tdls_deinit()
2858 sm->l2_tdls = NULL; in wpa_tdls_deinit()
2860 wpa_tdls_remove_peers(sm); in wpa_tdls_deinit()
2864 void wpa_tdls_assoc(struct wpa_sm *sm) in wpa_tdls_assoc() argument
2867 wpa_tdls_remove_peers(sm); in wpa_tdls_assoc()
2871 void wpa_tdls_disassoc(struct wpa_sm *sm) in wpa_tdls_disassoc() argument
2874 wpa_tdls_remove_peers(sm); in wpa_tdls_disassoc()
2892 void wpa_tdls_ap_ies(struct wpa_sm *sm, const u8 *ies, size_t len) in wpa_tdls_ap_ies() argument
2896 sm->tdls_prohibited = 0; in wpa_tdls_ap_ies()
2897 sm->tdls_chan_switch_prohibited = 0; in wpa_tdls_ap_ies()
2904 sm->tdls_prohibited = wpa_tdls_prohibited(&elems); in wpa_tdls_ap_ies()
2906 sm->tdls_prohibited ? "prohibited" : "allowed"); in wpa_tdls_ap_ies()
2907 sm->tdls_chan_switch_prohibited = in wpa_tdls_ap_ies()
2910 sm->tdls_chan_switch_prohibited ? "prohibited" : "allowed"); in wpa_tdls_ap_ies()
2914 void wpa_tdls_assoc_resp_ies(struct wpa_sm *sm, const u8 *ies, size_t len) in wpa_tdls_assoc_resp_ies() argument
2923 if (!sm->tdls_prohibited && wpa_tdls_prohibited(&elems)) { in wpa_tdls_assoc_resp_ies()
2926 sm->tdls_prohibited = 1; in wpa_tdls_assoc_resp_ies()
2929 if (!sm->tdls_chan_switch_prohibited && in wpa_tdls_assoc_resp_ies()
2933 sm->tdls_chan_switch_prohibited = 1; in wpa_tdls_assoc_resp_ies()
2938 void wpa_tdls_enable(struct wpa_sm *sm, int enabled) in wpa_tdls_enable() argument
2941 sm->tdls_disabled = !enabled; in wpa_tdls_enable()
2945 int wpa_tdls_is_external_setup(struct wpa_sm *sm) in wpa_tdls_is_external_setup() argument
2947 return sm->tdls_external_setup; in wpa_tdls_is_external_setup()
2951 int wpa_tdls_enable_chan_switch(struct wpa_sm *sm, const u8 *addr, in wpa_tdls_enable_chan_switch() argument
2958 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_enable_chan_switch()
2961 if (!sm->tdls_chan_switch) { in wpa_tdls_enable_chan_switch()
2967 if (sm->tdls_chan_switch_prohibited) { in wpa_tdls_enable_chan_switch()
2973 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_enable_chan_switch()
2991 ret = wpa_sm_tdls_enable_channel_switch(sm, peer->addr, in wpa_tdls_enable_chan_switch()
3000 int wpa_tdls_disable_chan_switch(struct wpa_sm *sm, const u8 *addr) in wpa_tdls_disable_chan_switch() argument
3004 if (sm->tdls_disabled || !sm->tdls_supported) in wpa_tdls_disable_chan_switch()
3007 for (peer = sm->tdls; peer; peer = peer->next) { in wpa_tdls_disable_chan_switch()
3019 wpa_sm_tdls_disable_channel_switch(sm, peer->addr); in wpa_tdls_disable_chan_switch()