Lines Matching refs:msg

197 static int nl80211_put_mesh_config(struct nl_msg *msg,
293 static int ack_handler(struct nl_msg *msg, void *arg) in ack_handler() argument
307 static int ack_handler_cookie(struct nl_msg *msg, void *arg) in ack_handler_cookie() argument
319 ((u8 *) nlmsg_data(nlmsg_hdr(msg)) + sizeof(struct nlmsghdr) + in ack_handler_cookie()
321 if (nlmsg_hdr(msg)->nlmsg_len <= ack_len) in ack_handler_cookie()
324 attr_len = nlmsg_hdr(msg)->nlmsg_len - ack_len; in ack_handler_cookie()
326 if(!(nlmsg_hdr(msg)->nlmsg_flags & NLM_F_ACK_TLVS)) in ack_handler_cookie()
337 static int finish_handler(struct nl_msg *msg, void *arg) in finish_handler() argument
372 ack_len += err->msg.nlmsg_len - sizeof(*nlh); in error_handler()
394 os_memcmp(orig_nlh, &err->msg, sizeof(err->msg)) != 0) in error_handler()
427 static int no_seq_check(struct nl_msg *msg, void *arg) in no_seq_check() argument
433 static void nl80211_nlmsg_clear(struct nl_msg *msg) in nl80211_nlmsg_clear() argument
439 if (msg) { in nl80211_nlmsg_clear()
440 struct nlmsghdr *hdr = nlmsg_hdr(msg); in nl80211_nlmsg_clear()
458 struct nl_msg *msg; in send_event_marker() local
463 msg = nlmsg_alloc(); in send_event_marker()
464 if (!msg) in send_event_marker()
468 if (!nl80211_cmd(drv, msg, 0, NL80211_CMD_GET_PROTOCOL_FEATURES)) in send_event_marker()
474 err = nl_send_auto_complete(handle, msg); in send_event_marker()
478 hdr = nlmsg_hdr(msg); in send_event_marker()
482 nlmsg_free(msg); in send_event_marker()
491 struct nl_sock *nl_handle, struct nl_msg *msg, in send_and_recv() argument
502 if (!msg) in send_and_recv()
523 err.err = nl_send_auto_complete(nl_handle, msg); in send_and_recv()
536 err.orig_msg = msg; in send_and_recv()
580 nl80211_nlmsg_clear(msg); in send_and_recv()
581 nlmsg_free(msg); in send_and_recv()
587 struct nl_msg *msg) in nl80211_put_control_port() argument
589 if (nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT) || in nl80211_put_control_port()
590 nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, ETH_P_PAE) || in nl80211_put_control_port()
592 (nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_OVER_NL80211) || in nl80211_put_control_port()
593 nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_PREAUTH)))) in nl80211_put_control_port()
605 static int family_handler(struct nl_msg *msg, void *arg) in family_handler() argument
609 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in family_handler()
639 struct nl_msg *msg; in nl_get_multicast_id() local
643 msg = nlmsg_alloc(); in nl_get_multicast_id()
644 if (!msg) in nl_get_multicast_id()
646 if (!genlmsg_put(msg, 0, 0, global->nlctrl_id, in nl_get_multicast_id()
648 nla_put_string(msg, CTRL_ATTR_FAMILY_NAME, family)) { in nl_get_multicast_id()
649 nlmsg_free(msg); in nl_get_multicast_id()
653 ret = send_and_recv(global, global->nl, msg, family_handler, &res, in nl_get_multicast_id()
662 struct nl_msg *msg, int flags, uint8_t cmd) in nl80211_cmd() argument
666 return genlmsg_put(msg, 0, 0, drv->global->nl80211_id, in nl80211_cmd()
671 static int nl80211_set_iface_id(struct nl_msg *msg, struct i802_bss *bss) in nl80211_set_iface_id() argument
674 return nla_put_u64(msg, NL80211_ATTR_WDEV, bss->wdev_id); in nl80211_set_iface_id()
675 return nla_put_u32(msg, NL80211_ATTR_IFINDEX, bss->ifindex); in nl80211_set_iface_id()
681 struct nl_msg *msg; in nl80211_cmd_msg() local
683 msg = nlmsg_alloc(); in nl80211_cmd_msg()
684 if (!msg) in nl80211_cmd_msg()
687 if (!nl80211_cmd(bss->drv, msg, flags, cmd) || in nl80211_cmd_msg()
688 nl80211_set_iface_id(msg, bss) < 0) { in nl80211_cmd_msg()
689 nlmsg_free(msg); in nl80211_cmd_msg()
693 return msg; in nl80211_cmd_msg()
699 struct nl_msg *msg, int ifindex, int flags, in nl80211_ifindex_msg_build() argument
702 if (!msg) in nl80211_ifindex_msg_build()
705 if (!nl80211_cmd(drv, msg, flags, cmd) || in nl80211_ifindex_msg_build()
706 nla_put_u32(msg, NL80211_ATTR_IFINDEX, ifindex)) { in nl80211_ifindex_msg_build()
707 nlmsg_free(msg); in nl80211_ifindex_msg_build()
711 return msg; in nl80211_ifindex_msg_build()
745 static int netdev_info_handler(struct nl_msg *msg, void *arg) in netdev_info_handler() argument
748 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in netdev_info_handler()
773 struct nl_msg *msg; in nl80211_get_wiphy_index() local
779 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_GET_INTERFACE))) in nl80211_get_wiphy_index()
782 if (send_and_recv_resp(bss->drv, msg, netdev_info_handler, &data) == 0) in nl80211_get_wiphy_index()
790 struct nl_msg *msg; in nl80211_get_ifmode() local
796 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_GET_INTERFACE))) in nl80211_get_ifmode()
799 if (send_and_recv_resp(bss->drv, msg, netdev_info_handler, &data) == 0) in nl80211_get_ifmode()
807 struct nl_msg *msg; in nl80211_get_macaddr() local
812 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_GET_INTERFACE))) in nl80211_get_macaddr()
815 return send_and_recv_resp(bss->drv, msg, netdev_info_handler, &data); in nl80211_get_macaddr()
821 struct nl_msg *msg; in nl80211_get_4addr() local
826 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_GET_INTERFACE)) || in nl80211_get_4addr()
827 send_and_recv_resp(bss->drv, msg, netdev_info_handler, &data)) in nl80211_get_4addr()
836 struct nl_msg *msg; in nl80211_register_beacons() local
839 msg = nlmsg_alloc(); in nl80211_register_beacons()
840 if (!msg) in nl80211_register_beacons()
843 if (!nl80211_cmd(drv, msg, 0, NL80211_CMD_REGISTER_BEACONS) || in nl80211_register_beacons()
844 nla_put_u32(msg, NL80211_ATTR_WIPHY, w->wiphy_idx)) { in nl80211_register_beacons()
845 nlmsg_free(msg); in nl80211_register_beacons()
849 ret = send_and_recv(drv->global, w->nl_beacons, msg, NULL, NULL, in nl80211_register_beacons()
875 static int process_beacon_event(struct nl_msg *msg, void *arg) in process_beacon_event() argument
879 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in process_beacon_event()
1049 static int get_mlo_info(struct nl_msg *msg, void *arg) in get_mlo_info() argument
1052 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_mlo_info()
1104 struct nl_msg *msg; in nl80211_get_sta_mlo_info() local
1106 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_INTERFACE); in nl80211_get_sta_mlo_info()
1107 if (send_and_recv_resp(drv, msg, get_mlo_info, in nl80211_get_sta_mlo_info()
1544 static int nl80211_get_assoc_freq_handler(struct nl_msg *msg, void *arg) in nl80211_get_assoc_freq_handler() argument
1547 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in nl80211_get_assoc_freq_handler()
1641 struct nl_msg *msg; in nl80211_get_assoc_ssid() local
1647 msg = nl80211_drv_msg(drv, NLM_F_DUMP, NL80211_CMD_GET_SCAN); in nl80211_get_assoc_ssid()
1650 ret = send_and_recv_resp(drv, msg, nl80211_get_assoc_freq_handler, in nl80211_get_assoc_ssid()
1675 struct nl_msg *msg; in nl80211_get_assoc_freq() local
1681 msg = nl80211_drv_msg(drv, NLM_F_DUMP, NL80211_CMD_GET_SCAN); in nl80211_get_assoc_freq()
1684 ret = send_and_recv_resp(drv, msg, nl80211_get_assoc_freq_handler, in nl80211_get_assoc_freq()
1720 static int get_link_noise(struct nl_msg *msg, void *arg) in get_link_noise() argument
1723 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_link_noise()
1767 struct nl_msg *msg; in nl80211_get_link_noise() local
1772 msg = nl80211_drv_msg(drv, NLM_F_DUMP, NL80211_CMD_GET_SURVEY); in nl80211_get_link_noise()
1773 return send_and_recv_resp(drv, msg, get_link_noise, sig_change); in nl80211_get_link_noise()
1777 static int get_channel_info(struct nl_msg *msg, void *arg) in get_channel_info() argument
1780 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_channel_info()
1834 struct nl_msg *msg; in nl80211_channel_info() local
1836 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_INTERFACE); in nl80211_channel_info()
1837 return send_and_recv_resp(drv, msg, get_channel_info, ci); in nl80211_channel_info()
1871 struct nl_msg *msg; in wpa_driver_nl80211_set_country() local
1873 msg = nlmsg_alloc(); in wpa_driver_nl80211_set_country()
1874 if (!msg) in wpa_driver_nl80211_set_country()
1881 if (!nl80211_cmd(drv, msg, 0, NL80211_CMD_REQ_SET_REG) || in wpa_driver_nl80211_set_country()
1882 nla_put_string(msg, NL80211_ATTR_REG_ALPHA2, alpha2)) { in wpa_driver_nl80211_set_country()
1883 nlmsg_free(msg); in wpa_driver_nl80211_set_country()
1886 if (send_and_recv_cmd(drv, msg)) in wpa_driver_nl80211_set_country()
1892 static int nl80211_get_country(struct nl_msg *msg, void *arg) in nl80211_get_country() argument
1896 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in nl80211_get_country()
1913 struct nl_msg *msg; in wpa_driver_nl80211_get_country() local
1916 msg = nlmsg_alloc(); in wpa_driver_nl80211_get_country()
1917 if (!msg) in wpa_driver_nl80211_get_country()
1920 nl80211_cmd(drv, msg, 0, NL80211_CMD_GET_REG); in wpa_driver_nl80211_get_country()
1925 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, drv->wiphy_idx)) { in wpa_driver_nl80211_get_country()
1926 nlmsg_free(msg); in wpa_driver_nl80211_get_country()
1932 ret = send_and_recv_resp(drv, msg, nl80211_get_country, alpha2); in wpa_driver_nl80211_get_country()
2130 struct msghdr msg; in wpa_driver_nl80211_handle_eapol_tx_status() local
2137 memset(&msg, 0, sizeof(msg)); in wpa_driver_nl80211_handle_eapol_tx_status()
2138 msg.msg_iov = &entry; in wpa_driver_nl80211_handle_eapol_tx_status()
2139 msg.msg_iovlen = 1; in wpa_driver_nl80211_handle_eapol_tx_status()
2142 msg.msg_control = &control; in wpa_driver_nl80211_handle_eapol_tx_status()
2143 msg.msg_controllen = sizeof(control); in wpa_driver_nl80211_handle_eapol_tx_status()
2145 res = recvmsg(sock, &msg, MSG_ERRQUEUE); in wpa_driver_nl80211_handle_eapol_tx_status()
2150 for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) in wpa_driver_nl80211_handle_eapol_tx_status()
2424 struct nl_msg *msg; in nl80211_register_frame() local
2434 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_REGISTER_FRAME)) || in nl80211_register_frame()
2435 (multicast && nla_put_flag(msg, NL80211_ATTR_RECEIVE_MULTICAST)) || in nl80211_register_frame()
2436 nla_put_u16(msg, NL80211_ATTR_FRAME_TYPE, type) || in nl80211_register_frame()
2437 nla_put(msg, NL80211_ATTR_FRAME_MATCH, match_len, match)) { in nl80211_register_frame()
2438 nlmsg_free(msg); in nl80211_register_frame()
2442 ret = send_and_recv(drv->global, nl_handle, msg, NULL, NULL, in nl80211_register_frame()
2718 struct nl_msg *msg; in nl80211_register_spurious_class3() local
2721 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_UNEXPECTED_FRAME); in nl80211_register_spurious_class3()
2722 ret = send_and_recv(bss->drv->global, bss->nl_mgmt, msg, NULL, NULL, in nl80211_register_spurious_class3()
2873 struct nl_msg *msg; in nl80211_del_p2pdev() local
2876 msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_DEL_INTERFACE); in nl80211_del_p2pdev()
2877 ret = send_and_recv_cmd(bss->drv, msg); in nl80211_del_p2pdev()
2887 struct nl_msg *msg; in nl80211_set_p2pdev() local
2890 msg = nl80211_cmd_msg(bss, 0, start ? NL80211_CMD_START_P2P_DEVICE : in nl80211_set_p2pdev()
2892 ret = send_and_recv_cmd(bss->drv, msg); in nl80211_set_p2pdev()
2918 static int qca_vendor_test_cmd_handler(struct nl_msg *msg, void *arg) in qca_vendor_test_cmd_handler() argument
2922 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in qca_vendor_test_cmd_handler()
2948 struct nl_msg *msg; in qca_vendor_test() local
2952 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in qca_vendor_test()
2953 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in qca_vendor_test()
2954 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in qca_vendor_test()
2956 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in qca_vendor_test()
2957 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TEST, 123)) { in qca_vendor_test()
2958 nlmsg_free(msg); in qca_vendor_test()
2961 nla_nest_end(msg, params); in qca_vendor_test()
2963 ret = send_and_recv_resp(drv, msg, qca_vendor_test_cmd_handler, drv); in qca_vendor_test()
3082 struct nl_msg *msg; in wpa_driver_nl80211_del_beacon() local
3095 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_BEACON); in wpa_driver_nl80211_del_beacon()
3096 if (!msg) in wpa_driver_nl80211_del_beacon()
3104 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) { in wpa_driver_nl80211_del_beacon()
3105 nlmsg_free(msg); in wpa_driver_nl80211_del_beacon()
3110 return send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_del_beacon()
3375 struct nl_msg *msg; in issue_key_mgmt_set_key() local
3381 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in issue_key_mgmt_set_key()
3382 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in issue_key_mgmt_set_key()
3383 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in issue_key_mgmt_set_key()
3385 nla_put(msg, NL80211_ATTR_VENDOR_DATA, key_len, key)) { in issue_key_mgmt_set_key()
3386 nl80211_nlmsg_clear(msg); in issue_key_mgmt_set_key()
3387 nlmsg_free(msg); in issue_key_mgmt_set_key()
3390 ret = send_and_recv_cmd(drv, msg); in issue_key_mgmt_set_key()
3406 struct nl_msg *msg = NULL; in nl80211_set_pmk() local
3421 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_SET_PMK); in nl80211_set_pmk()
3422 if (!msg || in nl80211_set_pmk()
3423 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in nl80211_set_pmk()
3424 nla_put(msg, NL80211_ATTR_PMK, key_len, key)) { in nl80211_set_pmk()
3425 nl80211_nlmsg_clear(msg); in nl80211_set_pmk()
3426 nlmsg_free(msg); in nl80211_set_pmk()
3430 ret = send_and_recv_cmd(drv, msg); in nl80211_set_pmk()
3445 struct nl_msg *msg; in wpa_driver_nl80211_set_key() local
3505 msg = nl80211_ifindex_msg(drv, ifindex, 0, NL80211_CMD_SET_KEY); in wpa_driver_nl80211_set_key()
3506 if (!msg) in wpa_driver_nl80211_set_key()
3515 msg = nl80211_ifindex_msg(drv, ifindex, 0, NL80211_CMD_DEL_KEY); in wpa_driver_nl80211_set_key()
3516 if (!msg) in wpa_driver_nl80211_set_key()
3527 msg = nl80211_ifindex_msg(drv, ifindex, 0, NL80211_CMD_NEW_KEY); in wpa_driver_nl80211_set_key()
3528 if (!msg) in wpa_driver_nl80211_set_key()
3545 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in wpa_driver_nl80211_set_key()
3586 nla_put_nested(msg, NL80211_ATTR_KEY, key_msg)) in wpa_driver_nl80211_set_key()
3594 if (nla_put_u16(msg, NL80211_ATTR_VLAN_ID, vlan_id)) in wpa_driver_nl80211_set_key()
3600 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) in wpa_driver_nl80211_set_key()
3604 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_set_key()
3624 msg = nl80211_ifindex_msg(drv, ifindex, 0, NL80211_CMD_SET_KEY); in wpa_driver_nl80211_set_key()
3625 if (!msg) in wpa_driver_nl80211_set_key()
3653 if (nla_put_nested(msg, NL80211_ATTR_KEY, key_msg)) in wpa_driver_nl80211_set_key()
3662 if (nla_put_u16(msg, NL80211_ATTR_VLAN_ID, vlan_id)) in wpa_driver_nl80211_set_key()
3669 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) in wpa_driver_nl80211_set_key()
3673 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_set_key()
3681 nl80211_nlmsg_clear(msg); in wpa_driver_nl80211_set_key()
3682 nlmsg_free(msg); in wpa_driver_nl80211_set_key()
3690 static int nl_add_key(struct nl_msg *msg, enum wpa_alg alg, in nl_add_key() argument
3695 struct nlattr *key_attr = nla_nest_start(msg, NL80211_ATTR_KEY); in nl_add_key()
3706 if (nla_put_flag(msg, NL80211_KEY_DEFAULT_MGMT)) in nl_add_key()
3709 if (nla_put_flag(msg, NL80211_KEY_DEFAULT)) in nl_add_key()
3713 if (nla_put_u8(msg, NL80211_KEY_IDX, key_idx) || in nl_add_key()
3714 nla_put_u32(msg, NL80211_KEY_CIPHER, suite) || in nl_add_key()
3716 nla_put(msg, NL80211_KEY_SEQ, seq_len, seq)) || in nl_add_key()
3717 nla_put(msg, NL80211_KEY_DATA, key_len, key)) in nl_add_key()
3720 nla_nest_end(msg, key_attr); in nl_add_key()
3727 struct nl_msg *msg) in nl80211_set_conn_keys() argument
3747 if (nla_put_flag(msg, NL80211_ATTR_PRIVACY)) in nl80211_set_conn_keys()
3750 nl_keys = nla_nest_start(msg, NL80211_ATTR_KEYS); in nl80211_set_conn_keys()
3758 nl_key = nla_nest_start(msg, i); in nl80211_set_conn_keys()
3760 nla_put(msg, NL80211_KEY_DATA, params->wep_key_len[i], in nl80211_set_conn_keys()
3762 nla_put_u32(msg, NL80211_KEY_CIPHER, in nl80211_set_conn_keys()
3766 nla_put_u8(msg, NL80211_KEY_IDX, i) || in nl80211_set_conn_keys()
3768 nla_put_flag(msg, NL80211_KEY_DEFAULT))) in nl80211_set_conn_keys()
3771 nla_nest_end(msg, nl_key); in nl80211_set_conn_keys()
3773 nla_nest_end(msg, nl_keys); in nl80211_set_conn_keys()
3785 struct nl_msg *msg; in wpa_driver_nl80211_mlme() local
3787 if (!(msg = nl80211_drv_msg(drv, 0, cmd)) || in wpa_driver_nl80211_mlme()
3788 nla_put_u16(msg, NL80211_ATTR_REASON_CODE, reason_code) || in wpa_driver_nl80211_mlme()
3789 (addr && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) || in wpa_driver_nl80211_mlme()
3791 nla_put_flag(msg, NL80211_ATTR_LOCAL_STATE_CHANGE))) { in wpa_driver_nl80211_mlme()
3792 nlmsg_free(msg); in wpa_driver_nl80211_mlme()
3796 ret = send_and_recv(drv->global, bss->nl_connect, msg, in wpa_driver_nl80211_mlme()
3968 struct nl_msg *msg; in wpa_driver_nl80211_authenticate() local
3998 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_AUTHENTICATE); in wpa_driver_nl80211_authenticate()
3999 if (!msg) in wpa_driver_nl80211_authenticate()
4019 if (nl_add_key(msg, WPA_ALG_WEP, i, 1, NULL, 0, in wpa_driver_nl80211_authenticate()
4027 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->bssid)) in wpa_driver_nl80211_authenticate()
4032 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq)) in wpa_driver_nl80211_authenticate()
4038 if (nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, in wpa_driver_nl80211_authenticate()
4044 nla_put(msg, NL80211_ATTR_IE, params->ie_len, params->ie)) in wpa_driver_nl80211_authenticate()
4049 if (nla_put(msg, NL80211_ATTR_SAE_DATA, params->auth_data_len, in wpa_driver_nl80211_authenticate()
4056 nla_put_u32(msg, NL80211_ATTR_AUTH_TYPE, type)) in wpa_driver_nl80211_authenticate()
4060 if (nla_put_flag(msg, NL80211_ATTR_LOCAL_STATE_CHANGE)) in wpa_driver_nl80211_authenticate()
4068 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in wpa_driver_nl80211_authenticate()
4070 nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, in wpa_driver_nl80211_authenticate()
4075 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_authenticate()
4076 msg = NULL; in wpa_driver_nl80211_authenticate()
4095 nlmsg_free(msg); in wpa_driver_nl80211_authenticate()
4146 nlmsg_free(msg); in wpa_driver_nl80211_authenticate()
4399 static int nl80211_put_basic_rates(struct nl_msg *msg, const int *basic_rates) in nl80211_put_basic_rates() argument
4411 return nla_put(msg, NL80211_ATTR_BSS_BASIC_RATES, rates_len, rates); in nl80211_put_basic_rates()
4420 struct nl_msg *msg; in nl80211_set_bss() local
4422 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_BSS)) || in nl80211_set_bss()
4424 nla_put_u8(msg, NL80211_ATTR_BSS_CTS_PROT, cts)) || in nl80211_set_bss()
4426 nla_put_u8(msg, NL80211_ATTR_BSS_SHORT_PREAMBLE, preamble)) || in nl80211_set_bss()
4428 nla_put_u8(msg, NL80211_ATTR_BSS_SHORT_SLOT_TIME, slot)) || in nl80211_set_bss()
4430 nla_put_u16(msg, NL80211_ATTR_BSS_HT_OPMODE, ht_opmode)) || in nl80211_set_bss()
4432 nla_put_u8(msg, NL80211_ATTR_AP_ISOLATE, ap_isolate)) || in nl80211_set_bss()
4433 nl80211_put_basic_rates(msg, basic_rates) || in nl80211_set_bss()
4435 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id))) { in nl80211_set_bss()
4436 nlmsg_free(msg); in nl80211_set_bss()
4440 return send_and_recv_cmd(drv, msg); in nl80211_set_bss()
4449 struct nl_msg *msg; in wpa_driver_nl80211_set_acl() local
4486 if (!(msg = nl80211_ifindex_msg_build(drv, nlmsg_alloc_size(nlmsg_sz), in wpa_driver_nl80211_set_acl()
4489 nla_put_u32(msg, NL80211_ATTR_ACL_POLICY, params->acl_policy ? in wpa_driver_nl80211_set_acl()
4492 nla_put_nested(msg, NL80211_ATTR_MAC_ADDRS, acl)) { in wpa_driver_nl80211_set_acl()
4493 nlmsg_free(msg); in wpa_driver_nl80211_set_acl()
4499 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_set_acl()
4509 static int nl80211_put_beacon_int(struct nl_msg *msg, int beacon_int) in nl80211_put_beacon_int() argument
4513 return nla_put_u32(msg, NL80211_ATTR_BEACON_INTERVAL, in nl80211_put_beacon_int()
4521 static int nl80211_put_dtim_period(struct nl_msg *msg, int dtim_period) in nl80211_put_dtim_period() argument
4525 return nla_put_u32(msg, NL80211_ATTR_DTIM_PERIOD, dtim_period); in nl80211_put_dtim_period()
4538 struct nl_msg *msg; in nl80211_set_mesh_config() local
4541 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_SET_MESH_CONFIG); in nl80211_set_mesh_config()
4542 if (!msg) in nl80211_set_mesh_config()
4545 ret = nl80211_put_mesh_config(msg, params); in nl80211_set_mesh_config()
4547 nlmsg_free(msg); in nl80211_set_mesh_config()
4551 ret = send_and_recv_cmd(drv, msg); in nl80211_set_mesh_config()
4563 static int nl80211_put_beacon_rate(struct nl_msg *msg, u64 flags, u64 flags2, in nl80211_put_beacon_rate() argument
4575 bands = nla_nest_start(msg, NL80211_ATTR_TX_RATES); in nl80211_put_beacon_rate()
4582 band = nla_nest_start(msg, NL80211_BAND_2GHZ); in nl80211_put_beacon_rate()
4586 band = nla_nest_start(msg, NL80211_BAND_6GHZ); in nl80211_put_beacon_rate()
4588 band = nla_nest_start(msg, NL80211_BAND_5GHZ); in nl80211_put_beacon_rate()
4591 band = nla_nest_start(msg, NL80211_BAND_60GHZ); in nl80211_put_beacon_rate()
4611 if (nla_put_u8(msg, NL80211_TXRATE_LEGACY, in nl80211_put_beacon_rate()
4613 nla_put(msg, NL80211_TXRATE_HT, 0, NULL) || in nl80211_put_beacon_rate()
4615 nla_put(msg, NL80211_TXRATE_VHT, sizeof(vht_rate), in nl80211_put_beacon_rate()
4628 if (nla_put(msg, NL80211_TXRATE_LEGACY, 0, NULL) || in nl80211_put_beacon_rate()
4629 nla_put_u8(msg, NL80211_TXRATE_HT, params->beacon_rate) || in nl80211_put_beacon_rate()
4631 nla_put(msg, NL80211_TXRATE_VHT, sizeof(vht_rate), in nl80211_put_beacon_rate()
4644 if (nla_put(msg, NL80211_TXRATE_LEGACY, 0, NULL)) in nl80211_put_beacon_rate()
4646 if (nla_put(msg, NL80211_TXRATE_HT, 0, NULL)) in nl80211_put_beacon_rate()
4648 if (nla_put(msg, NL80211_TXRATE_VHT, sizeof(vht_rate), in nl80211_put_beacon_rate()
4661 if (nla_put(msg, NL80211_TXRATE_LEGACY, 0, NULL) || in nl80211_put_beacon_rate()
4662 nla_put(msg, NL80211_TXRATE_HT, 0, NULL) || in nl80211_put_beacon_rate()
4663 nla_put(msg, NL80211_TXRATE_VHT, sizeof(vht_rate), in nl80211_put_beacon_rate()
4665 nla_put(msg, NL80211_TXRATE_HE, sizeof(he_rate), &he_rate)) in nl80211_put_beacon_rate()
4672 nla_nest_end(msg, band); in nl80211_put_beacon_rate()
4673 nla_nest_end(msg, bands); in nl80211_put_beacon_rate()
4683 struct nl_msg *msg; in nl80211_set_multicast_to_unicast() local
4686 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_MULTICAST_TO_UNICAST); in nl80211_set_multicast_to_unicast()
4687 if (!msg || in nl80211_set_multicast_to_unicast()
4689 nla_put_flag(msg, NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED))) { in nl80211_set_multicast_to_unicast()
4693 nlmsg_free(msg); in nl80211_set_multicast_to_unicast()
4697 ret = send_and_recv_cmd(drv, msg); in nl80211_set_multicast_to_unicast()
4726 static int nl80211_put_sae_pwe(struct nl_msg *msg, enum sae_pwe pwe) in nl80211_put_sae_pwe() argument
4741 if (nla_put_u8(msg, NL80211_ATTR_SAE_PWE, sae_pwe)) in nl80211_put_sae_pwe()
4750 static int nl80211_fils_discovery(struct i802_bss *bss, struct nl_msg *msg, in nl80211_fils_discovery() argument
4762 attr = nla_nest_start(msg, NL80211_ATTR_FILS_DISCOVERY); in nl80211_fils_discovery()
4764 nla_put_u32(msg, NL80211_FILS_DISCOVERY_ATTR_INT_MIN, in nl80211_fils_discovery()
4766 nla_put_u32(msg, NL80211_FILS_DISCOVERY_ATTR_INT_MAX, in nl80211_fils_discovery()
4769 nla_put(msg, NL80211_FILS_DISCOVERY_ATTR_TMPL, in nl80211_fils_discovery()
4773 nla_nest_end(msg, attr); in nl80211_fils_discovery()
4782 struct nl_msg *msg, in nl80211_unsol_bcast_probe_resp() argument
4797 attr = nla_nest_start(msg, NL80211_ATTR_UNSOL_BCAST_PROBE_RESP); in nl80211_unsol_bcast_probe_resp()
4799 nla_put_u32(msg, NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT, in nl80211_unsol_bcast_probe_resp()
4802 nla_put(msg, NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL, in nl80211_unsol_bcast_probe_resp()
4807 nla_nest_end(msg, attr); in nl80211_unsol_bcast_probe_resp()
4812 static int nl80211_mbssid(struct nl_msg *msg, in nl80211_mbssid() argument
4821 config = nla_nest_start(msg, NL80211_ATTR_MBSSID_CONFIG); in nl80211_mbssid()
4823 nla_put_u8(msg, NL80211_MBSSID_CONFIG_ATTR_INDEX, in nl80211_mbssid()
4830 nla_put_u32(msg, NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX, in nl80211_mbssid()
4835 if (params->ema && nla_put_flag(msg, NL80211_MBSSID_CONFIG_ATTR_EMA)) in nl80211_mbssid()
4838 nla_nest_end(msg, config); in nl80211_mbssid()
4844 elems = nla_nest_start(msg, NL80211_ATTR_MBSSID_ELEMS); in nl80211_mbssid()
4849 if (nla_put(msg, i + 1, offs[i + 1] - offs[i], offs[i])) in nl80211_mbssid()
4853 if (nla_put(msg, i + 1, in nl80211_mbssid()
4858 nla_nest_end(msg, elems); in nl80211_mbssid()
4868 elems = nla_nest_start(msg, NL80211_ATTR_EMA_RNR_ELEMS); in nl80211_mbssid()
4873 if (nla_put(msg, i + 1, offs[i + 1] - offs[i], offs[i])) in nl80211_mbssid()
4877 if (nla_put(msg, i + 1, *offs + params->rnr_elem_len - offs[i], in nl80211_mbssid()
4880 nla_nest_end(msg, elems); in nl80211_mbssid()
4894 struct nl_msg *msg; in qca_set_allowed_ap_freqs() local
4903 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in qca_set_allowed_ap_freqs()
4904 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in qca_set_allowed_ap_freqs()
4905 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in qca_set_allowed_ap_freqs()
4907 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA))) in qca_set_allowed_ap_freqs()
4911 nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_CONFIG_MLO_LINK_ID, link_id)) in qca_set_allowed_ap_freqs()
4915 msg, QCA_WLAN_VENDOR_ATTR_CONFIG_AP_ALLOWED_FREQ_LIST); in qca_set_allowed_ap_freqs()
4920 if (nla_put_u32(msg, i, freqs[i])) in qca_set_allowed_ap_freqs()
4924 nla_nest_end(msg, freqs_list); in qca_set_allowed_ap_freqs()
4925 nla_nest_end(msg, params); in qca_set_allowed_ap_freqs()
4927 ret = send_and_recv_cmd(drv, msg); in qca_set_allowed_ap_freqs()
4935 nlmsg_free(msg); in qca_set_allowed_ap_freqs()
4940 static int nl80211_put_freq_params(struct nl_msg *msg, in nl80211_put_freq_params() argument
4948 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq->freq)) in nl80211_put_freq_params()
4995 if (nla_put_u32(msg, NL80211_ATTR_CHANNEL_WIDTH, cw) || in nl80211_put_freq_params()
4996 nla_put_u32(msg, NL80211_ATTR_CENTER_FREQ1, in nl80211_put_freq_params()
4999 nla_put_u32(msg, NL80211_ATTR_CENTER_FREQ2, in nl80211_put_freq_params()
5020 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, ct)) in nl80211_put_freq_params()
5026 if (nla_put_u8(msg, NL80211_ATTR_WIPHY_EDMG_CHANNELS, in nl80211_put_freq_params()
5028 nla_put_u8(msg, NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, in nl80211_put_freq_params()
5034 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, in nl80211_put_freq_params()
5039 nla_put_flag(msg, NL80211_ATTR_RADAR_BACKGROUND)) in nl80211_put_freq_params()
5052 struct nl_msg *msg; in wpa_driver_nl80211_set_ap() local
5099 if (!(msg = nl80211_bss_msg(bss, 0, cmd)) || in wpa_driver_nl80211_set_ap()
5100 nla_put(msg, NL80211_ATTR_BEACON_HEAD, params->head_len, in wpa_driver_nl80211_set_ap()
5102 nla_put(msg, NL80211_ATTR_BEACON_TAIL, params->tail_len, in wpa_driver_nl80211_set_ap()
5104 nl80211_put_beacon_int(msg, params->beacon_int) || in wpa_driver_nl80211_set_ap()
5105 nl80211_put_beacon_rate(msg, drv->capa.flags, drv->capa.flags2, in wpa_driver_nl80211_set_ap()
5107 nl80211_put_dtim_period(msg, params->dtim_period) || in wpa_driver_nl80211_set_ap()
5108 nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, params->ssid)) in wpa_driver_nl80211_set_ap()
5115 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in wpa_driver_nl80211_set_ap()
5127 if (nla_put(msg, NL80211_ATTR_PROBE_RESP, params->proberesp_len, in wpa_driver_nl80211_set_ap()
5134 if (nla_put_u32(msg, NL80211_ATTR_HIDDEN_SSID, in wpa_driver_nl80211_set_ap()
5140 if (nla_put_u32(msg, NL80211_ATTR_HIDDEN_SSID, in wpa_driver_nl80211_set_ap()
5146 if (nla_put_u32(msg, NL80211_ATTR_HIDDEN_SSID, in wpa_driver_nl80211_set_ap()
5153 nla_put_flag(msg, NL80211_ATTR_PRIVACY)) in wpa_driver_nl80211_set_ap()
5160 if (nla_put_u32(msg, NL80211_ATTR_AUTH_TYPE, in wpa_driver_nl80211_set_ap()
5164 if (nla_put_u32(msg, NL80211_ATTR_AUTH_TYPE, in wpa_driver_nl80211_set_ap()
5176 nla_put_u32(msg, NL80211_ATTR_WPA_VERSIONS, ver)) in wpa_driver_nl80211_set_ap()
5188 nla_put(msg, NL80211_ATTR_AKM_SUITES, num_suites * sizeof(u32), in wpa_driver_nl80211_set_ap()
5195 nla_put(msg, NL80211_ATTR_PMK, params->psk_len, params->psk)) in wpa_driver_nl80211_set_ap()
5201 nla_put(msg, NL80211_ATTR_SAE_PASSWORD, in wpa_driver_nl80211_set_ap()
5205 if (nl80211_put_control_port(drv, msg) < 0) in wpa_driver_nl80211_set_ap()
5211 nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT)) in wpa_driver_nl80211_set_ap()
5222 if (nla_put_flag(msg, in wpa_driver_nl80211_set_ap()
5232 nla_put_u32(msg, NL80211_ATTR_AP_SETTINGS_FLAGS, flags)) in wpa_driver_nl80211_set_ap()
5241 nla_put(msg, NL80211_ATTR_CIPHER_SUITES_PAIRWISE, in wpa_driver_nl80211_set_ap()
5249 nla_put_u32(msg, NL80211_ATTR_CIPHER_SUITE_GROUP, suite)) in wpa_driver_nl80211_set_ap()
5255 if (nla_put(msg, NL80211_ATTR_IE, in wpa_driver_nl80211_set_ap()
5263 if (nla_put(msg, NL80211_ATTR_IE_PROBE_RESP, in wpa_driver_nl80211_set_ap()
5271 if (nla_put(msg, NL80211_ATTR_IE_ASSOC_RESP, in wpa_driver_nl80211_set_ap()
5280 if (nla_put_u16(msg, NL80211_ATTR_INACTIVITY_TIMEOUT, in wpa_driver_nl80211_set_ap()
5290 if (nla_put_u8(msg, NL80211_ATTR_P2P_CTWINDOW, in wpa_driver_nl80211_set_ap()
5302 if (nla_put_flag(msg, NL80211_ATTR_PBSS)) in wpa_driver_nl80211_set_ap()
5314 ftm = nla_nest_start(msg, NL80211_ATTR_FTM_RESPONDER); in wpa_driver_nl80211_set_ap()
5316 nla_put_flag(msg, NL80211_FTM_RESP_ATTR_ENABLED) || in wpa_driver_nl80211_set_ap()
5318 nla_put(msg, NL80211_FTM_RESP_ATTR_LCI, in wpa_driver_nl80211_set_ap()
5322 nla_put(msg, NL80211_FTM_RESP_ATTR_CIVICLOC, in wpa_driver_nl80211_set_ap()
5326 nla_nest_end(msg, ftm); in wpa_driver_nl80211_set_ap()
5329 if (params->freq && nl80211_put_freq_params(msg, params->freq) < 0) in wpa_driver_nl80211_set_ap()
5336 spr = nla_nest_start(msg, NL80211_ATTR_HE_OBSS_PD); in wpa_driver_nl80211_set_ap()
5341 nla_put_u8(msg, NL80211_HE_OBSS_PD_ATTR_SR_CTRL, in wpa_driver_nl80211_set_ap()
5345 nla_put_u8(msg, NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET, in wpa_driver_nl80211_set_ap()
5351 (nla_put_u8(msg, NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET, in wpa_driver_nl80211_set_ap()
5353 nla_put_u8(msg, NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET, in wpa_driver_nl80211_set_ap()
5355 nla_put(msg, NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP, in wpa_driver_nl80211_set_ap()
5358 nla_put(msg, NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP, in wpa_driver_nl80211_set_ap()
5363 nla_nest_end(msg, spr); in wpa_driver_nl80211_set_ap()
5370 bss_color = nla_nest_start(msg, NL80211_ATTR_HE_BSS_COLOR); in wpa_driver_nl80211_set_ap()
5373 nla_put_flag(msg, NL80211_HE_BSS_COLOR_ATTR_DISABLED)) || in wpa_driver_nl80211_set_ap()
5375 nla_put_flag(msg, NL80211_HE_BSS_COLOR_ATTR_PARTIAL)) || in wpa_driver_nl80211_set_ap()
5376 nla_put_u8(msg, NL80211_HE_BSS_COLOR_ATTR_COLOR, in wpa_driver_nl80211_set_ap()
5379 nla_nest_end(msg, bss_color); in wpa_driver_nl80211_set_ap()
5385 if (nla_put_flag(msg, NL80211_ATTR_TWT_RESPONDER)) in wpa_driver_nl80211_set_ap()
5390 nl80211_unsol_bcast_probe_resp(bss, msg, &params->ubpr) < 0) in wpa_driver_nl80211_set_ap()
5393 if (nl80211_mbssid(msg, params) < 0) in wpa_driver_nl80211_set_ap()
5399 nl80211_put_sae_pwe(msg, params->sae_pwe) < 0) in wpa_driver_nl80211_set_ap()
5404 if (params->fd_max_int && nl80211_fils_discovery(bss, msg, params) < 0) in wpa_driver_nl80211_set_ap()
5411 if (nla_put_u32(msg, NL80211_ATTR_PUNCT_BITMAP, in wpa_driver_nl80211_set_ap()
5424 if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER)) in wpa_driver_nl80211_set_ap()
5426 ret = send_and_recv(drv->global, bss->nl_connect, msg, NULL, NULL, NULL, in wpa_driver_nl80211_set_ap()
5479 nlmsg_free(msg); in wpa_driver_nl80211_set_ap()
5488 struct nl_msg *msg; in nl80211_set_channel() local
5497 msg = nl80211_drv_msg(drv, 0, set_chan ? NL80211_CMD_SET_CHANNEL : in nl80211_set_channel()
5499 if (!msg || nl80211_put_freq_params(msg, freq) < 0) { in nl80211_set_channel()
5500 nlmsg_free(msg); in nl80211_set_channel()
5508 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, freq->link_id)) { in nl80211_set_channel()
5509 nlmsg_free(msg); in nl80211_set_channel()
5514 ret = send_and_recv_cmd(drv, msg); in nl80211_set_channel()
5580 struct nl_msg *msg; in wpa_driver_nl80211_sta_add() local
5604 msg = nl80211_bss_msg(bss, 0, cmd); in wpa_driver_nl80211_sta_add()
5605 if (!msg) in wpa_driver_nl80211_sta_add()
5623 if (nla_put(msg, NL80211_ATTR_STA_SUPPORTED_RATES, in wpa_driver_nl80211_sta_add()
5625 nla_put_u16(msg, NL80211_ATTR_STA_CAPABILITY, in wpa_driver_nl80211_sta_add()
5633 if (nla_put(msg, NL80211_ATTR_HT_CAPABILITY, in wpa_driver_nl80211_sta_add()
5643 if (nla_put(msg, NL80211_ATTR_VHT_CAPABILITY, in wpa_driver_nl80211_sta_add()
5652 if (nla_put(msg, NL80211_ATTR_HE_CAPABILITY, in wpa_driver_nl80211_sta_add()
5661 if (nla_put(msg, NL80211_ATTR_HE_6GHZ_CAPABILITY, in wpa_driver_nl80211_sta_add()
5670 if (nla_put(msg, NL80211_ATTR_EHT_CAPABILITY, in wpa_driver_nl80211_sta_add()
5678 if (nla_put(msg, NL80211_ATTR_STA_EXT_CAPABILITY, in wpa_driver_nl80211_sta_add()
5684 nla_put_u8(msg, NL80211_ATTR_STA_SUPPORT_P2P_PS, in wpa_driver_nl80211_sta_add()
5693 if (nla_put_u16(msg, NL80211_ATTR_STA_AID, params->aid)) in wpa_driver_nl80211_sta_add()
5705 if (nla_put_u16(msg, NL80211_ATTR_STA_AID, 1)) in wpa_driver_nl80211_sta_add()
5710 if (nla_put_u16(msg, NL80211_ATTR_STA_LISTEN_INTERVAL, in wpa_driver_nl80211_sta_add()
5715 if (nla_put_u16(msg, NL80211_ATTR_PEER_AID, params->aid)) in wpa_driver_nl80211_sta_add()
5722 if (nla_put_u16(msg, NL80211_ATTR_STA_AID, params->aid) || in wpa_driver_nl80211_sta_add()
5723 nla_put_u16(msg, NL80211_ATTR_STA_LISTEN_INTERVAL, in wpa_driver_nl80211_sta_add()
5730 if (nla_put_u8(msg, NL80211_ATTR_OPMODE_NOTIF, in wpa_driver_nl80211_sta_add()
5738 if (nla_put(msg, NL80211_ATTR_STA_SUPPORTED_CHANNELS, in wpa_driver_nl80211_sta_add()
5747 if (nla_put(msg, NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES, in wpa_driver_nl80211_sta_add()
5787 ret = nla_put_u16(msg, NL80211_ATTR_MESH_PEER_AID, in wpa_driver_nl80211_sta_add()
5797 if (nla_put(msg, NL80211_ATTR_STA_FLAGS2, sizeof(upd), &upd)) in wpa_driver_nl80211_sta_add()
5802 nla_put_u8(msg, NL80211_ATTR_STA_PLINK_STATE, in wpa_driver_nl80211_sta_add()
5810 struct nlattr *wme = nla_nest_start(msg, NL80211_ATTR_STA_WME); in wpa_driver_nl80211_sta_add()
5814 nla_put_u8(msg, NL80211_STA_WME_UAPSD_QUEUES, in wpa_driver_nl80211_sta_add()
5816 nla_put_u8(msg, NL80211_STA_WME_MAX_SP, in wpa_driver_nl80211_sta_add()
5820 nla_nest_end(msg, wme); in wpa_driver_nl80211_sta_add()
5827 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in wpa_driver_nl80211_sta_add()
5840 if (nla_put(msg, NL80211_ATTR_MLD_ADDR, in wpa_driver_nl80211_sta_add()
5842 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, in wpa_driver_nl80211_sta_add()
5846 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, in wpa_driver_nl80211_sta_add()
5851 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->addr)) in wpa_driver_nl80211_sta_add()
5855 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_sta_add()
5856 msg = NULL; in wpa_driver_nl80211_sta_add()
5863 nlmsg_free(msg); in wpa_driver_nl80211_sta_add()
5876 struct nl_msg *msg; in rtnl_neigh_delete_fdb_entry() local
5879 msg = nlmsg_alloc_simple(RTM_DELNEIGH, NLM_F_CREATE); in rtnl_neigh_delete_fdb_entry()
5880 if (!msg) in rtnl_neigh_delete_fdb_entry()
5883 if (nlmsg_append(msg, &nhdr, sizeof(nhdr), NLMSG_ALIGNTO) < 0 || in rtnl_neigh_delete_fdb_entry()
5884 nla_put(msg, NDA_LLADDR, ETH_ALEN, (void *) addr) || in rtnl_neigh_delete_fdb_entry()
5885 nl_send_auto_complete(drv->rtnl_sk, msg) < 0) in rtnl_neigh_delete_fdb_entry()
5899 nlmsg_free(msg); in rtnl_neigh_delete_fdb_entry()
5907 struct nl_msg *msg; in wpa_driver_nl80211_sta_remove() local
5910 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_STATION)) || in wpa_driver_nl80211_sta_remove()
5911 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in wpa_driver_nl80211_sta_remove()
5913 nla_put_u8(msg, NL80211_ATTR_MGMT_SUBTYPE, in wpa_driver_nl80211_sta_remove()
5916 nla_put_u8(msg, NL80211_ATTR_MGMT_SUBTYPE, in wpa_driver_nl80211_sta_remove()
5919 nla_put_u16(msg, NL80211_ATTR_REASON_CODE, reason_code))) { in wpa_driver_nl80211_sta_remove()
5920 nlmsg_free(msg); in wpa_driver_nl80211_sta_remove()
5924 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_sta_remove()
5940 struct nl_msg *msg; in nl80211_remove_iface() local
5954 msg = nl80211_ifindex_msg(drv, ifidx, 0, NL80211_CMD_DEL_INTERFACE); in nl80211_remove_iface()
5955 if (send_and_recv_cmd(drv, msg) == 0) in nl80211_remove_iface()
6001 struct nl_msg *msg; in nl80211_create_iface_once() local
6008 msg = nl80211_cmd_msg(drv->first_bss, 0, NL80211_CMD_NEW_INTERFACE); in nl80211_create_iface_once()
6009 if (!msg || in nl80211_create_iface_once()
6010 nla_put_string(msg, NL80211_ATTR_IFNAME, ifname) || in nl80211_create_iface_once()
6011 nla_put_u32(msg, NL80211_ATTR_IFTYPE, iftype)) in nl80211_create_iface_once()
6017 flags = nla_nest_start(msg, NL80211_ATTR_MNTR_FLAGS); in nl80211_create_iface_once()
6019 nla_put_flag(msg, NL80211_MNTR_FLAG_COOK_FRAMES)) in nl80211_create_iface_once()
6022 nla_nest_end(msg, flags); in nl80211_create_iface_once()
6024 if (nla_put_u8(msg, NL80211_ATTR_4ADDR, wds)) in nl80211_create_iface_once()
6032 if (nla_put_flag(msg, NL80211_ATTR_IFACE_SOCKET_OWNER)) in nl80211_create_iface_once()
6036 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in nl80211_create_iface_once()
6039 ret = send_and_recv_resp(drv, msg, handler, arg); in nl80211_create_iface_once()
6040 msg = NULL; in nl80211_create_iface_once()
6043 nlmsg_free(msg); in nl80211_create_iface_once()
6197 struct nl_msg *msg; in nl80211_tx_control_port() local
6206 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_CONTROL_PORT_FRAME); in nl80211_tx_control_port()
6207 if (!msg || in nl80211_tx_control_port()
6208 nla_put_u16(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, proto) || in nl80211_tx_control_port()
6209 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, dest) || in nl80211_tx_control_port()
6210 nla_put(msg, NL80211_ATTR_FRAME, len, buf) || in nl80211_tx_control_port()
6212 nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT)) || in nl80211_tx_control_port()
6214 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id))) { in nl80211_tx_control_port()
6215 nlmsg_free(msg); in nl80211_tx_control_port()
6221 ret = send_and_recv(bss->drv->global, bss->drv->global->nl, msg, in nl80211_tx_control_port()
6350 struct nl_msg *msg; in wpa_driver_nl80211_sta_set_flags() local
6359 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_STATION)) || in wpa_driver_nl80211_sta_set_flags()
6360 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in wpa_driver_nl80211_sta_set_flags()
6367 flags = nla_nest_start(msg, NL80211_ATTR_STA_FLAGS); in wpa_driver_nl80211_sta_set_flags()
6370 nla_put_flag(msg, NL80211_STA_FLAG_AUTHORIZED)) || in wpa_driver_nl80211_sta_set_flags()
6372 nla_put_flag(msg, NL80211_STA_FLAG_WME)) || in wpa_driver_nl80211_sta_set_flags()
6374 nla_put_flag(msg, NL80211_STA_FLAG_SHORT_PREAMBLE)) || in wpa_driver_nl80211_sta_set_flags()
6376 nla_put_flag(msg, NL80211_STA_FLAG_MFP)) || in wpa_driver_nl80211_sta_set_flags()
6378 nla_put_flag(msg, NL80211_STA_FLAG_TDLS_PEER))) in wpa_driver_nl80211_sta_set_flags()
6381 nla_nest_end(msg, flags); in wpa_driver_nl80211_sta_set_flags()
6386 if (nla_put(msg, NL80211_ATTR_STA_FLAGS2, sizeof(upd), &upd)) in wpa_driver_nl80211_sta_set_flags()
6389 return send_and_recv_cmd(bss->drv, msg); in wpa_driver_nl80211_sta_set_flags()
6391 nlmsg_free(msg); in wpa_driver_nl80211_sta_set_flags()
6400 struct nl_msg *msg; in driver_nl80211_sta_set_airtime_weight() local
6407 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_STATION)) || in driver_nl80211_sta_set_airtime_weight()
6408 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in driver_nl80211_sta_set_airtime_weight()
6409 nla_put_u16(msg, NL80211_ATTR_AIRTIME_WEIGHT, weight)) in driver_nl80211_sta_set_airtime_weight()
6412 ret = send_and_recv_cmd(bss->drv, msg); in driver_nl80211_sta_set_airtime_weight()
6420 nlmsg_free(msg); in driver_nl80211_sta_set_airtime_weight()
6458 struct nl_msg *msg; in nl80211_leave_ibss() local
6461 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_LEAVE_IBSS); in nl80211_leave_ibss()
6462 ret = send_and_recv(drv->global, drv->first_bss->nl_connect, msg, NULL, in nl80211_leave_ibss()
6483 static int nl80211_ht_vht_overrides(struct nl_msg *msg, in nl80211_ht_vht_overrides() argument
6486 if (params->disable_ht && nla_put_flag(msg, NL80211_ATTR_DISABLE_HT)) in nl80211_ht_vht_overrides()
6494 if (nla_put(msg, NL80211_ATTR_HT_CAPABILITY, sz, in nl80211_ht_vht_overrides()
6496 nla_put(msg, NL80211_ATTR_HT_CAPABILITY_MASK, sz, in nl80211_ht_vht_overrides()
6504 if (nla_put_flag(msg, NL80211_ATTR_DISABLE_VHT)) in nl80211_ht_vht_overrides()
6513 if (nla_put(msg, NL80211_ATTR_VHT_CAPABILITY, sz, in nl80211_ht_vht_overrides()
6515 nla_put(msg, NL80211_ATTR_VHT_CAPABILITY_MASK, sz, in nl80211_ht_vht_overrides()
6524 if (nla_put_flag(msg, NL80211_ATTR_DISABLE_HE)) in nl80211_ht_vht_overrides()
6531 if (nla_put_flag(msg, NL80211_ATTR_DISABLE_EHT)) in nl80211_ht_vht_overrides()
6542 struct nl_msg *msg; in wpa_driver_nl80211_ibss() local
6555 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_JOIN_IBSS)) || in wpa_driver_nl80211_ibss()
6561 if (nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, params->ssid)) in wpa_driver_nl80211_ibss()
6566 if (nl80211_put_freq_params(msg, &params->freq) < 0 || in wpa_driver_nl80211_ibss()
6567 nl80211_put_beacon_int(msg, params->beacon_int)) in wpa_driver_nl80211_ibss()
6570 ret = nl80211_set_conn_keys(params, msg); in wpa_driver_nl80211_ibss()
6577 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->bssid)) in wpa_driver_nl80211_ibss()
6583 if (nla_put_flag(msg, NL80211_ATTR_FREQ_FIXED)) in wpa_driver_nl80211_ibss()
6593 if (nl80211_put_control_port(drv, msg)) in wpa_driver_nl80211_ibss()
6601 if (nla_put(msg, NL80211_ATTR_IE, params->wpa_ie_len, in wpa_driver_nl80211_ibss()
6606 ret = nl80211_ht_vht_overrides(msg, params); in wpa_driver_nl80211_ibss()
6610 if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER)) in wpa_driver_nl80211_ibss()
6612 ret = send_and_recv(drv->global, drv->first_bss->nl_connect, msg, NULL, in wpa_driver_nl80211_ibss()
6614 msg = NULL; in wpa_driver_nl80211_ibss()
6623 nlmsg_free(msg); in wpa_driver_nl80211_ibss()
6632 nlmsg_free(msg); in wpa_driver_nl80211_ibss()
6639 struct nl_msg *msg) in nl80211_put_fils_connect_params() argument
6645 if (nla_put(msg, NL80211_ATTR_FILS_ERP_USERNAME, in nl80211_put_fils_connect_params()
6655 if (nla_put(msg, NL80211_ATTR_FILS_ERP_REALM, in nl80211_put_fils_connect_params()
6663 if (nla_put_u16(msg, NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM, in nl80211_put_fils_connect_params()
6669 if (nla_put(msg, NL80211_ATTR_FILS_ERP_RRK, in nl80211_put_fils_connect_params()
6691 struct nl_msg *msg) in nl80211_connect_common() argument
6701 if (nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, in nl80211_connect_common()
6703 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in nl80211_connect_common()
6707 links = nla_nest_start(msg, NL80211_ATTR_MLO_LINKS); in nl80211_connect_common()
6712 attr = nla_nest_start(msg, 0); in nl80211_connect_common()
6716 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in nl80211_connect_common()
6718 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, in nl80211_connect_common()
6720 nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, in nl80211_connect_common()
6723 nla_put_flag(msg, in nl80211_connect_common()
6727 nla_put(msg, NL80211_ATTR_IE, in nl80211_connect_common()
6735 nla_nest_end(msg, attr); in nl80211_connect_common()
6738 nla_nest_end(msg, links); in nl80211_connect_common()
6746 if (nla_put_flag(msg, NL80211_ATTR_IFACE_SOCKET_OWNER)) in nl80211_connect_common()
6752 if (nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->bssid)) in nl80211_connect_common()
6759 if (nla_put(msg, NL80211_ATTR_MAC_HINT, ETH_ALEN, in nl80211_connect_common()
6766 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, in nl80211_connect_common()
6775 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ_HINT, in nl80211_connect_common()
6785 if (nla_put_u8(msg, NL80211_ATTR_WIPHY_EDMG_CHANNELS, in nl80211_connect_common()
6787 nla_put_u8(msg, NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, in nl80211_connect_common()
6795 if (nla_put_u16(msg, NL80211_ATTR_BG_SCAN_PERIOD, in nl80211_connect_common()
6803 if (nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, in nl80211_connect_common()
6814 nla_put(msg, NL80211_ATTR_IE, params->wpa_ie_len, params->wpa_ie)) in nl80211_connect_common()
6836 if (nla_put_u32(msg, NL80211_ATTR_WPA_VERSIONS, ver)) in nl80211_connect_common()
6843 if (nla_put_u32(msg, NL80211_ATTR_CIPHER_SUITES_PAIRWISE, in nl80211_connect_common()
6858 if (nla_put_u32(msg, NL80211_ATTR_CIPHER_SUITE_GROUP, cipher)) in nl80211_connect_common()
6985 if (nla_put(msg, NL80211_ATTR_AKM_SUITES, in nl80211_connect_common()
6997 if (nla_put_flag(msg, NL80211_ATTR_WANT_1X_4WAY_HS)) in nl80211_connect_common()
7005 if (nla_put(msg, NL80211_ATTR_PMK, 32, params->psk)) in nl80211_connect_common()
7009 if (nl80211_put_control_port(drv, msg)) in nl80211_connect_common()
7016 nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT)) in nl80211_connect_common()
7025 nla_put_flag(msg, NL80211_ATTR_USE_RRM)) in nl80211_connect_common()
7029 if (nl80211_ht_vht_overrides(msg, params) < 0) in nl80211_connect_common()
7037 if (nla_put_flag(msg, NL80211_ATTR_PBSS)) in nl80211_connect_common()
7045 if (nla_put(msg, NL80211_ATTR_PREV_BSSID, ETH_ALEN, in nl80211_connect_common()
7052 nl80211_put_fils_connect_params(drv, params, msg) != 0) in nl80211_connect_common()
7058 nla_put_flag(msg, NL80211_ATTR_EXTERNAL_AUTH_SUPPORT)) in nl80211_connect_common()
7062 nla_put_flag(msg, NL80211_ATTR_MLO_SUPPORT)) in nl80211_connect_common()
7084 struct nl_msg *msg; in nl80211_connect_ext() local
7094 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_connect_ext()
7095 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_connect_ext()
7096 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_connect_ext()
7100 attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_connect_ext()
7109 if (nla_put(msg, QCA_WLAN_VENDOR_ATTR_CONNECT_EXT_FEATURES, in nl80211_connect_ext()
7113 nla_nest_end(msg, attr); in nl80211_connect_ext()
7115 return send_and_recv_cmd(drv, msg); in nl80211_connect_ext()
7117 nlmsg_free(msg); in nl80211_connect_ext()
7128 struct nl_msg *msg; in wpa_driver_nl80211_try_connect() local
7146 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_CONNECT); in wpa_driver_nl80211_try_connect()
7147 if (!msg) in wpa_driver_nl80211_try_connect()
7150 ret = nl80211_connect_common(drv, params, msg); in wpa_driver_nl80211_try_connect()
7155 nla_put_u32(msg, NL80211_ATTR_USE_MFP, NL80211_MFP_REQUIRED)) in wpa_driver_nl80211_try_connect()
7160 nla_put_u32(msg, NL80211_ATTR_USE_MFP, NL80211_MFP_OPTIONAL)) in wpa_driver_nl80211_try_connect()
7166 nl80211_put_sae_pwe(msg, params->sae_pwe) < 0) in wpa_driver_nl80211_try_connect()
7186 if (nla_put(msg, NL80211_ATTR_SAE_PASSWORD, pwd_len, password)) in wpa_driver_nl80211_try_connect()
7213 nla_put_u32(msg, NL80211_ATTR_AUTH_TYPE, type)) in wpa_driver_nl80211_try_connect()
7217 ret = nl80211_set_conn_keys(params, msg); in wpa_driver_nl80211_try_connect()
7221 if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER)) in wpa_driver_nl80211_try_connect()
7223 ret = send_and_recv(drv->global, bss->nl_connect, msg, NULL, NULL, NULL, in wpa_driver_nl80211_try_connect()
7225 msg = NULL; in wpa_driver_nl80211_try_connect()
7238 nl80211_nlmsg_clear(msg); in wpa_driver_nl80211_try_connect()
7239 nlmsg_free(msg); in wpa_driver_nl80211_try_connect()
7284 struct nl_msg *msg; in wpa_driver_nl80211_associate() local
7308 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_ASSOCIATE); in wpa_driver_nl80211_associate()
7309 if (!msg) in wpa_driver_nl80211_associate()
7312 ret = nl80211_connect_common(drv, params, msg); in wpa_driver_nl80211_associate()
7317 nla_put_u32(msg, NL80211_ATTR_USE_MFP, NL80211_MFP_REQUIRED)) in wpa_driver_nl80211_associate()
7323 if (nla_put(msg, NL80211_ATTR_FILS_KEK, params->fils_kek_len, in wpa_driver_nl80211_associate()
7331 if (nla_put(msg, NL80211_ATTR_FILS_NONCES, in wpa_driver_nl80211_associate()
7337 if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER)) in wpa_driver_nl80211_associate()
7340 msg, NULL, NULL, NULL, NULL, &err_info); in wpa_driver_nl80211_associate()
7341 msg = NULL; in wpa_driver_nl80211_associate()
7378 nlmsg_free(msg); in wpa_driver_nl80211_associate()
7386 struct nl_msg *msg; in nl80211_set_mode() local
7392 msg = nl80211_cmd_msg(drv->first_bss, 0, NL80211_CMD_SET_INTERFACE); in nl80211_set_mode()
7393 if (!msg || nla_put_u32(msg, NL80211_ATTR_IFTYPE, mode)) in nl80211_set_mode()
7396 ret = send_and_recv_cmd(drv, msg); in nl80211_set_mode()
7397 msg = NULL; in nl80211_set_mode()
7401 nlmsg_free(msg); in nl80211_set_mode()
7633 struct nl_msg *msg; in wpa_driver_nl80211_set_supp_port() local
7653 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_STATION)) || in wpa_driver_nl80211_set_supp_port()
7654 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, connected_addr) || in wpa_driver_nl80211_set_supp_port()
7655 nla_put(msg, NL80211_ATTR_STA_FLAGS2, sizeof(upd), &upd)) { in wpa_driver_nl80211_set_supp_port()
7656 nlmsg_free(msg); in wpa_driver_nl80211_set_supp_port()
7660 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_set_supp_port()
7685 static int get_key_handler(struct nl_msg *msg, void *arg) in get_key_handler() argument
7688 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_key_handler()
7702 nl80211_nlmsg_clear(msg); in get_key_handler()
7712 struct nl_msg *msg; in i802_get_seqnum() local
7715 msg = nl80211_ifindex_msg(drv, if_nametoindex(iface), 0, in i802_get_seqnum()
7717 if (!msg || in i802_get_seqnum()
7718 (addr && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) || in i802_get_seqnum()
7720 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) || in i802_get_seqnum()
7721 nla_put_u8(msg, NL80211_ATTR_KEY_IDX, idx)) { in i802_get_seqnum()
7722 nlmsg_free(msg); in i802_get_seqnum()
7727 res = send_and_recv_resp(drv, msg, get_key_handler, seq); in i802_get_seqnum()
7742 struct nl_msg *msg; in i802_set_rts() local
7751 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_SET_WIPHY)) || in i802_set_rts()
7752 nla_put_u32(msg, NL80211_ATTR_WIPHY_RTS_THRESHOLD, val)) { in i802_set_rts()
7753 nlmsg_free(msg); in i802_set_rts()
7757 ret = send_and_recv_cmd(drv, msg); in i802_set_rts()
7770 struct nl_msg *msg; in i802_set_frag() local
7779 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_SET_WIPHY)) || in i802_set_frag()
7780 nla_put_u32(msg, NL80211_ATTR_WIPHY_FRAG_THRESHOLD, val)) { in i802_set_frag()
7781 nlmsg_free(msg); in i802_set_frag()
7785 ret = send_and_recv_cmd(drv, msg); in i802_set_frag()
7797 struct nl_msg *msg; in i802_flush() local
7811 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_STATION); in i802_flush()
7813 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) in i802_flush()
7816 res = send_and_recv_cmd(bss->drv, msg); in i802_flush()
7823 nlmsg_free(msg); in i802_flush()
7858 static int get_sta_handler(struct nl_msg *msg, void *arg) in get_sta_handler() argument
7861 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_sta_handler()
8139 struct nl_msg *msg; in nl80211_get_link_signal() local
8144 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_STATION)) || in nl80211_get_link_signal()
8145 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid)) { in nl80211_get_link_signal()
8146 nlmsg_free(msg); in nl80211_get_link_signal()
8150 return send_and_recv_resp(drv, msg, get_sta_handler, data); in nl80211_get_link_signal()
8158 struct nl_msg *msg; in i802_read_sta_data() local
8160 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_GET_STATION)) || in i802_read_sta_data()
8161 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) { in i802_read_sta_data()
8162 nlmsg_free(msg); in i802_read_sta_data()
8166 return send_and_recv_resp(bss->drv, msg, get_sta_handler, data); in i802_read_sta_data()
8176 struct nl_msg *msg; in i802_set_tx_queue_params() local
8180 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_WIPHY); in i802_set_tx_queue_params()
8181 if (!msg) in i802_set_tx_queue_params()
8184 txq = nla_nest_start(msg, NL80211_ATTR_WIPHY_TXQ_PARAMS); in i802_set_tx_queue_params()
8189 params = nla_nest_start(msg, 1); in i802_set_tx_queue_params()
8195 if (nla_put_u8(msg, NL80211_TXQ_ATTR_QUEUE, NL80211_TXQ_Q_VO)) in i802_set_tx_queue_params()
8199 if (nla_put_u8(msg, NL80211_TXQ_ATTR_QUEUE, NL80211_TXQ_Q_VI)) in i802_set_tx_queue_params()
8203 if (nla_put_u8(msg, NL80211_TXQ_ATTR_QUEUE, NL80211_TXQ_Q_BE)) in i802_set_tx_queue_params()
8207 if (nla_put_u8(msg, NL80211_TXQ_ATTR_QUEUE, NL80211_TXQ_Q_BK)) in i802_set_tx_queue_params()
8213 if (nla_put_u16(msg, NL80211_TXQ_ATTR_TXOP, in i802_set_tx_queue_params()
8215 nla_put_u16(msg, NL80211_TXQ_ATTR_CWMIN, cw_min) || in i802_set_tx_queue_params()
8216 nla_put_u16(msg, NL80211_TXQ_ATTR_CWMAX, cw_max) || in i802_set_tx_queue_params()
8217 nla_put_u8(msg, NL80211_TXQ_ATTR_AIFS, aifs)) in i802_set_tx_queue_params()
8220 nla_nest_end(msg, params); in i802_set_tx_queue_params()
8222 nla_nest_end(msg, txq); in i802_set_tx_queue_params()
8225 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) in i802_set_tx_queue_params()
8228 res = send_and_recv_cmd(drv, msg); in i802_set_tx_queue_params()
8234 msg = NULL; in i802_set_tx_queue_params()
8236 nlmsg_free(msg); in i802_set_tx_queue_params()
8245 struct nl_msg *msg; in i802_set_sta_vlan() local
8252 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_STATION)) || in i802_set_sta_vlan()
8253 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in i802_set_sta_vlan()
8255 nla_put_u16(msg, NL80211_ATTR_VLAN_ID, vlan_id)) || in i802_set_sta_vlan()
8257 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) || in i802_set_sta_vlan()
8258 nla_put_u32(msg, NL80211_ATTR_STA_VLAN, if_nametoindex(ifname))) { in i802_set_sta_vlan()
8259 nlmsg_free(msg); in i802_set_sta_vlan()
8263 ret = send_and_recv_cmd(drv, msg); in i802_set_sta_vlan()
8817 static int nl80211_wdev_handler(struct nl_msg *msg, void *arg) in nl80211_wdev_handler() argument
8819 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in nl80211_wdev_handler()
9075 static int cookie_handler(struct nl_msg *msg, void *arg) in cookie_handler() argument
9078 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in cookie_handler()
9096 struct nl_msg *msg; in nl80211_send_frame_cmd() local
9105 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_FRAME)) || in nl80211_send_frame_cmd()
9107 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) || in nl80211_send_frame_cmd()
9108 (freq && nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq)) || in nl80211_send_frame_cmd()
9109 (wait && nla_put_u32(msg, NL80211_ATTR_DURATION, wait)) || in nl80211_send_frame_cmd()
9112 nla_put_flag(msg, NL80211_ATTR_OFFCHANNEL_TX_OK)) || in nl80211_send_frame_cmd()
9113 (no_cck && nla_put_flag(msg, NL80211_ATTR_TX_NO_CCK_RATE)) || in nl80211_send_frame_cmd()
9114 (no_ack && nla_put_flag(msg, NL80211_ATTR_DONT_WAIT_FOR_ACK)) || in nl80211_send_frame_cmd()
9115 (csa_offs && nla_put(msg, NL80211_ATTR_CSA_C_OFFSETS_TX, in nl80211_send_frame_cmd()
9117 nla_put(msg, NL80211_ATTR_FRAME, buf_len, buf)) in nl80211_send_frame_cmd()
9121 ret = send_and_recv_resp(drv, msg, cookie_handler, &cookie); in nl80211_send_frame_cmd()
9122 msg = NULL; in nl80211_send_frame_cmd()
9156 nlmsg_free(msg); in nl80211_send_frame_cmd()
9250 struct nl_msg *msg; in nl80211_frame_wait_cancel() local
9255 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_FRAME_WAIT_CANCEL)) || in nl80211_frame_wait_cancel()
9256 nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie)) { in nl80211_frame_wait_cancel()
9257 nlmsg_free(msg); in nl80211_frame_wait_cancel()
9261 ret = send_and_recv_cmd(drv, msg); in nl80211_frame_wait_cancel()
9293 static int nl80211_put_any_link_id(struct nl_msg *msg, in nl80211_put_any_link_id() argument
9326 return nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id); in nl80211_put_any_link_id()
9335 struct nl_msg *msg; in wpa_driver_nl80211_remain_on_channel() local
9339 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_REMAIN_ON_CHANNEL)) || in wpa_driver_nl80211_remain_on_channel()
9340 nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq) || in wpa_driver_nl80211_remain_on_channel()
9341 nla_put_u32(msg, NL80211_ATTR_DURATION, duration) || in wpa_driver_nl80211_remain_on_channel()
9342 nl80211_put_any_link_id(msg, &drv->sta_mlo_info, freq)) { in wpa_driver_nl80211_remain_on_channel()
9343 nlmsg_free(msg); in wpa_driver_nl80211_remain_on_channel()
9348 ret = send_and_recv_resp(drv, msg, cookie_handler, &cookie); in wpa_driver_nl80211_remain_on_channel()
9368 struct nl_msg *msg; in wpa_driver_nl80211_cancel_remain_on_channel() local
9381 msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL); in wpa_driver_nl80211_cancel_remain_on_channel()
9382 if (!msg || in wpa_driver_nl80211_cancel_remain_on_channel()
9383 nla_put_u64(msg, NL80211_ATTR_COOKIE, drv->remain_on_chan_cookie)) { in wpa_driver_nl80211_cancel_remain_on_channel()
9384 nlmsg_free(msg); in wpa_driver_nl80211_cancel_remain_on_channel()
9388 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_cancel_remain_on_channel()
9453 struct nl_msg *msg; in nl80211_disable_11b_rates() local
9462 msg = nl80211_ifindex_msg(drv, ifindex, 0, in nl80211_disable_11b_rates()
9464 if (!msg) in nl80211_disable_11b_rates()
9467 bands = nla_nest_start(msg, NL80211_ATTR_TX_RATES); in nl80211_disable_11b_rates()
9476 band = nla_nest_start(msg, NL80211_BAND_2GHZ); in nl80211_disable_11b_rates()
9478 (disabled && nla_put(msg, NL80211_TXRATE_LEGACY, 8, in nl80211_disable_11b_rates()
9481 nla_nest_end(msg, band); in nl80211_disable_11b_rates()
9483 nla_nest_end(msg, bands); in nl80211_disable_11b_rates()
9485 ret = send_and_recv_cmd(drv, msg); in nl80211_disable_11b_rates()
9495 nlmsg_free(msg); in nl80211_disable_11b_rates()
9504 struct nl_msg *msg; in nl80211_remove_link() local
9543 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_REMOVE_LINK); in nl80211_remove_link()
9544 if (!msg || in nl80211_remove_link()
9545 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) { in nl80211_remove_link()
9546 nlmsg_free(msg); in nl80211_remove_link()
9552 ret = send_and_recv_cmd(drv, msg); in nl80211_remove_link()
9659 struct nl_msg *msg; in nl80211_signal_monitor() local
9665 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_CQM)) || in nl80211_signal_monitor()
9666 !(cqm = nla_nest_start(msg, NL80211_ATTR_CQM)) || in nl80211_signal_monitor()
9667 nla_put_u32(msg, NL80211_ATTR_CQM_RSSI_THOLD, threshold) || in nl80211_signal_monitor()
9668 nla_put_u32(msg, NL80211_ATTR_CQM_RSSI_HYST, hysteresis)) { in nl80211_signal_monitor()
9669 nlmsg_free(msg); in nl80211_signal_monitor()
9672 nla_nest_end(msg, cqm); in nl80211_signal_monitor()
9674 return send_and_recv_cmd(drv, msg); in nl80211_signal_monitor()
9678 static int get_channel_width(struct nl_msg *msg, void *arg) in get_channel_width() argument
9681 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_channel_width()
9709 struct nl_msg *msg; in nl80211_get_channel_width() local
9711 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_INTERFACE); in nl80211_get_channel_width()
9712 return send_and_recv_resp(drv, msg, get_channel_width, sig); in nl80211_get_channel_width()
9739 static int get_links_noise(struct nl_msg *msg, void *arg) in get_links_noise() argument
9742 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_links_noise()
9790 struct nl_msg *msg; in nl80211_get_links_noise() local
9792 msg = nl80211_drv_msg(drv, NLM_F_DUMP, NL80211_CMD_GET_SURVEY); in nl80211_get_links_noise()
9793 return send_and_recv_resp(drv, msg, get_links_noise, mlo_sig); in nl80211_get_links_noise()
9797 static int get_links_channel_width(struct nl_msg *msg, void *arg) in get_links_channel_width() argument
9800 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_links_channel_width()
9844 struct nl_msg *msg; in nl80211_get_links_channel_width() local
9846 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_INTERFACE); in nl80211_get_links_channel_width()
9847 return send_and_recv_resp(drv, msg, get_links_channel_width, mlo_sig); in nl80211_get_links_channel_width()
10054 struct nl_msg *msg; in nl80211_pmkid() local
10061 if (!(msg = nl80211_bss_msg(bss, 0, cmd)) || in nl80211_pmkid()
10063 nla_put(msg, NL80211_ATTR_PMKID, 16, params->pmkid)) || in nl80211_pmkid()
10065 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, params->bssid)) || in nl80211_pmkid()
10067 nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, params->ssid)) || in nl80211_pmkid()
10069 nla_put(msg, NL80211_ATTR_FILS_CACHE_ID, 2, in nl80211_pmkid()
10072 nla_put_u32(msg, NL80211_ATTR_PMK_LIFETIME, in nl80211_pmkid()
10075 nla_put_u8(msg, NL80211_ATTR_PMK_REAUTH_THRESHOLD, in nl80211_pmkid()
10079 nla_put(msg, NL80211_ATTR_PMK, params->pmk_len, params->pmk))) { in nl80211_pmkid()
10080 nl80211_nlmsg_clear(msg); in nl80211_pmkid()
10081 nlmsg_free(msg); in nl80211_pmkid()
10085 return send_and_recv_cmd(bss->drv, msg); in nl80211_pmkid()
10155 struct nl_msg *msg; in nl80211_flush_pmkid() local
10158 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_FLUSH_PMKSA); in nl80211_flush_pmkid()
10159 if (!msg) in nl80211_flush_pmkid()
10161 return send_and_recv_cmd(bss->drv, msg); in nl80211_flush_pmkid()
10246 static int survey_handler(struct nl_msg *msg, void *arg) in survey_handler() argument
10249 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in survey_handler()
10306 struct nl_msg *msg; in wpa_driver_nl80211_get_survey() local
10316 msg = nl80211_drv_msg(drv, NLM_F_DUMP, NL80211_CMD_GET_SURVEY); in wpa_driver_nl80211_get_survey()
10317 if (!msg) in wpa_driver_nl80211_get_survey()
10325 err = send_and_recv_resp(drv, msg, survey_handler, in wpa_driver_nl80211_get_survey()
10346 struct nl_msg *msg; in nl80211_set_rekey_info() local
10353 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_REKEY_OFFLOAD)) || in nl80211_set_rekey_info()
10354 !(replay_nested = nla_nest_start(msg, NL80211_ATTR_REKEY_DATA)) || in nl80211_set_rekey_info()
10355 nla_put(msg, NL80211_REKEY_DATA_KEK, kek_len, kek) || in nl80211_set_rekey_info()
10356 (kck_len && nla_put(msg, NL80211_REKEY_DATA_KCK, kck_len, kck)) || in nl80211_set_rekey_info()
10357 nla_put(msg, NL80211_REKEY_DATA_REPLAY_CTR, NL80211_REPLAY_CTR_LEN, in nl80211_set_rekey_info()
10359 nl80211_nlmsg_clear(msg); in nl80211_set_rekey_info()
10360 nlmsg_free(msg); in nl80211_set_rekey_info()
10364 nla_nest_end(msg, replay_nested); in nl80211_set_rekey_info()
10366 ret = send_and_recv_cmd(drv, msg); in nl80211_set_rekey_info()
10418 struct nl_msg *msg; in nl80211_poll_client() local
10427 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_PROBE_CLIENT)) || in nl80211_poll_client()
10428 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) { in nl80211_poll_client()
10429 nlmsg_free(msg); in nl80211_poll_client()
10433 ret = send_and_recv_resp(drv, msg, cookie_handler, &cookie); in nl80211_poll_client()
10449 struct nl_msg *msg; in nl80211_set_power_save() local
10452 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_SET_POWER_SAVE)) || in nl80211_set_power_save()
10453 nla_put_u32(msg, NL80211_ATTR_PS_STATE, in nl80211_set_power_save()
10455 nlmsg_free(msg); in nl80211_set_power_save()
10459 ret = send_and_recv_cmd(bss->drv, msg); in nl80211_set_power_save()
10500 struct nl_msg *msg; in nl80211_start_radar_detection() local
10513 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_RADAR_DETECT)) || in nl80211_start_radar_detection()
10514 nl80211_put_freq_params(msg, freq) < 0) { in nl80211_start_radar_detection()
10515 nlmsg_free(msg); in nl80211_start_radar_detection()
10519 ret = send_and_recv_cmd(drv, msg); in nl80211_start_radar_detection()
10529 static int nl80211_add_peer_capab(struct nl_msg *msg, in nl80211_add_peer_capab() argument
10546 return nla_put_u32(msg, NL80211_ATTR_TDLS_PEER_CAPABILITY, in nl80211_add_peer_capab()
10556 struct nl_msg *msg; in nl80211_tdls_set_discovery_resp_link() local
10562 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_tdls_set_discovery_resp_link()
10563 nla_put_u32(msg, NL80211_ATTR_IFINDEX, drv->ifindex) || in nl80211_tdls_set_discovery_resp_link()
10564 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_tdls_set_discovery_resp_link()
10565 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_tdls_set_discovery_resp_link()
10567 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_tdls_set_discovery_resp_link()
10568 nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_TDLS_DISC_RSP_EXT_TX_LINK, in nl80211_tdls_set_discovery_resp_link()
10573 nlmsg_free(msg); in nl80211_tdls_set_discovery_resp_link()
10576 nla_nest_end(msg, params); in nl80211_tdls_set_discovery_resp_link()
10578 return send_and_recv_cmd(drv, msg); in nl80211_tdls_set_discovery_resp_link()
10594 struct nl_msg *msg; in nl80211_send_tdls_mgmt() local
10609 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_TDLS_MGMT)) || in nl80211_send_tdls_mgmt()
10610 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, dst) || in nl80211_send_tdls_mgmt()
10611 nla_put_u8(msg, NL80211_ATTR_TDLS_ACTION, action_code) || in nl80211_send_tdls_mgmt()
10612 nla_put_u8(msg, NL80211_ATTR_TDLS_DIALOG_TOKEN, dialog_token) || in nl80211_send_tdls_mgmt()
10613 nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, status_code) || in nl80211_send_tdls_mgmt()
10615 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) || in nl80211_send_tdls_mgmt()
10616 nl80211_add_peer_capab(msg, peer_capab) || in nl80211_send_tdls_mgmt()
10617 (initiator && nla_put_flag(msg, NL80211_ATTR_TDLS_INITIATOR)) || in nl80211_send_tdls_mgmt()
10618 nla_put(msg, NL80211_ATTR_IE, len, buf)) in nl80211_send_tdls_mgmt()
10621 return send_and_recv_cmd(drv, msg); in nl80211_send_tdls_mgmt()
10624 nlmsg_free(msg); in nl80211_send_tdls_mgmt()
10633 struct nl_msg *msg; in nl80211_tdls_oper() local
10664 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_TDLS_OPER)) || in nl80211_tdls_oper()
10665 nla_put_u8(msg, NL80211_ATTR_TDLS_OPERATION, nl80211_oper) || in nl80211_tdls_oper()
10666 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer)) { in nl80211_tdls_oper()
10667 nlmsg_free(msg); in nl80211_tdls_oper()
10671 res = send_and_recv_cmd(drv, msg); in nl80211_tdls_oper()
10685 struct nl_msg *msg; in nl80211_tdls_enable_channel_switch() local
10695 msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_TDLS_CHANNEL_SWITCH); in nl80211_tdls_enable_channel_switch()
10696 if (!msg || in nl80211_tdls_enable_channel_switch()
10697 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in nl80211_tdls_enable_channel_switch()
10698 nla_put_u8(msg, NL80211_ATTR_OPER_CLASS, oper_class) || in nl80211_tdls_enable_channel_switch()
10699 (ret = nl80211_put_freq_params(msg, params))) { in nl80211_tdls_enable_channel_switch()
10700 nlmsg_free(msg); in nl80211_tdls_enable_channel_switch()
10705 return send_and_recv_cmd(drv, msg); in nl80211_tdls_enable_channel_switch()
10714 struct nl_msg *msg; in nl80211_tdls_disable_channel_switch() local
10722 msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH); in nl80211_tdls_disable_channel_switch()
10723 if (!msg || in nl80211_tdls_disable_channel_switch()
10724 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) { in nl80211_tdls_disable_channel_switch()
10725 nlmsg_free(msg); in nl80211_tdls_disable_channel_switch()
10731 return send_and_recv_cmd(drv, msg); in nl80211_tdls_disable_channel_switch()
10930 struct nl_msg *msg; in wpa_driver_nl80211_update_ft_ies() local
10936 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_UPDATE_FT_IES)) || in wpa_driver_nl80211_update_ft_ies()
10937 nla_put(msg, NL80211_ATTR_IE, ies_len, ies) || in wpa_driver_nl80211_update_ft_ies()
10938 nla_put_u16(msg, NL80211_ATTR_MDID, mdid)) { in wpa_driver_nl80211_update_ft_ies()
10939 nlmsg_free(msg); in wpa_driver_nl80211_update_ft_ies()
10943 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_update_ft_ies()
10957 struct nl_msg *msg; in nl80211_update_dh_ie() local
10963 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_UPDATE_OWE_INFO)) || in nl80211_update_dh_ie()
10964 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer_mac) || in nl80211_update_dh_ie()
10965 nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, reason_code) || in nl80211_update_dh_ie()
10966 (ie && nla_put(msg, NL80211_ATTR_IE, ie_len, ie))) { in nl80211_update_dh_ie()
10967 nlmsg_free(msg); in nl80211_update_dh_ie()
10971 ret = send_and_recv_cmd(drv, msg); in nl80211_update_dh_ie()
11025 struct nl_msg *msg; in wpa_driver_nl80211_status() local
11216 msg = nlmsg_alloc(); in wpa_driver_nl80211_status()
11217 if (msg && in wpa_driver_nl80211_status()
11218 nl80211_cmd(drv, msg, 0, NL80211_CMD_GET_REG) && in wpa_driver_nl80211_status()
11219 nla_put_u32(msg, NL80211_ATTR_WIPHY, drv->wiphy_idx) == 0) { in wpa_driver_nl80211_status()
11220 if (send_and_recv_resp(drv, msg, nl80211_get_country, in wpa_driver_nl80211_status()
11230 nlmsg_free(msg); in wpa_driver_nl80211_status()
11237 static int set_beacon_data(struct nl_msg *msg, struct beacon_data *settings) in set_beacon_data() argument
11240 nla_put(msg, NL80211_ATTR_BEACON_HEAD, in set_beacon_data()
11243 nla_put(msg, NL80211_ATTR_BEACON_TAIL, in set_beacon_data()
11246 nla_put(msg, NL80211_ATTR_IE, in set_beacon_data()
11249 nla_put(msg, NL80211_ATTR_IE_PROBE_RESP, in set_beacon_data()
11252 nla_put(msg, NL80211_ATTR_IE_ASSOC_RESP, in set_beacon_data()
11255 nla_put(msg, NL80211_ATTR_PROBE_RESP, in set_beacon_data()
11265 struct nl_msg *msg; in nl80211_switch_channel() local
11349 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_CHANNEL_SWITCH)) || in nl80211_switch_channel()
11350 nla_put_u32(msg, NL80211_ATTR_CH_SWITCH_COUNT, in nl80211_switch_channel()
11352 (ret = nl80211_put_freq_params(msg, &settings->freq_params)) || in nl80211_switch_channel()
11354 nla_put_flag(msg, NL80211_ATTR_CH_SWITCH_BLOCK_TX)) || in nl80211_switch_channel()
11356 nla_put_u32(msg, NL80211_ATTR_PUNCT_BITMAP, in nl80211_switch_channel()
11359 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, settings->link_id))) in nl80211_switch_channel()
11363 ret = set_beacon_data(msg, &settings->beacon_after); in nl80211_switch_channel()
11368 beacon_csa = nla_nest_start(msg, NL80211_ATTR_CSA_IES); in nl80211_switch_channel()
11372 ret = set_beacon_data(msg, &settings->beacon_csa); in nl80211_switch_channel()
11376 if (nla_put(msg, NL80211_ATTR_CSA_C_OFF_BEACON, in nl80211_switch_channel()
11380 nla_put(msg, NL80211_ATTR_CSA_C_OFF_PRESP, in nl80211_switch_channel()
11385 nla_nest_end(msg, beacon_csa); in nl80211_switch_channel()
11389 nl80211_unsol_bcast_probe_resp(bss, msg, &settings->ubpr) < 0) in nl80211_switch_channel()
11393 ret = send_and_recv_cmd(drv, msg); in nl80211_switch_channel()
11403 nlmsg_free(msg); in nl80211_switch_channel()
11415 struct nl_msg *msg; in nl80211_switch_color() local
11440 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_COLOR_CHANGE_REQUEST); in nl80211_switch_color()
11441 if (!msg || in nl80211_switch_color()
11442 nla_put_u8(msg, NL80211_ATTR_COLOR_CHANGE_COUNT, in nl80211_switch_color()
11444 nla_put_u8(msg, NL80211_ATTR_COLOR_CHANGE_COLOR, in nl80211_switch_color()
11449 ret = set_beacon_data(msg, &settings->beacon_after); in nl80211_switch_color()
11454 beacon_cca = nla_nest_start(msg, NL80211_ATTR_COLOR_CHANGE_ELEMS); in nl80211_switch_color()
11460 ret = set_beacon_data(msg, &settings->beacon_cca); in nl80211_switch_color()
11464 if (nla_put_u16(msg, NL80211_ATTR_CNTDWN_OFFS_BEACON, in nl80211_switch_color()
11467 nla_put_u16(msg, NL80211_ATTR_CNTDWN_OFFS_PRESP, in nl80211_switch_color()
11473 nla_nest_end(msg, beacon_cca); in nl80211_switch_color()
11476 nl80211_unsol_bcast_probe_resp(bss, msg, &settings->ubpr) < 0) { in nl80211_switch_color()
11487 if (nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, in nl80211_switch_color()
11489 nlmsg_free(msg); in nl80211_switch_color()
11495 ret = send_and_recv_cmd(drv, msg); in nl80211_switch_color()
11504 nlmsg_free(msg); in nl80211_switch_color()
11516 struct nl_msg *msg; in nl80211_add_ts() local
11526 msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_ADD_TX_TS); in nl80211_add_ts()
11527 if (!msg || in nl80211_add_ts()
11528 nla_put_u8(msg, NL80211_ATTR_TSID, tsid) || in nl80211_add_ts()
11529 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in nl80211_add_ts()
11530 nla_put_u8(msg, NL80211_ATTR_USER_PRIO, user_priority) || in nl80211_add_ts()
11531 nla_put_u16(msg, NL80211_ATTR_ADMITTED_TIME, admitted_time)) { in nl80211_add_ts()
11532 nlmsg_free(msg); in nl80211_add_ts()
11536 ret = send_and_recv_cmd(drv, msg); in nl80211_add_ts()
11548 struct nl_msg *msg; in nl80211_del_ts() local
11556 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_DEL_TX_TS)) || in nl80211_del_ts()
11557 nla_put_u8(msg, NL80211_ATTR_TSID, tsid) || in nl80211_del_ts()
11558 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) { in nl80211_del_ts()
11559 nlmsg_free(msg); in nl80211_del_ts()
11563 ret = send_and_recv_cmd(drv, msg); in nl80211_del_ts()
11572 static int cmd_reply_handler(struct nl_msg *msg, void *arg) in cmd_reply_handler() argument
11574 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in cmd_reply_handler()
11593 static int vendor_reply_handler(struct nl_msg *msg, void *arg) in vendor_reply_handler() argument
11597 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in vendor_reply_handler()
11651 struct nl_msg *msg; in nl80211_vendor_cmd() local
11656 msg = nlmsg_alloc(); in nl80211_vendor_cmd()
11657 if (!msg) in nl80211_vendor_cmd()
11660 nl80211_cmd(drv, msg, 0, subcmd); in nl80211_vendor_cmd()
11661 if (nlmsg_append(msg, (void *) data, data_len, NLMSG_ALIGNTO) < in nl80211_vendor_cmd()
11667 ret = send_and_recv(drv->global, bss->nl_connect, msg, in nl80211_vendor_cmd()
11684 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_VENDOR)) || in nl80211_vendor_cmd()
11685 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, vendor_id) || in nl80211_vendor_cmd()
11686 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, subcmd) || in nl80211_vendor_cmd()
11688 nla_put(msg, nla_flag | NL80211_ATTR_VENDOR_DATA, in nl80211_vendor_cmd()
11692 ret = send_and_recv_resp(drv, msg, vendor_reply_handler, buf); in nl80211_vendor_cmd()
11699 nlmsg_free(msg); in nl80211_vendor_cmd()
11709 struct nl_msg *msg; in nl80211_set_qos_map() local
11715 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_SET_QOS_MAP)) || in nl80211_set_qos_map()
11716 nla_put(msg, NL80211_ATTR_QOS_MAP, qos_map_set_len, qos_map_set)) { in nl80211_set_qos_map()
11717 nlmsg_free(msg); in nl80211_set_qos_map()
11721 ret = send_and_recv_cmd(drv, msg); in nl80211_set_qos_map()
11729 static int get_wowlan_handler(struct nl_msg *msg, void *arg) in get_wowlan_handler() argument
11732 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in get_wowlan_handler()
11748 struct nl_msg *msg; in nl80211_get_wowlan() local
11754 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_GET_WOWLAN); in nl80211_get_wowlan()
11756 ret = send_and_recv_resp(drv, msg, get_wowlan_handler, &wowlan_enabled); in nl80211_get_wowlan()
11774 struct nl_msg *msg; in nl80211_set_wowlan() local
11780 if (!(msg = nl80211_cmd_msg(bss, 0, NL80211_CMD_SET_WOWLAN)) || in nl80211_set_wowlan()
11781 !(wowlan_triggers = nla_nest_start(msg, in nl80211_set_wowlan()
11784 nla_put_flag(msg, NL80211_WOWLAN_TRIG_ANY)) || in nl80211_set_wowlan()
11786 nla_put_flag(msg, NL80211_WOWLAN_TRIG_DISCONNECT)) || in nl80211_set_wowlan()
11788 nla_put_flag(msg, NL80211_WOWLAN_TRIG_MAGIC_PKT)) || in nl80211_set_wowlan()
11790 nla_put_flag(msg, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE)) || in nl80211_set_wowlan()
11792 nla_put_flag(msg, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST)) || in nl80211_set_wowlan()
11794 nla_put_flag(msg, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE)) || in nl80211_set_wowlan()
11796 nla_put_flag(msg, NL80211_WOWLAN_TRIG_RFKILL_RELEASE))) { in nl80211_set_wowlan()
11797 nlmsg_free(msg); in nl80211_set_wowlan()
11801 nla_nest_end(msg, wowlan_triggers); in nl80211_set_wowlan()
11803 ret = send_and_recv_cmd(drv, msg); in nl80211_set_wowlan()
11816 struct nl_msg *msg; in nl80211_roaming() local
11827 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_roaming()
11828 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_roaming()
11829 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_roaming()
11831 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_roaming()
11832 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_ROAMING_POLICY, in nl80211_roaming()
11836 nla_put(msg, QCA_WLAN_VENDOR_ATTR_MAC_ADDR, ETH_ALEN, bssid))) { in nl80211_roaming()
11837 nlmsg_free(msg); in nl80211_roaming()
11840 nla_nest_end(msg, params); in nl80211_roaming()
11842 return send_and_recv_cmd(drv, msg); in nl80211_roaming()
11850 struct nl_msg *msg; in nl80211_disable_fils() local
11858 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_disable_fils()
11859 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_disable_fils()
11860 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_disable_fils()
11862 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_disable_fils()
11863 nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_CONFIG_DISABLE_FILS, in nl80211_disable_fils()
11865 nlmsg_free(msg); in nl80211_disable_fils()
11868 nla_nest_end(msg, params); in nl80211_disable_fils()
11870 return send_and_recv_cmd(drv, msg); in nl80211_disable_fils()
11882 struct nl_msg *msg; in nl80211_set_bssid_tmp_disallow() local
11893 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_set_bssid_tmp_disallow()
11894 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_set_bssid_tmp_disallow()
11895 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_set_bssid_tmp_disallow()
11897 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_set_bssid_tmp_disallow()
11898 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_ROAMING_SUBCMD, in nl80211_set_bssid_tmp_disallow()
11900 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_ROAMING_REQ_ID, in nl80211_set_bssid_tmp_disallow()
11902 nla_put_u32(msg, in nl80211_set_bssid_tmp_disallow()
11908 msg, QCA_WLAN_VENDOR_ATTR_ROAMING_PARAM_SET_BSSID_PARAMS); in nl80211_set_bssid_tmp_disallow()
11913 attr = nla_nest_start(msg, i); in nl80211_set_bssid_tmp_disallow()
11916 if (nla_put(msg, in nl80211_set_bssid_tmp_disallow()
11922 nla_nest_end(msg, attr); in nl80211_set_bssid_tmp_disallow()
11924 nla_nest_end(msg, nlbssids); in nl80211_set_bssid_tmp_disallow()
11925 nla_nest_end(msg, params); in nl80211_set_bssid_tmp_disallow()
11927 return send_and_recv_cmd(drv, msg); in nl80211_set_bssid_tmp_disallow()
11930 nlmsg_free(msg); in nl80211_set_bssid_tmp_disallow()
11939 struct nl_msg *msg; in nl80211_add_sta_node() local
11947 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_add_sta_node()
11948 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_add_sta_node()
11949 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_add_sta_node()
11951 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_add_sta_node()
11953 nla_put(msg, QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_MAC_ADDR, ETH_ALEN, in nl80211_add_sta_node()
11955 nla_put_u16(msg, QCA_WLAN_VENDOR_ATTR_ADD_STA_NODE_AUTH_ALGO, in nl80211_add_sta_node()
11957 nlmsg_free(msg); in nl80211_add_sta_node()
11963 nla_nest_end(msg, params); in nl80211_add_sta_node()
11965 return send_and_recv_cmd(drv, msg); in nl80211_add_sta_node()
12028 static int nl80211_put_mesh_id(struct nl_msg *msg, const u8 *mesh_id, in nl80211_put_mesh_id() argument
12034 return nla_put(msg, NL80211_ATTR_MESH_ID, mesh_id_len, mesh_id); in nl80211_put_mesh_id()
12041 static int nl80211_put_mesh_config(struct nl_msg *msg, in nl80211_put_mesh_config() argument
12046 container = nla_nest_start(msg, NL80211_ATTR_MESH_CONFIG); in nl80211_put_mesh_config()
12051 nla_put_u8(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS, in nl80211_put_mesh_config()
12054 nla_put_u8(msg, NL80211_MESHCONF_FORWARDING, in nl80211_put_mesh_config()
12057 nla_put_u16(msg, NL80211_MESHCONF_MAX_PEER_LINKS, in nl80211_put_mesh_config()
12060 nla_put_u32(msg, NL80211_MESHCONF_RSSI_THRESHOLD, in nl80211_put_mesh_config()
12069 nla_put_u32(msg, NL80211_MESHCONF_PLINK_TIMEOUT, in nl80211_put_mesh_config()
12076 nla_put_u16(msg, NL80211_MESHCONF_HT_OPMODE, params->ht_opmode)) { in nl80211_put_mesh_config()
12081 nla_nest_end(msg, container); in nl80211_put_mesh_config()
12091 struct nl_msg *msg; in nl80211_join_mesh() local
12096 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_JOIN_MESH); in nl80211_join_mesh()
12097 if (!msg || in nl80211_join_mesh()
12098 nl80211_put_freq_params(msg, &params->freq) || in nl80211_join_mesh()
12099 nl80211_put_basic_rates(msg, params->basic_rates) || in nl80211_join_mesh()
12100 nl80211_put_mesh_id(msg, params->meshid, params->meshid_len) || in nl80211_join_mesh()
12101 nl80211_put_beacon_int(msg, params->beacon_int) || in nl80211_join_mesh()
12102 nl80211_put_dtim_period(msg, params->dtim_period)) in nl80211_join_mesh()
12107 if (params->handle_dfs && nla_put_flag(msg, NL80211_ATTR_HANDLE_DFS)) in nl80211_join_mesh()
12110 container = nla_nest_start(msg, NL80211_ATTR_MESH_SETUP); in nl80211_join_mesh()
12116 if (nla_put(msg, NL80211_MESH_SETUP_IE, params->ie_len, in nl80211_join_mesh()
12122 if (nla_put_u8(msg, NL80211_MESH_SETUP_AUTH_PROTOCOL, 0x1) || in nl80211_join_mesh()
12123 nla_put_flag(msg, NL80211_MESH_SETUP_USERSPACE_AUTH)) in nl80211_join_mesh()
12127 nla_put_flag(msg, NL80211_MESH_SETUP_USERSPACE_AMPE)) in nl80211_join_mesh()
12130 nla_put_flag(msg, NL80211_MESH_SETUP_USERSPACE_MPM)) in nl80211_join_mesh()
12132 nla_nest_end(msg, container); in nl80211_join_mesh()
12137 if (nl80211_put_mesh_config(msg, &params->conf) < 0) in nl80211_join_mesh()
12140 if (nla_put_flag(msg, NL80211_ATTR_SOCKET_OWNER)) in nl80211_join_mesh()
12142 ret = send_and_recv(drv->global, bss->nl_connect, msg, NULL, NULL, NULL, in nl80211_join_mesh()
12144 msg = NULL; in nl80211_join_mesh()
12155 nlmsg_free(msg); in nl80211_join_mesh()
12195 struct nl_msg *msg; in wpa_driver_nl80211_leave_mesh() local
12199 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_LEAVE_MESH); in wpa_driver_nl80211_leave_mesh()
12200 ret = send_and_recv(drv->global, bss->nl_connect, msg, NULL, NULL, NULL, in wpa_driver_nl80211_leave_mesh()
12226 struct nl_msg *msg; in nl80211_probe_mesh_link() local
12229 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_PROBE_MESH_LINK); in nl80211_probe_mesh_link()
12230 if (!msg || in nl80211_probe_mesh_link()
12231 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in nl80211_probe_mesh_link()
12232 nla_put(msg, NL80211_ATTR_FRAME, len, eth)) { in nl80211_probe_mesh_link()
12233 nlmsg_free(msg); in nl80211_probe_mesh_link()
12237 ret = send_and_recv_cmd(drv, msg); in nl80211_probe_mesh_link()
12263 struct nl_msg *msg; in wpa_driver_br_add_ip_neigh() local
12292 msg = nlmsg_alloc_simple(RTM_NEWNEIGH, NLM_F_CREATE); in wpa_driver_br_add_ip_neigh()
12293 if (!msg) in wpa_driver_br_add_ip_neigh()
12297 if (nlmsg_append(msg, &nhdr, sizeof(nhdr), NLMSG_ALIGNTO) < 0 || in wpa_driver_br_add_ip_neigh()
12298 nla_put(msg, NDA_DST, addrsize, (void *) ipaddr) || in wpa_driver_br_add_ip_neigh()
12299 nla_put(msg, NDA_LLADDR, ETH_ALEN, (void *) addr)) in wpa_driver_br_add_ip_neigh()
12302 res = nl_send_auto_complete(drv->rtnl_sk, msg); in wpa_driver_br_add_ip_neigh()
12313 nlmsg_free(msg); in wpa_driver_br_add_ip_neigh()
12327 struct nl_msg *msg; in wpa_driver_br_delete_ip_neigh() local
12356 msg = nlmsg_alloc_simple(RTM_DELNEIGH, NLM_F_CREATE); in wpa_driver_br_delete_ip_neigh()
12357 if (!msg) in wpa_driver_br_delete_ip_neigh()
12361 if (nlmsg_append(msg, &nhdr, sizeof(nhdr), NLMSG_ALIGNTO) < 0 || in wpa_driver_br_delete_ip_neigh()
12362 nla_put(msg, NDA_DST, addrsize, (void *) ipaddr)) in wpa_driver_br_delete_ip_neigh()
12365 res = nl_send_auto_complete(drv->rtnl_sk, msg); in wpa_driver_br_delete_ip_neigh()
12376 nlmsg_free(msg); in wpa_driver_br_delete_ip_neigh()
12513 static int add_acs_ch_list(struct nl_msg *msg, const int *freq_list) in add_acs_ch_list() argument
12548 ret = nla_put(msg, QCA_WLAN_VENDOR_ATTR_ACS_CH_LIST, in add_acs_ch_list()
12556 static int add_acs_freq_list(struct nl_msg *msg, const int *freq_list) in add_acs_freq_list() argument
12569 ret = nla_put(msg, QCA_WLAN_VENDOR_ATTR_ACS_FREQ_LIST, in add_acs_freq_list()
12579 struct nl_msg *msg; in nl80211_qca_do_acs() local
12588 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_qca_do_acs()
12589 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_qca_do_acs()
12590 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_qca_do_acs()
12592 !(data = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_qca_do_acs()
12593 nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_ACS_HW_MODE, mode) || in nl80211_qca_do_acs()
12595 nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_HT_ENABLED)) || in nl80211_qca_do_acs()
12597 nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_HT40_ENABLED)) || in nl80211_qca_do_acs()
12599 nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_VHT_ENABLED)) || in nl80211_qca_do_acs()
12601 nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_EHT_ENABLED)) || in nl80211_qca_do_acs()
12602 nla_put_u16(msg, QCA_WLAN_VENDOR_ATTR_ACS_CHWIDTH, in nl80211_qca_do_acs()
12604 add_acs_ch_list(msg, params->freq_list) || in nl80211_qca_do_acs()
12605 add_acs_freq_list(msg, params->freq_list) || in nl80211_qca_do_acs()
12607 nla_put_flag(msg, QCA_WLAN_VENDOR_ATTR_ACS_EDMG_ENABLED)) || in nl80211_qca_do_acs()
12609 nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_ACS_LINK_ID, in nl80211_qca_do_acs()
12611 nlmsg_free(msg); in nl80211_qca_do_acs()
12614 nla_nest_end(msg, data); in nl80211_qca_do_acs()
12622 ret = send_and_recv_cmd(drv, msg); in nl80211_qca_do_acs()
12636 struct nl_msg *msg; in nl80211_set_band() local
12666 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_set_band()
12667 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_set_band()
12668 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_set_band()
12670 !(data = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_set_band()
12671 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SETBAND_VALUE, in nl80211_set_band()
12673 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SETBAND_MASK, in nl80211_set_band()
12675 nlmsg_free(msg); in nl80211_set_band()
12678 nla_nest_end(msg, data); in nl80211_set_band()
12680 ret = send_and_recv_cmd(drv, msg); in nl80211_set_band()
12719 static int preferred_freq_info_handler(struct nl_msg *msg, void *arg) in preferred_freq_info_handler() argument
12722 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in preferred_freq_info_handler()
12827 struct nl_msg *msg; in nl80211_get_pref_freq_list() local
12863 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_get_pref_freq_list()
12864 nla_put_u32(msg, NL80211_ATTR_IFINDEX, drv->ifindex) || in nl80211_get_pref_freq_list()
12865 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_get_pref_freq_list()
12866 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_get_pref_freq_list()
12868 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_get_pref_freq_list()
12869 nla_put_u32(msg, in nl80211_get_pref_freq_list()
12875 nlmsg_free(msg); in nl80211_get_pref_freq_list()
12878 nla_nest_end(msg, params); in nl80211_get_pref_freq_list()
12882 ret = send_and_recv_resp(drv, msg, preferred_freq_info_handler, &param); in nl80211_get_pref_freq_list()
12906 struct nl_msg *msg; in nl80211_set_prob_oper_freq() local
12917 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_set_prob_oper_freq()
12918 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_set_prob_oper_freq()
12919 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_set_prob_oper_freq()
12921 !(params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in nl80211_set_prob_oper_freq()
12922 nla_put_u32(msg, in nl80211_set_prob_oper_freq()
12925 nla_put_u32(msg, in nl80211_set_prob_oper_freq()
12931 nlmsg_free(msg); in nl80211_set_prob_oper_freq()
12934 nla_nest_end(msg, params); in nl80211_set_prob_oper_freq()
12936 ret = send_and_recv_cmd(drv, msg); in nl80211_set_prob_oper_freq()
12937 msg = NULL; in nl80211_set_prob_oper_freq()
12943 nlmsg_free(msg); in nl80211_set_prob_oper_freq()
12956 struct nl_msg *msg; in nl80211_p2p_lo_start() local
12967 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_p2p_lo_start()
12968 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_p2p_lo_start()
12969 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_p2p_lo_start()
12973 container = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_p2p_lo_start()
12977 if (nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_CHANNEL, in nl80211_p2p_lo_start()
12979 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_PERIOD, in nl80211_p2p_lo_start()
12981 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_INTERVAL, in nl80211_p2p_lo_start()
12983 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_COUNT, in nl80211_p2p_lo_start()
12985 nla_put(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_DEVICE_TYPES, in nl80211_p2p_lo_start()
12987 nla_put(msg, QCA_WLAN_VENDOR_ATTR_P2P_LISTEN_OFFLOAD_VENDOR_IE, in nl80211_p2p_lo_start()
12991 nla_nest_end(msg, container); in nl80211_p2p_lo_start()
12992 ret = send_and_recv_cmd(drv, msg); in nl80211_p2p_lo_start()
12993 msg = NULL; in nl80211_p2p_lo_start()
13003 nlmsg_free(msg); in nl80211_p2p_lo_start()
13012 struct nl_msg *msg; in nl80211_p2p_lo_stop() local
13019 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_p2p_lo_stop()
13020 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_p2p_lo_stop()
13021 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_p2p_lo_stop()
13023 nlmsg_free(msg); in nl80211_p2p_lo_stop()
13027 return send_and_recv_cmd(drv, msg); in nl80211_p2p_lo_stop()
13035 struct nl_msg *msg; in nl80211_set_tdls_mode() local
13050 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_set_tdls_mode()
13051 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_set_tdls_mode()
13052 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_set_tdls_mode()
13056 params = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_set_tdls_mode()
13060 if (nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_TDLS_CONFIG_TRIGGER_MODE, in nl80211_set_tdls_mode()
13064 nla_nest_end(msg, params); in nl80211_set_tdls_mode()
13066 ret = send_and_recv_cmd(drv, msg); in nl80211_set_tdls_mode()
13067 msg = NULL; in nl80211_set_tdls_mode()
13076 nlmsg_free(msg); in nl80211_set_tdls_mode()
13131 nl80211_get_bss_transition_status_handler(struct nl_msg *msg, void *arg) in nl80211_get_bss_transition_status_handler() argument
13149 struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); in nl80211_get_bss_transition_status_handler()
13191 struct nl_msg *msg; in nl80211_get_bss_transition_status() local
13220 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_get_bss_transition_status()
13221 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_get_bss_transition_status()
13222 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_get_bss_transition_status()
13226 attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_get_bss_transition_status()
13230 if (nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_BTM_MBO_TRANSITION_REASON, in nl80211_get_bss_transition_status()
13234 attr1 = nla_nest_start(msg, QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO); in nl80211_get_bss_transition_status()
13245 attr2 = nla_nest_start(msg, i); in nl80211_get_bss_transition_status()
13247 nla_put(msg, QCA_WLAN_VENDOR_ATTR_BTM_CANDIDATE_INFO_BSSID, in nl80211_get_bss_transition_status()
13251 nla_nest_end(msg, attr2); in nl80211_get_bss_transition_status()
13254 nla_nest_end(msg, attr1); in nl80211_get_bss_transition_status()
13255 nla_nest_end(msg, attr); in nl80211_get_bss_transition_status()
13257 ret = send_and_recv_resp(drv, msg, in nl80211_get_bss_transition_status()
13260 msg = NULL; in nl80211_get_bss_transition_status()
13270 nlmsg_free(msg); in nl80211_get_bss_transition_status()
13287 struct nl_msg *msg; in nl80211_ignore_assoc_disallow() local
13294 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) || in nl80211_ignore_assoc_disallow()
13295 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_ignore_assoc_disallow()
13296 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_ignore_assoc_disallow()
13300 attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_ignore_assoc_disallow()
13306 if (nla_put_u8(msg, QCA_WLAN_VENDOR_ATTR_CONFIG_IGNORE_ASSOC_DISALLOWED, in nl80211_ignore_assoc_disallow()
13310 nla_nest_end(msg, attr); in nl80211_ignore_assoc_disallow()
13312 ret = send_and_recv_cmd(drv, msg); in nl80211_ignore_assoc_disallow()
13313 msg = NULL; in nl80211_ignore_assoc_disallow()
13322 nlmsg_free(msg); in nl80211_ignore_assoc_disallow()
13335 struct nl_msg *msg = NULL; in nl80211_send_pasn_resp() local
13342 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR); in nl80211_send_pasn_resp()
13343 if (!msg || in nl80211_send_pasn_resp()
13344 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_send_pasn_resp()
13345 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_send_pasn_resp()
13349 attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_send_pasn_resp()
13353 nlpeers = nla_nest_start(msg, QCA_WLAN_VENDOR_ATTR_PASN_PEERS); in nl80211_send_pasn_resp()
13358 attr1 = nla_nest_start(msg, i); in nl80211_send_pasn_resp()
13360 nla_put(msg, QCA_WLAN_VENDOR_ATTR_PASN_PEER_SRC_ADDR, in nl80211_send_pasn_resp()
13362 nla_put(msg, QCA_WLAN_VENDOR_ATTR_PASN_PEER_MAC_ADDR, in nl80211_send_pasn_resp()
13367 nla_put_flag(msg, in nl80211_send_pasn_resp()
13377 nla_nest_end(msg, attr1); in nl80211_send_pasn_resp()
13380 nla_nest_end(msg, nlpeers); in nl80211_send_pasn_resp()
13381 nla_nest_end(msg, attr); in nl80211_send_pasn_resp()
13383 return send_and_recv_cmd(drv, msg); in nl80211_send_pasn_resp()
13386 nlmsg_free(msg); in nl80211_send_pasn_resp()
13409 struct nl_msg *msg = NULL; in nl80211_set_secure_ranging_ctx() local
13425 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR); in nl80211_set_secure_ranging_ctx()
13426 if (!msg || in nl80211_set_secure_ranging_ctx()
13427 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_QCA) || in nl80211_set_secure_ranging_ctx()
13428 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in nl80211_set_secure_ranging_ctx()
13432 attr = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_set_secure_ranging_ctx()
13436 if (nla_put(msg, QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_PEER_MAC_ADDR, in nl80211_set_secure_ranging_ctx()
13438 nla_put(msg, QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_SRC_ADDR, in nl80211_set_secure_ranging_ctx()
13440 nla_put_u32(msg, QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_ACTION, in nl80211_set_secure_ranging_ctx()
13447 nla_put_u32(msg, in nl80211_set_secure_ranging_ctx()
13454 if (nla_put(msg, QCA_WLAN_VENDOR_ATTR_SECURE_RANGING_CTX_TK, in nl80211_set_secure_ranging_ctx()
13467 msg, in nl80211_set_secure_ranging_ctx()
13470 nla_put(msg, in nl80211_set_secure_ranging_ctx()
13477 nla_nest_end(msg, attr); in nl80211_set_secure_ranging_ctx()
13479 ret = send_and_recv_cmd(drv, msg); in nl80211_set_secure_ranging_ctx()
13486 nlmsg_free(msg); in nl80211_set_secure_ranging_ctx()
13499 struct nl_msg *msg; in wpa_driver_do_broadcom_acs() local
13508 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR); in wpa_driver_do_broadcom_acs()
13509 if (!msg || in wpa_driver_do_broadcom_acs()
13510 nla_put_u32(msg, NL80211_ATTR_VENDOR_ID, OUI_BRCM) || in wpa_driver_do_broadcom_acs()
13511 nla_put_u32(msg, NL80211_ATTR_VENDOR_SUBCMD, in wpa_driver_do_broadcom_acs()
13513 !(data = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA)) || in wpa_driver_do_broadcom_acs()
13514 nla_put_u8(msg, BRCM_VENDOR_ATTR_ACS_HW_MODE, params->hw_mode) || in wpa_driver_do_broadcom_acs()
13515 nla_put_u8(msg, BRCM_VENDOR_ATTR_ACS_HT_ENABLED, in wpa_driver_do_broadcom_acs()
13517 nla_put_u8(msg, BRCM_VENDOR_ATTR_ACS_HT40_ENABLED, in wpa_driver_do_broadcom_acs()
13519 nla_put_u8(msg, BRCM_VENDOR_ATTR_ACS_VHT_ENABLED, in wpa_driver_do_broadcom_acs()
13521 nla_put_u16(msg, BRCM_VENDOR_ATTR_ACS_CHWIDTH, params->ch_width) || in wpa_driver_do_broadcom_acs()
13523 nla_put(msg, BRCM_VENDOR_ATTR_ACS_FREQ_LIST, in wpa_driver_do_broadcom_acs()
13526 nla_nest_end(msg, data); in wpa_driver_do_broadcom_acs()
13533 ret = send_and_recv_cmd(drv, msg); in wpa_driver_do_broadcom_acs()
13540 msg = NULL; in wpa_driver_do_broadcom_acs()
13542 nlmsg_free(msg); in wpa_driver_do_broadcom_acs()
13749 struct nl_msg *msg; in nl80211_update_connection_params() local
13761 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_UPDATE_CONNECT_PARAMS); in nl80211_update_connection_params()
13762 if (!msg) in nl80211_update_connection_params()
13769 if (nla_put(msg, NL80211_ATTR_IE, params->wpa_ie_len, in nl80211_update_connection_params()
13779 nla_put_u32(msg, NL80211_ATTR_AUTH_TYPE, type)) in nl80211_update_connection_params()
13785 nl80211_put_fils_connect_params(drv, params, msg)) in nl80211_update_connection_params()
13788 ret = send_and_recv_cmd(drv, msg); in nl80211_update_connection_params()
13789 msg = NULL; in nl80211_update_connection_params()
13796 nlmsg_free(msg); in nl80211_update_connection_params()
13806 struct nl_msg *msg = NULL; in nl80211_send_external_auth_status() local
13821 msg = nl80211_drv_msg(drv, 0, NL80211_CMD_EXTERNAL_AUTH); in nl80211_send_external_auth_status()
13822 if (!msg || in nl80211_send_external_auth_status()
13823 nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, params->status) || in nl80211_send_external_auth_status()
13825 nla_put(msg, NL80211_ATTR_SSID, params->ssid_len, params->ssid)) || in nl80211_send_external_auth_status()
13827 nla_put(msg, NL80211_ATTR_PMKID, PMKID_LEN, params->pmkid)) || in nl80211_send_external_auth_status()
13829 nla_put(msg, NL80211_ATTR_BSSID, ETH_ALEN, params->bssid))) in nl80211_send_external_auth_status()
13831 ret = send_and_recv_cmd(drv, msg); in nl80211_send_external_auth_status()
13832 msg = NULL; in nl80211_send_external_auth_status()
13840 nlmsg_free(msg); in nl80211_send_external_auth_status()
13850 struct nl_msg *msg; in nl80211_set_4addr_mode() local
13856 msg = nl80211_cmd_msg(drv->first_bss, 0, NL80211_CMD_SET_INTERFACE); in nl80211_set_4addr_mode()
13857 if (!msg || nla_put_u8(msg, NL80211_ATTR_4ADDR, val)) in nl80211_set_4addr_mode()
13871 ret = send_and_recv_cmd(drv, msg); in nl80211_set_4addr_mode()
13872 msg = NULL; in nl80211_set_4addr_mode()
13886 nlmsg_free(msg); in nl80211_set_4addr_mode()
13920 struct nl_msg *msg; in nl80211_link_add() local
13953 msg = nl80211_bss_msg(bss, 0, NL80211_CMD_ADD_LINK); in nl80211_link_add()
13954 if (!msg || in nl80211_link_add()
13955 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id) || in nl80211_link_add()
13956 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) { in nl80211_link_add()
13957 nlmsg_free(msg); in nl80211_link_add()
13961 ret = send_and_recv_cmd(drv, msg); in nl80211_link_add()
13989 struct nl_msg *msg; in wpa_driver_nl80211_link_sta_remove() local
13995 if (!(msg = nl80211_bss_msg(bss, 0, NL80211_CMD_REMOVE_LINK_STA)) || in wpa_driver_nl80211_link_sta_remove()
13996 nla_put(msg, NL80211_ATTR_MLD_ADDR, ETH_ALEN, addr) || in wpa_driver_nl80211_link_sta_remove()
13997 nla_put_u8(msg, NL80211_ATTR_MLO_LINK_ID, link_id)) { in wpa_driver_nl80211_link_sta_remove()
13998 nlmsg_free(msg); in wpa_driver_nl80211_link_sta_remove()
14002 ret = send_and_recv_cmd(drv, msg); in wpa_driver_nl80211_link_sta_remove()