Lines Matching +refs:add +refs:addr +refs:attrs
68 struct net *netns, struct nlattr **attrs) in __cfg80211_wdev_from_attrs() argument
71 bool have_ifidx = attrs[NL80211_ATTR_IFINDEX]; in __cfg80211_wdev_from_attrs()
72 bool have_wdev_id = attrs[NL80211_ATTR_WDEV]; in __cfg80211_wdev_from_attrs()
81 ifidx = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_wdev_from_attrs()
83 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_wdev_from_attrs()
140 __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs) in __cfg80211_rdev_from_attrs() argument
147 if (!attrs[NL80211_ATTR_WIPHY] && in __cfg80211_rdev_from_attrs()
148 !attrs[NL80211_ATTR_IFINDEX] && in __cfg80211_rdev_from_attrs()
149 !attrs[NL80211_ATTR_WDEV]) in __cfg80211_rdev_from_attrs()
152 if (attrs[NL80211_ATTR_WIPHY]) in __cfg80211_rdev_from_attrs()
154 nla_get_u32(attrs[NL80211_ATTR_WIPHY])); in __cfg80211_rdev_from_attrs()
156 if (attrs[NL80211_ATTR_WDEV]) { in __cfg80211_rdev_from_attrs()
157 u64 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_rdev_from_attrs()
180 if (attrs[NL80211_ATTR_IFINDEX]) { in __cfg80211_rdev_from_attrs()
181 int ifindex = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_rdev_from_attrs()
222 return __cfg80211_rdev_from_attrs(netns, info->attrs); in cfg80211_get_dev_from_info()
1310 static unsigned int nl80211_link_id(struct nlattr **attrs) in nl80211_link_id() argument
1312 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id()
1317 static int nl80211_link_id_or_invalid(struct nlattr **attrs) in nl80211_link_id_or_invalid() argument
1319 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id_or_invalid()
1398 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
1399 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1400 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1403 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
1404 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1405 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1408 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
1409 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
1411 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
1412 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
1414 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
1415 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
1424 if (info->attrs[NL80211_ATTR_KEY_TYPE]) in nl80211_parse_key_old()
1425 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
1427 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
1431 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
1452 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
1453 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1508 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
2916 rdev->wiphy.addresses[i].addr)) in nl80211_send_wiphy()
3362 struct nlattr **attrs = info->attrs; in _nl80211_parse_chandef() local
3365 if (!attrs[NL80211_ATTR_WIPHY_FREQ]) { in _nl80211_parse_chandef()
3366 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in _nl80211_parse_chandef()
3372 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in _nl80211_parse_chandef()
3373 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in _nl80211_parse_chandef()
3375 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in _nl80211_parse_chandef()
3385 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in _nl80211_parse_chandef()
3390 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in _nl80211_parse_chandef()
3393 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in _nl80211_parse_chandef()
3403 if (attrs[NL80211_ATTR_CENTER_FREQ1] && in _nl80211_parse_chandef()
3404 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) { in _nl80211_parse_chandef()
3406 attrs[NL80211_ATTR_CENTER_FREQ1], in _nl80211_parse_chandef()
3411 if (attrs[NL80211_ATTR_CENTER_FREQ2] && in _nl80211_parse_chandef()
3412 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) { in _nl80211_parse_chandef()
3414 attrs[NL80211_ATTR_CENTER_FREQ2], in _nl80211_parse_chandef()
3421 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE], in _nl80211_parse_chandef()
3425 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in _nl80211_parse_chandef()
3427 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]); in _nl80211_parse_chandef()
3432 attrs[NL80211_ATTR_CHANNEL_WIDTH], in _nl80211_parse_chandef()
3437 if (attrs[NL80211_ATTR_CENTER_FREQ1]) { in _nl80211_parse_chandef()
3439 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]); in _nl80211_parse_chandef()
3441 nla_get_u32_default(attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET], in _nl80211_parse_chandef()
3444 if (attrs[NL80211_ATTR_CENTER_FREQ2]) in _nl80211_parse_chandef()
3446 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]); in _nl80211_parse_chandef()
3449 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in _nl80211_parse_chandef()
3451 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in _nl80211_parse_chandef()
3453 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in _nl80211_parse_chandef()
3455 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in _nl80211_parse_chandef()
3461 if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) { in _nl80211_parse_chandef()
3463 nla_get_u32(info->attrs[NL80211_ATTR_PUNCT_BITMAP]); in _nl80211_parse_chandef()
3602 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_channel()
3632 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
3633 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
3644 info->attrs); in nl80211_set_wiphy()
3662 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
3664 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
3670 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
3688 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
3703 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3720 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
3721 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3736 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
3748 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3750 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
3756 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3764 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
3765 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
3773 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
3774 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
3792 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
3794 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
3799 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
3801 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
3806 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
3808 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
3824 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
3826 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
3830 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
3831 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) in nl80211_set_wiphy()
3835 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
3839 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3846 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
3852 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
3856 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
3862 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
3866 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
3872 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
4074 wdev->links[link_id].addr)) in nl80211_send_iface()
4247 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
4251 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
4267 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
4278 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
4289 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
4299 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
4336 struct nlattr *attr = info->attrs[NL80211_ATTR_VIF_RADIO_MASK]; in nl80211_parse_vif_radio_mask()
4370 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
4371 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
4376 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
4385 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
4387 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
4391 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
4392 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
4442 if (!info->attrs[NL80211_ATTR_IFNAME]) in _nl80211_new_interface()
4445 if (info->attrs[NL80211_ATTR_IFTYPE]) in _nl80211_new_interface()
4446 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in _nl80211_new_interface()
4453 info->attrs[NL80211_ATTR_MAC]) { in _nl80211_new_interface()
4454 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in _nl80211_new_interface()
4460 if (info->attrs[NL80211_ATTR_4ADDR]) { in _nl80211_new_interface()
4461 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in _nl80211_new_interface()
4483 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in _nl80211_new_interface()
4493 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in _nl80211_new_interface()
4498 if (!info->attrs[NL80211_ATTR_MESH_ID]) in _nl80211_new_interface()
4501 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in _nl80211_new_interface()
4503 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in _nl80211_new_interface()
4585 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
4591 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
4683 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_get_key()
4696 if (info->attrs[NL80211_ATTR_KEY_IDX]) { in nl80211_get_key()
4697 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
4705 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
4706 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
4709 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
4710 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
4772 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_key()
4855 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_key()
4856 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_key()
4880 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_new_key()
4892 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
4893 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
4910 info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_key()
4911 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_key()
4949 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_del_key()
4956 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
4957 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
5037 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
5040 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
5045 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
5048 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
5060 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
5061 memcpy(acl->mac_addrs[i].addr, nla_data(attr), ETH_ALEN); in parse_acl_data()
5302 struct nlattr *attrs[], in nl80211_parse_tx_bitrate_mask() argument
5352 if (!attrs[attr]) in nl80211_parse_tx_bitrate_mask()
5359 nla_for_each_nested(tx_rates, attrs[attr], rem) { in nl80211_parse_tx_bitrate_mask()
5526 struct nlattr *attrs, in nl80211_parse_mbssid_config() argument
5535 if (nla_parse_nested(tb, NL80211_MBSSID_CONFIG_ATTR_MAX, attrs, NULL, in nl80211_parse_mbssid_config()
5588 nl80211_parse_mbssid_elems(struct wiphy *wiphy, struct nlattr *attrs) in nl80211_parse_mbssid_elems() argument
5598 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5609 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5618 nl80211_parse_rnr_elems(struct wiphy *wiphy, struct nlattr *attrs, in nl80211_parse_rnr_elems() argument
5626 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_rnr_elems()
5641 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_rnr_elems()
5649 static int nl80211_parse_he_bss_color(struct nlattr *attrs, in nl80211_parse_he_bss_color() argument
5655 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs, in nl80211_parse_he_bss_color()
5674 struct nlattr *attrs[], in nl80211_parse_beacon() argument
5683 bcn->link_id = nl80211_link_id(attrs); in nl80211_parse_beacon()
5685 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
5686 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5687 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5693 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
5694 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5695 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5702 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
5703 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5704 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5707 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
5709 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5711 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5714 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
5716 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5718 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5721 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
5722 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5723 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5726 if (attrs[NL80211_ATTR_FTM_RESPONDER]) { in nl80211_parse_beacon()
5731 attrs[NL80211_ATTR_FTM_RESPONDER], in nl80211_parse_beacon()
5756 if (attrs[NL80211_ATTR_HE_BSS_COLOR]) { in nl80211_parse_beacon()
5757 err = nl80211_parse_he_bss_color(attrs[NL80211_ATTR_HE_BSS_COLOR], in nl80211_parse_beacon()
5764 if (attrs[NL80211_ATTR_MBSSID_ELEMS]) { in nl80211_parse_beacon()
5767 attrs[NL80211_ATTR_MBSSID_ELEMS]); in nl80211_parse_beacon()
5774 if (bcn->mbssid_ies && attrs[NL80211_ATTR_EMA_RNR_ELEMS]) { in nl80211_parse_beacon()
5777 attrs[NL80211_ATTR_EMA_RNR_ELEMS], in nl80211_parse_beacon()
5793 static int nl80211_parse_he_obss_pd(struct nlattr *attrs, in nl80211_parse_he_obss_pd() argument
5799 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs, in nl80211_parse_he_obss_pd()
5838 struct nlattr *attrs, in nl80211_parse_fils_discovery() argument
5848 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs, in nl80211_parse_fils_discovery()
5875 struct nlattr *attrs, in nl80211_parse_unsol_bcast_probe_resp() argument
5886 attrs, NULL, NULL); in nl80211_parse_unsol_bcast_probe_resp()
6107 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_start_ap()
6127 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
6128 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
6129 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
6132 if (info->attrs[NL80211_ATTR_SMPS_MODE] && in nl80211_start_ap()
6133 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]) != NL80211_SMPS_OFF) in nl80211_start_ap()
6140 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon, in nl80211_start_ap()
6146 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
6148 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
6162 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
6163 params->ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
6165 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
6184 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) in nl80211_start_ap()
6186 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
6188 params->privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
6190 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
6192 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
6206 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
6212 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
6215 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
6221 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
6229 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
6236 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
6245 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
6271 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
6272 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_start_ap()
6285 params->pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
6291 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
6301 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]); in nl80211_start_ap()
6303 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) { in nl80211_start_ap()
6305 info->attrs[NL80211_ATTR_HE_OBSS_PD], in nl80211_start_ap()
6311 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) { in nl80211_start_ap()
6313 info->attrs[NL80211_ATTR_FILS_DISCOVERY], in nl80211_start_ap()
6319 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) { in nl80211_start_ap()
6321 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP], in nl80211_start_ap()
6327 if (info->attrs[NL80211_ATTR_MBSSID_CONFIG]) { in nl80211_start_ap()
6329 info->attrs[NL80211_ATTR_MBSSID_CONFIG], in nl80211_start_ap()
6351 if (info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]) in nl80211_start_ap()
6353 info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]); in nl80211_start_ap()
6354 else if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT]) in nl80211_start_ap()
6358 info->attrs[NL80211_ATTR_SOCKET_OWNER] && in nl80211_start_ap()
6374 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
6396 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_beacon()
6417 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon, in nl80211_set_beacon()
6435 attr = info->attrs[NL80211_ATTR_FILS_DISCOVERY]; in nl80211_set_beacon()
6443 attr = info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]; in nl80211_set_beacon()
6463 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_stop_ap()
6490 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
6506 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
7005 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
7008 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
7196 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
7238 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
7241 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
7268 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
7270 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
7272 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
7282 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
7284 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
7286 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
7296 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
7297 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
7298 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
7300 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
7301 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
7303 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
7304 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
7306 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
7308 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
7310 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_set_station_tdls()
7312 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
7314 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
7338 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) { in nl80211_parse_sta_txpower_setting()
7345 txpwr->type = nla_get_u8(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7350 if (info->attrs[idx]) in nl80211_parse_sta_txpower_setting()
7351 txpwr->power = nla_get_s16(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7382 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
7383 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
7385 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_set_station()
7386 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_set_station()
7388 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
7390 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
7394 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) in nl80211_set_station()
7396 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
7400 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
7404 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_station()
7406 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_set_station()
7415 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_set_station()
7418 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7422 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7426 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
7428 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7430 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7433 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
7435 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
7439 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
7441 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7443 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7449 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_set_station()
7451 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
7453 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
7455 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
7456 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) in nl80211_set_station()
7458 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
7462 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) in nl80211_set_station()
7464 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
7466 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
7469 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
7472 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_set_station()
7474 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_set_station()
7476 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_set_station()
7478 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_set_station()
7539 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
7542 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
7545 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
7548 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
7549 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7553 nl80211_link_id_or_invalid(info->attrs); in nl80211_new_station()
7555 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_new_station()
7556 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_new_station()
7559 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7563 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7567 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7569 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7571 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
7573 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_station()
7574 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_station()
7576 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
7578 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
7588 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7589 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
7591 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
7593 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
7595 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
7599 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
7601 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7603 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7606 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
7608 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
7610 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
7612 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
7614 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
7616 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7618 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7620 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_new_station()
7622 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7624 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7634 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_new_station()
7636 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_new_station()
7638 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
7641 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
7644 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_new_station()
7646 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
7648 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_new_station()
7650 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_new_station()
7709 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7754 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7815 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_del_station()
7819 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
7820 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
7842 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
7844 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
7853 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
7855 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
8001 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
8004 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
8036 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
8039 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
8042 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
8043 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
8061 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
8064 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
8067 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
8068 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
8085 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
8086 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
8109 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
8112 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
8196 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_bss()
8206 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
8208 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
8209 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
8211 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
8212 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
8214 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
8215 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
8217 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
8219 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
8221 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
8222 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
8223 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
8225 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
8227 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
8231 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
8237 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
8242 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
8276 nla_get_u32_default(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE], in nl80211_req_set_reg()
8282 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
8285 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
8288 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
8290 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
8500 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
8502 …if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFI… in nl80211_parse_mesh_config()
8638 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
8640 …if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SET… in nl80211_parse_mesh_setup()
8801 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
8996 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
8999 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
9002 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
9004 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
9005 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
9007 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
9037 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
9164 int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
9169 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
9179 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
9182 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
9183 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
9259 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
9266 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
9287 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
9327 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
9359 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) { in nl80211_trigger_scan()
9363 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]; in nl80211_trigger_scan()
9365 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) in nl80211_trigger_scan()
9366 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]; in nl80211_trigger_scan()
9376 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
9377 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
9383 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
9384 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9477 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
9488 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
9489 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9491 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
9500 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
9502 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
9523 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
9525 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
9527 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
9530 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
9536 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
9547 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
9549 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
9551 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
9552 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
9557 request->tsf_report_link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_trigger_scan()
9601 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
9606 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
9615 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
9632 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
9685 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
9695 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9697 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
9704 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
9705 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9721 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9723 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9759 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
9760 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
9767 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
9772 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9776 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
9785 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9796 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
9797 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
9848 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9851 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
9899 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9913 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9915 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9978 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
9982 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
9986 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
9988 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
9990 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
9992 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
9997 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
10001 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
10010 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
10036 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
10042 info->attrs, in nl80211_start_sched_scan()
10062 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
10086 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
10087 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
10108 int link_id = nl80211_link_id(info->attrs); in nl80211_start_radar_detection()
10148 if (nla_get_flag(info->attrs[NL80211_ATTR_RADAR_BACKGROUND])) in nl80211_start_radar_detection()
10297 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_channel_switch()
10341 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
10342 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
10346 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
10352 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
10361 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after, in nl80211_channel_switch()
10374 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
10427 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
10433 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
10826 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
10829 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
10832 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
10835 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
10880 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
10881 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_authenticate()
10882 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_authenticate()
10884 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_authenticate()
10890 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10891 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10893 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
10894 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10895 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10898 if (info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]) { in nl80211_authenticate()
10900 nla_data(info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]); in nl80211_authenticate()
10902 nla_len(info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]); in nl80211_authenticate()
10905 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
10913 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
10916 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
10922 req.auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10923 req.auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10926 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
10939 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_authenticate()
10943 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_authenticate()
10945 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_authenticate()
10966 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
10986 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
10988 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
10992 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
10997 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
11002 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
11010 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH]) in nl80211_crypto_settings()
11014 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
11018 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
11019 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
11037 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
11039 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
11045 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) in nl80211_crypto_settings()
11047 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
11049 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
11053 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
11054 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
11066 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
11067 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
11074 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
11077 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) { in nl80211_crypto_settings()
11084 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
11086 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
11090 nla_get_u8_default(info->attrs[NL80211_ATTR_SAE_PWE], in nl80211_crypto_settings()
11098 struct nlattr **attrs, in nl80211_assoc_bss() argument
11106 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_assoc_bss()
11109 bssid = nla_data(attrs[NL80211_ATTR_MAC]); in nl80211_assoc_bss()
11111 freq = MHZ_TO_KHZ(nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_assoc_bss()
11112 if (attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_assoc_bss()
11113 freq += nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_assoc_bss()
11142 struct nlattr **attrs __free(kfree) = kzalloc(attrsize, GFP_KERNEL); in nl80211_process_links()
11147 if (!attrs) in nl80211_process_links()
11150 nla_for_each_nested(link, info->attrs[NL80211_ATTR_MLO_LINKS], rem) { in nl80211_process_links()
11151 memset(attrs, 0, attrsize); in nl80211_process_links()
11153 nla_parse_nested(attrs, NL80211_ATTR_MAX, link, NULL, NULL); in nl80211_process_links()
11155 if (!attrs[NL80211_ATTR_MLO_LINK_ID]) { in nl80211_process_links()
11160 link_id = nla_get_u8(attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_process_links()
11167 nl80211_assoc_bss(rdev, ssid, ssid_len, attrs, in nl80211_process_links()
11177 if (attrs[NL80211_ATTR_IE]) { in nl80211_process_links()
11178 links[link_id].elems = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_process_links()
11180 nla_len(attrs[NL80211_ATTR_IE]); in nl80211_process_links()
11186 attrs[NL80211_ATTR_IE], in nl80211_process_links()
11195 attrs[NL80211_ATTR_IE], in nl80211_process_links()
11202 nla_get_flag(attrs[NL80211_ATTR_MLO_LINK_DISABLED]); in nl80211_process_links()
11221 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_associate()
11231 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
11232 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
11234 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
11235 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
11236 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
11241 info->attrs[NL80211_ATTR_IE], in nl80211_associate()
11247 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
11249 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
11256 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
11257 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
11259 if (info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]) { in nl80211_associate()
11261 nla_data(info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]); in nl80211_associate()
11263 nla_len(info->attrs[NL80211_ATTR_SUPPORTED_SELECTORS]); in nl80211_associate()
11266 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
11269 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
11271 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
11274 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
11275 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
11278 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
11282 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
11285 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_associate()
11288 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_associate()
11291 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
11293 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
11296 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
11297 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
11300 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
11304 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
11314 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
11315 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
11316 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
11317 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
11320 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
11323 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) { in nl80211_associate()
11324 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY]) in nl80211_associate()
11327 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]), in nl80211_associate()
11331 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) { in nl80211_associate()
11332 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) in nl80211_associate()
11335 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]), in nl80211_associate()
11339 if (nla_get_flag(info->attrs[NL80211_ATTR_ASSOC_SPP_AMSDU])) { in nl80211_associate()
11348 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_associate()
11350 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
11357 if (info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
11358 info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_associate()
11359 !info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_associate()
11362 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_associate()
11389 if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) in nl80211_associate()
11391 nla_get_u16(info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]); in nl80211_associate()
11396 req.bss = nl80211_assoc_bss(rdev, ssid, ssid_len, info->attrs, in nl80211_associate()
11402 if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) in nl80211_associate()
11414 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
11422 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
11424 info->attrs[NL80211_ATTR_MLO_LINKS], in nl80211_associate()
11471 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
11474 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
11484 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
11486 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
11492 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
11493 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11494 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11497 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
11516 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
11519 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
11529 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
11531 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
11537 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
11538 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11539 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11542 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
11587 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
11588 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
11593 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
11595 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
11610 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
11611 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
11616 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11617 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11619 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
11620 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11621 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11657 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
11658 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
11660 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
11662 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11664 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11674 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11676 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
11679 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
11680 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11683 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
11687 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
11689 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
11692 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
11707 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
11709 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
11721 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
11726 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
11763 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
11766 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
11902 info->attrs); in nl80211_testmode_do()
11916 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
11921 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
11922 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
12043 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
12044 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
12047 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
12049 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
12056 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
12058 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
12062 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
12076 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
12079 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
12082 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
12083 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
12084 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
12086 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
12087 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
12088 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
12090 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
12091 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
12092 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
12095 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
12096 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
12105 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
12107 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
12109 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_connect()
12111 info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_connect()
12112 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_connect()
12114 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_connect()
12120 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
12121 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
12128 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_connect()
12130 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_connect()
12132 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_connect()
12134 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_connect()
12137 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
12143 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
12146 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
12148 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
12151 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
12152 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
12157 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
12161 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
12164 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_connect()
12167 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_connect()
12170 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
12172 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
12175 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
12176 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
12181 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
12185 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
12197 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
12203 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
12210 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
12220 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
12221 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
12222 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
12223 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
12225 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
12227 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
12229 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
12231 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
12234 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
12236 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
12238 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
12239 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
12240 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
12241 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
12242 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
12247 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
12248 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
12257 if (nla_get_flag(info->attrs[NL80211_ATTR_MLO_SUPPORT])) in nl80211_connect()
12265 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
12291 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
12292 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
12293 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
12306 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
12307 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
12308 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
12309 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
12311 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
12313 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
12315 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
12317 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
12320 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
12322 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
12324 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
12326 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
12327 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
12328 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
12329 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
12333 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
12334 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
12363 reason = nla_get_u16_default(info->attrs[NL80211_ATTR_REASON_CODE], in nl80211_disconnect()
12382 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
12383 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
12386 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
12387 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
12419 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_set_pmksa()
12422 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_set_pmksa()
12424 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_set_pmksa()
12425 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmksa()
12426 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_set_pmksa()
12427 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_set_pmksa()
12428 info->attrs[NL80211_ATTR_PMK]) { in nl80211_set_pmksa()
12429 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_set_pmksa()
12430 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_set_pmksa()
12431 pmksa.cache_id = nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_set_pmksa()
12436 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_set_pmksa()
12437 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmksa()
12438 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmksa()
12441 if (info->attrs[NL80211_ATTR_PMK_LIFETIME]) in nl80211_set_pmksa()
12443 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]); in nl80211_set_pmksa()
12445 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]) in nl80211_set_pmksa()
12447 nla_get_u8(info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]); in nl80211_set_pmksa()
12480 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_del_pmksa()
12481 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_del_pmksa()
12483 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_del_pmksa()
12484 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmksa()
12485 } else if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_del_pmksa()
12489 if (info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_del_pmksa()
12490 info->attrs[NL80211_ATTR_PMK]) { in nl80211_del_pmksa()
12491 pmksa.cache_id = nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_del_pmksa()
12495 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_del_pmksa()
12496 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_del_pmksa()
12544 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
12545 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
12546 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
12547 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
12548 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
12551 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
12552 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
12553 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
12554 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
12555 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
12556 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
12558 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
12559 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tdls_mgmt()
12564 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
12565 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
12579 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
12580 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
12583 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
12584 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
12593 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remain_on_channel()
12602 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
12603 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
12606 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
12682 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
12688 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
12697 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tx_bitrate_mask()
12705 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_set_tx_bitrate_mask()
12720 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
12723 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
12724 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
12749 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] && in nl80211_register_mgmt()
12758 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12759 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12760 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST], in nl80211_register_mgmt()
12775 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
12778 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
12786 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
12806 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
12809 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
12820 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
12825 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
12831 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
12844 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_mgmt()
12854 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12855 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12858 info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX], in nl80211_tx_mgmt()
12906 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
12930 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
12944 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
12947 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
13187 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
13191 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
13195 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
13201 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
13202 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
13204 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
13205 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
13206 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
13215 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
13216 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
13217 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
13218 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
13219 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
13220 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
13262 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
13269 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
13270 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
13273 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
13274 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
13276 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
13278 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
13281 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
13283 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
13292 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
13294 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
13299 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
13309 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
13318 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
13319 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
13321 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
13335 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
13336 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_join_mesh()
13353 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
13355 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
13365 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
13811 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
13818 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
14203 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
14210 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
14224 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
14257 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
14261 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
14322 const u8 *addr; in nl80211_probe_client() local
14330 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
14347 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
14349 err = rdev_probe_client(rdev, dev, addr, &cookie); in nl80211_probe_client()
14462 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
14466 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
14468 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
14469 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
14583 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
14587 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
14668 memcpy(func->followup_dest.addr, in nl80211_nan_add_func()
14670 sizeof(func->followup_dest.addr)); in nl80211_nan_add_func()
14740 memcpy(func->srf_macs[i++].addr, nla_data(attr), in nl80211_nan_add_func()
14817 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
14820 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
14841 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
14843 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
14850 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
14851 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
14878 if (WARN_ON(!match->inst_id || !match->peer_inst_id || !match->addr)) in cfg80211_nan_match()
14900 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, match->addr)) in cfg80211_nan_match()
15045 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
15046 !info->attrs[NL80211_ATTR_IE]) in nl80211_update_ft_ies()
15050 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
15051 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
15052 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
15076 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
15077 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
15083 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
15087 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
15139 info->attrs); in nl80211_vendor_cmd()
15155 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
15156 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
15159 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
15160 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
15190 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
15191 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
15192 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
15195 info->attrs[NL80211_ATTR_VENDOR_DATA], in nl80211_vendor_cmd()
15470 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
15471 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15472 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15518 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
15519 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
15522 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
15523 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
15534 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
15536 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
15538 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
15563 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
15566 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
15567 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
15579 const u8 *addr; in nl80211_tdls_channel_switch() local
15595 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
15596 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
15622 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
15623 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
15625 return rdev_tdls_channel_switch(rdev, dev, addr, oper_class, &chandef); in nl80211_tdls_channel_switch()
15633 const u8 *addr; in nl80211_tdls_cancel_channel_switch() local
15648 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
15651 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
15653 rdev_tdls_cancel_channel_switch(rdev, dev, addr); in nl80211_tdls_cancel_channel_switch()
15674 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
15695 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
15701 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
15705 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15706 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15711 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) in nl80211_set_pmk()
15713 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
15733 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
15736 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
15749 if (!info->attrs[NL80211_ATTR_SSID] && in nl80211_external_auth()
15754 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
15757 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
15762 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_external_auth()
15763 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
15767 nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
15771 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
15774 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
15776 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_external_auth()
15777 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_external_auth()
15784 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK]; in nl80211_tx_control_port()
15804 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
15805 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
15806 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
15829 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15830 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15831 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
15832 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
15834 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
15836 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_control_port()
15853 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_get_ftm_responder_stats()
15928 if (!info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_update_owe_info()
15929 !info->attrs[NL80211_ATTR_MAC]) in nl80211_update_owe_info()
15933 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_update_owe_info()
15934 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN); in nl80211_update_owe_info()
15936 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_owe_info()
15937 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15938 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15958 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_probe_mesh_link()
15959 !info->attrs[NL80211_ATTR_FRAME]) { in nl80211_probe_mesh_link()
15967 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_mesh_link()
15968 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15969 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15988 struct nlattr *attrs[], struct net_device *dev, in parse_tid_conf() argument
15997 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS]) in parse_tid_conf()
16001 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]); in parse_tid_conf()
16002 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]); in parse_tid_conf()
16015 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) { in parse_tid_conf()
16018 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]); in parse_tid_conf()
16021 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) { in parse_tid_conf()
16024 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]); in parse_tid_conf()
16030 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) { in parse_tid_conf()
16033 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]); in parse_tid_conf()
16039 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) { in parse_tid_conf()
16042 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]); in parse_tid_conf()
16045 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) { in parse_tid_conf()
16048 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]); in parse_tid_conf()
16051 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) { in parse_tid_conf()
16054 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]); in parse_tid_conf()
16057 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) { in parse_tid_conf()
16060 tid_conf->txrate_type = nla_get_u8(attrs[idx]); in parse_tid_conf()
16064 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr, in parse_tid_conf()
16092 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1]; in nl80211_set_tid_config() local
16093 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tid_config()
16101 if (!info->attrs[NL80211_ATTR_TID_CONFIG]) in nl80211_set_tid_config()
16107 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
16118 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_tid_config()
16119 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_tid_config()
16121 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
16123 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX, in nl80211_set_tid_config()
16129 ret = parse_tid_conf(rdev, attrs, dev, in nl80211_set_tid_config()
16165 if (!info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT] || in nl80211_color_change()
16166 !info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR] || in nl80211_color_change()
16167 !info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS]) in nl80211_color_change()
16170 params.count = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT]); in nl80211_color_change()
16171 params.color = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR]); in nl80211_color_change()
16173 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_next, in nl80211_color_change()
16183 info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS], in nl80211_color_change()
16238 params.link_id = nl80211_link_id(info->attrs); in nl80211_color_change()
16258 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_set_fils_aad()
16259 !info->attrs[NL80211_ATTR_FILS_KEK] || in nl80211_set_fils_aad()
16260 !info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_set_fils_aad()
16263 fils_aad.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_fils_aad()
16264 fils_aad.kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
16265 fils_aad.kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
16266 nonces = nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_set_fils_aad()
16276 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_add_link()
16291 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_add_link()
16292 !is_valid_ether_addr(nla_data(info->attrs[NL80211_ATTR_MAC]))) in nl80211_add_link()
16296 ether_addr_copy(wdev->links[link_id].addr, in nl80211_add_link()
16297 nla_data(info->attrs[NL80211_ATTR_MAC])); in nl80211_add_link()
16302 eth_zero_addr(wdev->links[link_id].addr); in nl80211_add_link()
16310 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remove_link()
16315 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link()
16332 bool add) in nl80211_add_mod_link_station() argument
16339 if ((add && !rdev->ops->add_link_station) || in nl80211_add_mod_link_station()
16340 (!add && !rdev->ops->mod_link_station)) in nl80211_add_mod_link_station()
16343 if (add && !info->attrs[NL80211_ATTR_MAC]) in nl80211_add_mod_link_station()
16346 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_add_mod_link_station()
16349 if (add && !info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_add_mod_link_station()
16352 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_add_mod_link_station()
16354 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_add_mod_link_station()
16355 params.link_mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_mod_link_station()
16360 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_add_mod_link_station()
16363 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_add_mod_link_station()
16365 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_add_mod_link_station()
16367 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16369 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16372 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_add_mod_link_station()
16374 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_add_mod_link_station()
16376 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_add_mod_link_station()
16378 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_add_mod_link_station()
16380 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_add_mod_link_station()
16382 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16384 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16386 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_add_mod_link_station()
16388 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16390 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16400 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_add_mod_link_station()
16402 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_add_mod_link_station()
16404 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_add_mod_link_station()
16407 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_add_mod_link_station()
16415 if (add) in nl80211_add_mod_link_station()
16443 if (!info->attrs[NL80211_ATTR_MLD_ADDR] || in nl80211_remove_link_station()
16444 !info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link_station()
16447 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_remove_link_station()
16448 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_remove_link_station()
16463 if (!info->attrs[NL80211_ATTR_MAC] && in nl80211_set_hw_timestamp()
16467 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_hw_timestamp()
16468 hwts.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_hw_timestamp()
16471 nla_get_flag(info->attrs[NL80211_ATTR_HW_TIMESTAMP_ENABLED]); in nl80211_set_hw_timestamp()
16491 if (!info->attrs[NL80211_ATTR_MLO_TTLM_DLINK] || in nl80211_set_ttlm()
16492 !info->attrs[NL80211_ATTR_MLO_TTLM_ULINK]) in nl80211_set_ttlm()
16496 info->attrs[NL80211_ATTR_MLO_TTLM_DLINK], in nl80211_set_ttlm()
16499 info->attrs[NL80211_ATTR_MLO_TTLM_ULINK], in nl80211_set_ttlm()
16527 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_assoc_ml_reconf()
16543 if (info->attrs[NL80211_ATTR_MLO_RECONF_REM_LINKS]) in nl80211_assoc_ml_reconf()
16545 nla_get_u16(info->attrs[NL80211_ATTR_MLO_RECONF_REM_LINKS]); in nl80211_assoc_ml_reconf()
16557 if (info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]) in nl80211_assoc_ml_reconf()
16559 nla_get_u16(info->attrs[NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS]); in nl80211_assoc_ml_reconf()
16585 val = nla_get_flag(info->attrs[NL80211_ATTR_EPCS]); in nl80211_epcs_cfg()
16704 info->attrs); in nl80211_pre_doit()
16735 struct nlattr *link_id = info->attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_pre_doit()
16758 if (info->attrs[NL80211_ATTR_MLO_LINK_ID] || in nl80211_pre_doit()
16867 if (!info->attrs[NL80211_ATTR_SAR_SPEC]) in nl80211_set_sar_specs()
16871 info->attrs[NL80211_ATTR_SAR_SPEC], in nl80211_set_sar_specs()
18283 const u8 *addr, gfp_t gfp) in nl80211_send_mlme_timeout() argument
18301 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in nl80211_send_mlme_timeout()
18315 struct net_device *netdev, const u8 *addr, in nl80211_send_auth_timeout() argument
18319 addr, gfp); in nl80211_send_auth_timeout()
18323 struct net_device *netdev, const u8 *addr, in nl80211_send_assoc_timeout() argument
18327 addr, gfp); in nl80211_send_assoc_timeout()
18348 link_info_size += cr->links[link].addr ? in nl80211_send_connect_result()
18420 (cr->links[link].addr && in nl80211_send_connect_result()
18422 cr->links[link].addr)) || in nl80211_send_connect_result()
18463 link_info_size += info->links[link].addr ? in nl80211_send_roamed()
18526 (info->links[link].addr && in nl80211_send_roamed()
18528 info->links[link].addr))) in nl80211_send_roamed()
18738 void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr, in cfg80211_notify_new_peer_candidate() argument
18750 trace_cfg80211_notify_new_peer_candidate(dev, addr); in cfg80211_notify_new_peer_candidate()
18764 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_notify_new_peer_candidate()
18783 struct net_device *netdev, const u8 *addr, in nl80211_michael_mic_failure() argument
18802 (addr && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) || in nl80211_michael_mic_failure()
19086 const u8 *addr, gfp_t gfp) in __nl80211_unexpected_frame() argument
19109 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in __nl80211_unexpected_frame()
19122 const u8 *addr, gfp_t gfp) in cfg80211_rx_spurious_frame() argument
19127 trace_cfg80211_rx_spurious_frame(dev, addr); in cfg80211_rx_spurious_frame()
19135 addr, gfp); in cfg80211_rx_spurious_frame()
19142 const u8 *addr, gfp_t gfp) in cfg80211_rx_unexpected_4addr_frame() argument
19147 trace_cfg80211_rx_unexpected_4addr_frame(dev, addr); in cfg80211_rx_unexpected_4addr_frame()
19157 addr, gfp); in cfg80211_rx_unexpected_4addr_frame()
19300 const u8 *addr = ehdr->h_source; in __nl80211_rx_control_port() local
19325 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in __nl80211_rx_control_port()
19923 void cfg80211_probe_status(struct net_device *dev, const u8 *addr, in cfg80211_probe_status() argument
19932 trace_cfg80211_probe_status(dev, addr, cookie, acked); in cfg80211_probe_status()
19947 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_probe_status()