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()
1281 static unsigned int nl80211_link_id(struct nlattr **attrs) in nl80211_link_id() argument
1283 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id()
1291 static int nl80211_link_id_or_invalid(struct nlattr **attrs) in nl80211_link_id_or_invalid() argument
1293 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id_or_invalid()
1372 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
1373 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1374 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1377 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
1378 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1379 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1382 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
1383 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
1385 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
1386 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
1388 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
1389 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
1398 if (info->attrs[NL80211_ATTR_KEY_TYPE]) in nl80211_parse_key_old()
1399 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
1401 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
1405 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
1426 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
1427 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1482 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
2792 rdev->wiphy.addresses[i].addr)) in nl80211_send_wiphy()
3235 *punct_bitmap = nla_get_u32(info->attrs[NL80211_ATTR_PUNCT_BITMAP]); in nl80211_parse_punct_bitmap()
3247 struct nlattr **attrs = info->attrs; in nl80211_parse_chandef() local
3250 if (!attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_parse_chandef()
3251 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
3257 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_parse_chandef()
3258 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_parse_chandef()
3260 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_parse_chandef()
3271 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
3276 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
3279 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
3289 if (attrs[NL80211_ATTR_CENTER_FREQ1] && in nl80211_parse_chandef()
3290 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) { in nl80211_parse_chandef()
3292 attrs[NL80211_ATTR_CENTER_FREQ1], in nl80211_parse_chandef()
3297 if (attrs[NL80211_ATTR_CENTER_FREQ2] && in nl80211_parse_chandef()
3298 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) { in nl80211_parse_chandef()
3300 attrs[NL80211_ATTR_CENTER_FREQ2], in nl80211_parse_chandef()
3307 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE], in nl80211_parse_chandef()
3311 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
3313 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
3318 attrs[NL80211_ATTR_CHANNEL_WIDTH], in nl80211_parse_chandef()
3323 if (attrs[NL80211_ATTR_CENTER_FREQ1]) { in nl80211_parse_chandef()
3325 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
3326 if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]) in nl80211_parse_chandef()
3328 attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]); in nl80211_parse_chandef()
3332 if (attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
3334 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
3337 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_parse_chandef()
3339 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_parse_chandef()
3341 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_parse_chandef()
3343 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_parse_chandef()
3440 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_channel()
3470 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
3471 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
3482 info->attrs); in nl80211_set_wiphy()
3500 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
3502 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
3508 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
3534 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
3548 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3565 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
3566 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3581 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
3595 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3597 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
3605 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3613 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
3614 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
3624 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
3625 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
3645 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
3647 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
3652 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
3654 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
3659 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
3661 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
3679 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
3681 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
3685 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
3686 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3692 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
3696 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3705 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
3712 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
3716 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
3723 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
3727 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
3734 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
3937 wdev->links[link_id].addr)) in nl80211_send_iface()
4095 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
4099 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
4111 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
4122 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
4133 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
4143 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
4189 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
4190 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
4195 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
4208 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
4210 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
4214 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
4215 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
4258 if (!info->attrs[NL80211_ATTR_IFNAME]) in _nl80211_new_interface()
4261 if (info->attrs[NL80211_ATTR_IFTYPE]) in _nl80211_new_interface()
4262 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in _nl80211_new_interface()
4269 info->attrs[NL80211_ATTR_MAC]) { in _nl80211_new_interface()
4270 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in _nl80211_new_interface()
4276 if (info->attrs[NL80211_ATTR_4ADDR]) { in _nl80211_new_interface()
4277 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in _nl80211_new_interface()
4295 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in _nl80211_new_interface()
4305 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in _nl80211_new_interface()
4310 if (!info->attrs[NL80211_ATTR_MESH_ID]) in _nl80211_new_interface()
4315 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in _nl80211_new_interface()
4317 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in _nl80211_new_interface()
4399 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
4405 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
4503 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_get_key()
4516 if (info->attrs[NL80211_ATTR_KEY_IDX]) { in nl80211_get_key()
4517 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
4525 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
4526 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
4529 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
4530 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
4592 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_key()
4675 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_key()
4676 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_key()
4700 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_new_key()
4712 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
4713 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
4730 info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_key()
4731 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_key()
4769 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_del_key()
4776 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
4777 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
4857 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
4860 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
4865 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
4868 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
4880 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
4881 memcpy(acl->mac_addrs[i].addr, nla_data(attr), ETH_ALEN); in parse_acl_data()
5122 struct nlattr *attrs[], in nl80211_parse_tx_bitrate_mask() argument
5172 if (!attrs[attr]) in nl80211_parse_tx_bitrate_mask()
5179 nla_for_each_nested(tx_rates, attrs[attr], rem) { in nl80211_parse_tx_bitrate_mask()
5346 struct nlattr *attrs, in nl80211_parse_mbssid_config() argument
5355 if (nla_parse_nested(tb, NL80211_MBSSID_CONFIG_ATTR_MAX, attrs, NULL, in nl80211_parse_mbssid_config()
5408 nl80211_parse_mbssid_elems(struct wiphy *wiphy, struct nlattr *attrs) in nl80211_parse_mbssid_elems() argument
5418 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5429 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5438 nl80211_parse_rnr_elems(struct wiphy *wiphy, struct nlattr *attrs, in nl80211_parse_rnr_elems() argument
5446 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_rnr_elems()
5461 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_rnr_elems()
5469 static int nl80211_parse_he_bss_color(struct nlattr *attrs, in nl80211_parse_he_bss_color() argument
5475 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs, in nl80211_parse_he_bss_color()
5494 struct nlattr *attrs[], in nl80211_parse_beacon() argument
5503 bcn->link_id = nl80211_link_id(attrs); in nl80211_parse_beacon()
5505 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
5506 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5507 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5513 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
5514 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5515 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5522 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
5523 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5524 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5527 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
5529 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5531 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5534 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
5536 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5538 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5541 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
5542 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5543 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5546 if (attrs[NL80211_ATTR_FTM_RESPONDER]) { in nl80211_parse_beacon()
5551 attrs[NL80211_ATTR_FTM_RESPONDER], in nl80211_parse_beacon()
5576 if (attrs[NL80211_ATTR_HE_BSS_COLOR]) { in nl80211_parse_beacon()
5577 err = nl80211_parse_he_bss_color(attrs[NL80211_ATTR_HE_BSS_COLOR], in nl80211_parse_beacon()
5584 if (attrs[NL80211_ATTR_MBSSID_ELEMS]) { in nl80211_parse_beacon()
5587 attrs[NL80211_ATTR_MBSSID_ELEMS]); in nl80211_parse_beacon()
5594 if (bcn->mbssid_ies && attrs[NL80211_ATTR_EMA_RNR_ELEMS]) { in nl80211_parse_beacon()
5597 attrs[NL80211_ATTR_EMA_RNR_ELEMS], in nl80211_parse_beacon()
5613 static int nl80211_parse_he_obss_pd(struct nlattr *attrs, in nl80211_parse_he_obss_pd() argument
5619 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs, in nl80211_parse_he_obss_pd()
5658 struct nlattr *attrs, in nl80211_parse_fils_discovery() argument
5668 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs, in nl80211_parse_fils_discovery()
5695 struct nlattr *attrs, in nl80211_parse_unsol_bcast_probe_resp() argument
5706 attrs, NULL, NULL); in nl80211_parse_unsol_bcast_probe_resp()
5926 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_start_ap()
5943 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
5944 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
5945 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
5952 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon, in nl80211_start_ap()
5958 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
5960 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
5974 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
5975 params->ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5977 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5996 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) in nl80211_start_ap()
5998 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
6000 params->privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
6002 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
6004 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
6018 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
6024 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
6027 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
6033 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
6041 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
6048 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
6057 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
6072 if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) { in nl80211_start_ap()
6086 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
6087 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_start_ap()
6100 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
6102 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
6128 params->pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
6134 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
6144 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]); in nl80211_start_ap()
6146 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) { in nl80211_start_ap()
6148 info->attrs[NL80211_ATTR_HE_OBSS_PD], in nl80211_start_ap()
6154 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) { in nl80211_start_ap()
6156 info->attrs[NL80211_ATTR_FILS_DISCOVERY], in nl80211_start_ap()
6162 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) { in nl80211_start_ap()
6164 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP], in nl80211_start_ap()
6170 if (info->attrs[NL80211_ATTR_MBSSID_CONFIG]) { in nl80211_start_ap()
6172 info->attrs[NL80211_ATTR_MBSSID_CONFIG], in nl80211_start_ap()
6194 if (info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]) in nl80211_start_ap()
6196 info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]); in nl80211_start_ap()
6197 else if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT]) in nl80211_start_ap()
6201 info->attrs[NL80211_ATTR_SOCKET_OWNER] && in nl80211_start_ap()
6217 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
6238 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_beacon()
6259 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon, in nl80211_set_beacon()
6264 attr = info->attrs[NL80211_ATTR_FILS_DISCOVERY]; in nl80211_set_beacon()
6272 attr = info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]; in nl80211_set_beacon()
6292 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_stop_ap()
6319 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
6335 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
6833 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
6836 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
7021 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
7063 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
7066 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
7093 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
7095 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
7097 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
7107 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
7109 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
7111 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
7121 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
7122 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
7123 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
7125 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
7126 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
7128 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
7129 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
7131 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
7133 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
7135 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_set_station_tdls()
7137 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
7139 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
7163 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) { in nl80211_parse_sta_txpower_setting()
7170 txpwr->type = nla_get_u8(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7175 if (info->attrs[idx]) in nl80211_parse_sta_txpower_setting()
7176 txpwr->power = nla_get_s16(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7207 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
7208 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
7210 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_set_station()
7211 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_set_station()
7213 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
7215 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
7219 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) in nl80211_set_station()
7221 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
7225 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
7229 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_station()
7231 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_set_station()
7240 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_set_station()
7243 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7247 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7251 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
7253 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7255 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7258 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
7260 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
7264 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
7266 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7268 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7274 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_set_station()
7276 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
7278 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
7280 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
7281 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) in nl80211_set_station()
7283 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
7287 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) in nl80211_set_station()
7289 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
7291 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
7294 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
7297 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_set_station()
7299 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_set_station()
7301 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_set_station()
7303 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_set_station()
7364 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
7367 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
7370 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
7373 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
7374 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7378 nl80211_link_id_or_invalid(info->attrs); in nl80211_new_station()
7380 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_new_station()
7381 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_new_station()
7384 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7388 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7392 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7394 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7396 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
7398 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_station()
7399 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_station()
7401 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
7403 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
7413 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7414 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
7416 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
7418 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
7420 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
7424 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
7426 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7428 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7431 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
7433 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
7435 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
7437 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
7439 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
7441 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7443 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7445 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_new_station()
7447 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7449 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7459 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_new_station()
7461 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_new_station()
7463 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
7466 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
7469 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_new_station()
7471 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
7473 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_new_station()
7475 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_new_station()
7534 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7574 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7637 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
7638 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
7660 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
7662 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
7671 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
7673 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
7808 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
7811 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
7843 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
7846 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
7849 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
7850 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
7868 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
7871 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
7874 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
7875 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
7892 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
7893 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
7916 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
7919 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
8003 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_bss()
8013 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
8015 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
8016 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
8018 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
8019 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
8021 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
8022 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
8024 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
8026 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
8028 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
8029 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
8030 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
8032 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
8034 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
8038 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
8044 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
8049 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
8082 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
8084 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
8091 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
8094 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
8097 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
8099 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
8308 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
8310 …if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFI… in nl80211_parse_mesh_config()
8446 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
8448 …if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SET… in nl80211_parse_mesh_setup()
8609 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
8804 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
8807 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
8810 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
8812 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
8813 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
8815 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8845 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8972 int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
8977 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
8987 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
8990 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
8991 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
9064 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
9071 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
9092 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
9132 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
9163 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) { in nl80211_trigger_scan()
9167 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]; in nl80211_trigger_scan()
9169 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) in nl80211_trigger_scan()
9170 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]; in nl80211_trigger_scan()
9180 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
9181 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
9187 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
9188 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9280 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
9291 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
9292 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9294 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
9303 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
9305 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
9326 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
9328 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
9330 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
9333 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
9339 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
9350 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
9352 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
9354 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
9355 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
9360 request->tsf_report_link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_trigger_scan()
9404 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
9409 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
9418 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
9435 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
9523 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
9533 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9535 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
9542 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
9543 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9559 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9561 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9597 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
9598 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
9605 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
9610 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9614 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
9623 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9634 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
9635 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
9684 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9687 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
9735 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9749 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9751 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9823 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
9827 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
9831 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
9833 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
9835 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
9837 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
9842 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
9846 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
9855 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
9881 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
9887 info->attrs, in nl80211_start_sched_scan()
9907 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
9931 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
9932 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
9985 if (nla_get_flag(info->attrs[NL80211_ATTR_RADAR_BACKGROUND])) { in nl80211_start_radar_detection()
10086 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_channel_switch()
10131 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
10132 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
10136 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
10142 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
10151 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after, in nl80211_channel_switch()
10164 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
10266 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
10272 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
10275 if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) { in nl80211_channel_switch()
10675 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
10678 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
10681 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
10684 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
10729 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
10730 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_authenticate()
10731 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_authenticate()
10733 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_authenticate()
10739 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10740 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10742 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
10743 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10744 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10747 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
10755 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
10758 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
10764 req.auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10765 req.auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10768 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
10781 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_authenticate()
10785 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_authenticate()
10787 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_authenticate()
10808 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
10828 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
10830 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
10834 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
10839 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
10844 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
10852 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH]) in nl80211_crypto_settings()
10856 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
10860 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10861 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10879 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
10881 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
10887 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
10889 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
10894 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
10898 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10899 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10911 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
10912 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
10919 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
10922 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) { in nl80211_crypto_settings()
10929 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10931 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10934 if (info->attrs[NL80211_ATTR_SAE_PWE]) in nl80211_crypto_settings()
10936 nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]); in nl80211_crypto_settings()
10945 struct nlattr **attrs, in nl80211_assoc_bss() argument
10953 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_assoc_bss()
10956 bssid = nla_data(attrs[NL80211_ATTR_MAC]); in nl80211_assoc_bss()
10958 freq = MHZ_TO_KHZ(nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_assoc_bss()
10959 if (attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_assoc_bss()
10960 freq += nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_assoc_bss()
10987 struct nlattr **attrs = NULL; in nl80211_associate() local
10996 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_associate()
11006 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
11007 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
11009 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
11010 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
11011 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
11016 info->attrs[NL80211_ATTR_IE], in nl80211_associate()
11022 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
11024 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
11031 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
11032 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
11034 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
11037 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
11039 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
11042 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
11043 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
11046 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
11050 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
11053 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_associate()
11056 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_associate()
11059 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
11061 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
11064 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
11065 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
11068 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
11072 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
11082 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
11083 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
11084 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
11085 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
11088 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
11091 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) { in nl80211_associate()
11092 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY]) in nl80211_associate()
11095 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]), in nl80211_associate()
11099 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) { in nl80211_associate()
11100 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) in nl80211_associate()
11103 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]), in nl80211_associate()
11107 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_associate()
11109 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
11110 unsigned int attrsize = NUM_NL80211_ATTR * sizeof(*attrs); in nl80211_associate()
11120 if (info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
11121 info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_associate()
11122 !info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_associate()
11125 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_associate()
11128 attrs = kzalloc(attrsize, GFP_KERNEL); in nl80211_associate()
11129 if (!attrs) in nl80211_associate()
11133 info->attrs[NL80211_ATTR_MLO_LINKS], in nl80211_associate()
11135 memset(attrs, 0, attrsize); in nl80211_associate()
11137 nla_parse_nested(attrs, NL80211_ATTR_MAX, in nl80211_associate()
11140 if (!attrs[NL80211_ATTR_MLO_LINK_ID]) { in nl80211_associate()
11146 link_id = nla_get_u8(attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_associate()
11154 nl80211_assoc_bss(rdev, ssid, ssid_len, attrs, in nl80211_associate()
11164 if (attrs[NL80211_ATTR_IE]) { in nl80211_associate()
11166 nla_data(attrs[NL80211_ATTR_IE]); in nl80211_associate()
11168 nla_len(attrs[NL80211_ATTR_IE]); in nl80211_associate()
11174 attrs[NL80211_ATTR_IE], in nl80211_associate()
11184 attrs[NL80211_ATTR_IE], in nl80211_associate()
11192 nla_get_flag(attrs[NL80211_ATTR_MLO_LINK_DISABLED]); in nl80211_associate()
11214 kfree(attrs); in nl80211_associate()
11215 attrs = NULL; in nl80211_associate()
11220 req.bss = nl80211_assoc_bss(rdev, ssid, ssid_len, info->attrs, in nl80211_associate()
11234 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
11242 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
11244 info->attrs[NL80211_ATTR_MLO_LINKS], in nl80211_associate()
11274 kfree(attrs); in nl80211_associate()
11292 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
11295 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
11305 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
11307 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
11313 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
11314 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11315 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11318 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
11337 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
11340 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
11350 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
11352 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
11358 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
11359 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11360 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11363 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
11408 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
11409 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
11414 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
11416 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
11431 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
11432 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
11437 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11438 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11440 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
11441 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11442 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11478 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
11479 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
11481 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
11483 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11485 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11495 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11497 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
11500 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
11501 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11504 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
11508 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
11510 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
11513 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
11528 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
11530 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
11542 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
11547 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
11584 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
11587 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
11723 info->attrs); in nl80211_testmode_do()
11737 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
11742 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
11743 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
11864 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
11865 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
11868 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
11870 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
11877 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
11879 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
11883 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
11897 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
11900 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
11903 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
11904 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
11905 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
11907 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
11908 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11909 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11911 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
11912 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11913 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11916 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
11917 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
11926 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
11928 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
11930 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_connect()
11932 info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_connect()
11933 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_connect()
11935 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_connect()
11941 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
11942 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
11949 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_connect()
11951 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_connect()
11953 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_connect()
11955 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_connect()
11958 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
11964 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
11967 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
11969 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
11972 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
11973 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
11978 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
11982 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
11985 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_connect()
11988 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_connect()
11991 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
11993 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
11996 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
11997 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
12002 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
12006 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
12018 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
12024 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
12031 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
12041 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
12042 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
12043 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
12044 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
12046 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
12048 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
12050 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
12052 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
12055 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
12057 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
12059 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
12060 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
12061 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
12062 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
12063 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
12068 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
12069 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
12078 if (nla_get_flag(info->attrs[NL80211_ATTR_MLO_SUPPORT])) in nl80211_connect()
12086 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
12112 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
12113 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
12114 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
12127 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
12128 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
12129 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
12130 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
12132 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
12134 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
12136 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
12138 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
12141 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
12143 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
12145 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
12147 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
12148 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
12149 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
12150 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
12154 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
12155 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
12184 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
12187 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
12205 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
12206 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
12209 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
12210 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
12242 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_set_pmksa()
12245 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_set_pmksa()
12247 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_set_pmksa()
12248 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmksa()
12249 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_set_pmksa()
12250 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_set_pmksa()
12251 info->attrs[NL80211_ATTR_PMK]) { in nl80211_set_pmksa()
12252 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_set_pmksa()
12253 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_set_pmksa()
12254 pmksa.cache_id = nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_set_pmksa()
12259 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_set_pmksa()
12260 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmksa()
12261 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmksa()
12264 if (info->attrs[NL80211_ATTR_PMK_LIFETIME]) in nl80211_set_pmksa()
12266 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]); in nl80211_set_pmksa()
12268 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]) in nl80211_set_pmksa()
12270 nla_get_u8(info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]); in nl80211_set_pmksa()
12303 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_del_pmksa()
12304 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_del_pmksa()
12306 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_del_pmksa()
12307 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmksa()
12308 } else if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_del_pmksa()
12312 if (info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_del_pmksa()
12313 info->attrs[NL80211_ATTR_PMK]) { in nl80211_del_pmksa()
12314 pmksa.cache_id = nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_del_pmksa()
12318 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_del_pmksa()
12319 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_del_pmksa()
12367 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
12368 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
12369 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
12370 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
12371 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
12374 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
12375 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
12376 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
12377 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
12378 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
12379 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
12381 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
12382 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tdls_mgmt()
12387 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
12388 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
12402 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
12403 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
12406 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
12407 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
12416 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remain_on_channel()
12425 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
12426 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
12429 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
12505 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
12511 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
12520 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tx_bitrate_mask()
12528 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_set_tx_bitrate_mask()
12543 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
12546 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
12547 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
12572 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] && in nl80211_register_mgmt()
12581 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12582 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12583 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST], in nl80211_register_mgmt()
12598 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
12601 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
12609 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
12629 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
12632 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
12643 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
12648 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
12654 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
12667 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_mgmt()
12677 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12678 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12680 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
12681 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12689 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12740 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
12764 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
12778 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
12781 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
13021 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
13025 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
13029 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
13035 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
13036 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
13038 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
13039 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
13040 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
13049 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
13050 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
13051 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
13052 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
13053 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
13054 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
13096 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
13103 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
13104 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
13107 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
13108 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
13110 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
13112 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
13115 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
13117 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
13126 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
13128 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
13133 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
13143 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
13152 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
13153 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
13155 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
13169 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
13170 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_join_mesh()
13187 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
13189 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
13199 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
13648 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
13655 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
14049 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
14055 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
14069 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
14113 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
14117 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
14178 const u8 *addr; in nl80211_probe_client() local
14186 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
14203 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
14205 err = rdev_probe_client(rdev, dev, addr, &cookie); in nl80211_probe_client()
14318 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
14322 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
14324 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
14325 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
14439 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
14443 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
14524 memcpy(func->followup_dest.addr, in nl80211_nan_add_func()
14526 sizeof(func->followup_dest.addr)); in nl80211_nan_add_func()
14596 memcpy(func->srf_macs[i++].addr, nla_data(attr), in nl80211_nan_add_func()
14673 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
14676 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
14697 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
14699 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
14706 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
14707 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
14734 if (WARN_ON(!match->inst_id || !match->peer_inst_id || !match->addr)) in cfg80211_nan_match()
14756 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, match->addr)) in cfg80211_nan_match()
14901 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
14902 !info->attrs[NL80211_ATTR_IE]) in nl80211_update_ft_ies()
14906 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
14907 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14908 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14932 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
14933 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
14939 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
14943 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
14995 info->attrs); in nl80211_vendor_cmd()
15011 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
15012 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
15015 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
15016 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
15046 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
15047 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
15048 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
15051 info->attrs[NL80211_ATTR_VENDOR_DATA], in nl80211_vendor_cmd()
15326 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
15327 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15328 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15374 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
15375 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
15378 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
15379 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
15390 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
15392 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
15394 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
15419 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
15422 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
15423 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
15435 const u8 *addr; in nl80211_tdls_channel_switch() local
15451 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
15452 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
15478 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
15479 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
15481 return rdev_tdls_channel_switch(rdev, dev, addr, oper_class, &chandef); in nl80211_tdls_channel_switch()
15489 const u8 *addr; in nl80211_tdls_cancel_channel_switch() local
15504 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
15507 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
15509 rdev_tdls_cancel_channel_switch(rdev, dev, addr); in nl80211_tdls_cancel_channel_switch()
15530 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
15551 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
15557 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
15561 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15562 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15567 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) in nl80211_set_pmk()
15569 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
15589 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
15592 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
15605 if (!info->attrs[NL80211_ATTR_SSID] && in nl80211_external_auth()
15610 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
15613 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
15618 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_external_auth()
15619 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
15623 nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
15627 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
15630 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
15632 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_external_auth()
15633 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_external_auth()
15640 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK]; in nl80211_tx_control_port()
15660 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
15661 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
15662 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
15685 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15686 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15687 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
15688 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
15690 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
15692 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_control_port()
15709 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_get_ftm_responder_stats()
15784 if (!info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_update_owe_info()
15785 !info->attrs[NL80211_ATTR_MAC]) in nl80211_update_owe_info()
15789 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_update_owe_info()
15790 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN); in nl80211_update_owe_info()
15792 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_owe_info()
15793 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15794 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15814 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_probe_mesh_link()
15815 !info->attrs[NL80211_ATTR_FRAME]) { in nl80211_probe_mesh_link()
15823 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_mesh_link()
15824 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15825 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15844 struct nlattr *attrs[], struct net_device *dev, in parse_tid_conf() argument
15853 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS]) in parse_tid_conf()
15857 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]); in parse_tid_conf()
15858 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]); in parse_tid_conf()
15871 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) { in parse_tid_conf()
15874 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]); in parse_tid_conf()
15877 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) { in parse_tid_conf()
15880 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]); in parse_tid_conf()
15886 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) { in parse_tid_conf()
15889 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]); in parse_tid_conf()
15895 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) { in parse_tid_conf()
15898 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]); in parse_tid_conf()
15901 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) { in parse_tid_conf()
15904 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]); in parse_tid_conf()
15907 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) { in parse_tid_conf()
15910 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]); in parse_tid_conf()
15913 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) { in parse_tid_conf()
15916 tid_conf->txrate_type = nla_get_u8(attrs[idx]); in parse_tid_conf()
15920 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr, in parse_tid_conf()
15948 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1]; in nl80211_set_tid_config() local
15949 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tid_config()
15957 if (!info->attrs[NL80211_ATTR_TID_CONFIG]) in nl80211_set_tid_config()
15963 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15974 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_tid_config()
15975 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_tid_config()
15977 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15979 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX, in nl80211_set_tid_config()
15985 ret = parse_tid_conf(rdev, attrs, dev, in nl80211_set_tid_config()
16021 if (!info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT] || in nl80211_color_change()
16022 !info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR] || in nl80211_color_change()
16023 !info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS]) in nl80211_color_change()
16026 params.count = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT]); in nl80211_color_change()
16027 params.color = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR]); in nl80211_color_change()
16029 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_next, in nl80211_color_change()
16039 info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS], in nl80211_color_change()
16113 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_set_fils_aad()
16114 !info->attrs[NL80211_ATTR_FILS_KEK] || in nl80211_set_fils_aad()
16115 !info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_set_fils_aad()
16118 fils_aad.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_fils_aad()
16119 fils_aad.kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
16120 fils_aad.kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
16121 nonces = nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_set_fils_aad()
16131 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_add_link()
16146 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_add_link()
16147 !is_valid_ether_addr(nla_data(info->attrs[NL80211_ATTR_MAC]))) in nl80211_add_link()
16151 ether_addr_copy(wdev->links[link_id].addr, in nl80211_add_link()
16152 nla_data(info->attrs[NL80211_ATTR_MAC])); in nl80211_add_link()
16157 eth_zero_addr(wdev->links[link_id].addr); in nl80211_add_link()
16165 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remove_link()
16170 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link()
16187 bool add) in nl80211_add_mod_link_station() argument
16194 if ((add && !rdev->ops->add_link_station) || in nl80211_add_mod_link_station()
16195 (!add && !rdev->ops->mod_link_station)) in nl80211_add_mod_link_station()
16198 if (add && !info->attrs[NL80211_ATTR_MAC]) in nl80211_add_mod_link_station()
16201 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_add_mod_link_station()
16204 if (add && !info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_add_mod_link_station()
16207 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_add_mod_link_station()
16209 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_add_mod_link_station()
16210 params.link_mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_mod_link_station()
16215 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_add_mod_link_station()
16218 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_add_mod_link_station()
16220 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_add_mod_link_station()
16222 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16224 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16227 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_add_mod_link_station()
16229 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_add_mod_link_station()
16231 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_add_mod_link_station()
16233 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_add_mod_link_station()
16235 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_add_mod_link_station()
16237 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16239 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16241 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_add_mod_link_station()
16243 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16245 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16255 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_add_mod_link_station()
16257 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_add_mod_link_station()
16259 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_add_mod_link_station()
16262 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_add_mod_link_station()
16270 if (add) in nl80211_add_mod_link_station()
16298 if (!info->attrs[NL80211_ATTR_MLD_ADDR] || in nl80211_remove_link_station()
16299 !info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link_station()
16302 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_remove_link_station()
16303 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_remove_link_station()
16318 if (!info->attrs[NL80211_ATTR_MAC] && in nl80211_set_hw_timestamp()
16322 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_hw_timestamp()
16323 hwts.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_hw_timestamp()
16326 nla_get_flag(info->attrs[NL80211_ATTR_HW_TIMESTAMP_ENABLED]); in nl80211_set_hw_timestamp()
16346 if (!info->attrs[NL80211_ATTR_MLO_TTLM_DLINK] || in nl80211_set_ttlm()
16347 !info->attrs[NL80211_ATTR_MLO_TTLM_ULINK]) in nl80211_set_ttlm()
16351 info->attrs[NL80211_ATTR_MLO_TTLM_DLINK], in nl80211_set_ttlm()
16354 info->attrs[NL80211_ATTR_MLO_TTLM_ULINK], in nl80211_set_ttlm()
16474 info->attrs); in nl80211_pre_doit()
16505 struct nlattr *link_id = info->attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_pre_doit()
16528 if (info->attrs[NL80211_ATTR_MLO_LINK_ID] || in nl80211_pre_doit()
16637 if (!info->attrs[NL80211_ATTR_SAR_SPEC]) in nl80211_set_sar_specs()
16641 info->attrs[NL80211_ATTR_SAR_SPEC], in nl80211_set_sar_specs()
18038 const u8 *addr, gfp_t gfp) in nl80211_send_mlme_timeout() argument
18056 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in nl80211_send_mlme_timeout()
18070 struct net_device *netdev, const u8 *addr, in nl80211_send_auth_timeout() argument
18074 addr, gfp); in nl80211_send_auth_timeout()
18078 struct net_device *netdev, const u8 *addr, in nl80211_send_assoc_timeout() argument
18082 addr, gfp); in nl80211_send_assoc_timeout()
18103 link_info_size += cr->links[link].addr ? in nl80211_send_connect_result()
18175 (cr->links[link].addr && in nl80211_send_connect_result()
18177 cr->links[link].addr)) || in nl80211_send_connect_result()
18218 link_info_size += info->links[link].addr ? in nl80211_send_roamed()
18281 (info->links[link].addr && in nl80211_send_roamed()
18283 info->links[link].addr))) in nl80211_send_roamed()
18477 void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *addr, in cfg80211_notify_new_peer_candidate() argument
18489 trace_cfg80211_notify_new_peer_candidate(dev, addr); in cfg80211_notify_new_peer_candidate()
18503 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_notify_new_peer_candidate()
18522 struct net_device *netdev, const u8 *addr, in nl80211_michael_mic_failure() argument
18541 (addr && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) || in nl80211_michael_mic_failure()
18827 const u8 *addr, gfp_t gfp) in __nl80211_unexpected_frame() argument
18850 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in __nl80211_unexpected_frame()
18863 const u8 *addr, gfp_t gfp) in cfg80211_rx_spurious_frame() argument
18868 trace_cfg80211_rx_spurious_frame(dev, addr); in cfg80211_rx_spurious_frame()
18876 addr, gfp); in cfg80211_rx_spurious_frame()
18883 const u8 *addr, gfp_t gfp) in cfg80211_rx_unexpected_4addr_frame() argument
18888 trace_cfg80211_rx_unexpected_4addr_frame(dev, addr); in cfg80211_rx_unexpected_4addr_frame()
18898 addr, gfp); in cfg80211_rx_unexpected_4addr_frame()
19041 const u8 *addr = ehdr->h_source; in __nl80211_rx_control_port() local
19066 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in __nl80211_rx_control_port()
19665 void cfg80211_probe_status(struct net_device *dev, const u8 *addr, in cfg80211_probe_status() argument
19674 trace_cfg80211_probe_status(dev, addr, cookie, acked); in cfg80211_probe_status()
19689 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_probe_status()