Lines Matching 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()
1252 static unsigned int nl80211_link_id(struct nlattr **attrs) in nl80211_link_id() argument
1254 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id()
1262 static int nl80211_link_id_or_invalid(struct nlattr **attrs) in nl80211_link_id_or_invalid() argument
1264 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id_or_invalid()
1343 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
1344 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1345 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1348 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
1349 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1350 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1353 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
1354 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
1356 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
1357 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
1359 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
1360 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
1369 if (info->attrs[NL80211_ATTR_KEY_TYPE]) in nl80211_parse_key_old()
1370 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
1372 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
1376 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
1397 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
1398 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1453 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
3181 struct nlattr **attrs = info->attrs; in nl80211_parse_chandef() local
3184 if (!attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_parse_chandef()
3188 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_parse_chandef()
3189 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_parse_chandef()
3191 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_parse_chandef()
3202 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
3207 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
3210 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
3220 if (attrs[NL80211_ATTR_CENTER_FREQ1] && in nl80211_parse_chandef()
3221 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) { in nl80211_parse_chandef()
3223 attrs[NL80211_ATTR_CENTER_FREQ1], in nl80211_parse_chandef()
3228 if (attrs[NL80211_ATTR_CENTER_FREQ2] && in nl80211_parse_chandef()
3229 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) { in nl80211_parse_chandef()
3231 attrs[NL80211_ATTR_CENTER_FREQ2], in nl80211_parse_chandef()
3238 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE], in nl80211_parse_chandef()
3242 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
3244 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
3249 attrs[NL80211_ATTR_CHANNEL_WIDTH], in nl80211_parse_chandef()
3254 if (attrs[NL80211_ATTR_CENTER_FREQ1]) { in nl80211_parse_chandef()
3256 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
3257 if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]) in nl80211_parse_chandef()
3259 attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]); in nl80211_parse_chandef()
3263 if (attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
3265 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
3268 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_parse_chandef()
3270 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_parse_chandef()
3272 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_parse_chandef()
3274 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_parse_chandef()
3371 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_channel()
3406 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
3407 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
3418 info->attrs); in nl80211_set_wiphy()
3436 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
3438 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
3444 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
3470 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
3484 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3503 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
3504 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3521 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
3535 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3537 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
3545 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3553 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
3554 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
3564 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
3565 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
3585 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
3587 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
3592 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
3594 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
3599 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
3601 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
3619 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
3621 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
3625 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
3626 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3632 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
3636 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3645 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
3652 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
3656 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
3663 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
3667 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
3674 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
4030 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
4034 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
4046 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
4057 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
4068 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
4078 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
4124 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
4125 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
4130 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
4142 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
4144 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
4149 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
4150 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
4193 if (!info->attrs[NL80211_ATTR_IFNAME]) in _nl80211_new_interface()
4196 if (info->attrs[NL80211_ATTR_IFTYPE]) in _nl80211_new_interface()
4197 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in _nl80211_new_interface()
4204 info->attrs[NL80211_ATTR_MAC]) { in _nl80211_new_interface()
4205 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in _nl80211_new_interface()
4211 if (info->attrs[NL80211_ATTR_4ADDR]) { in _nl80211_new_interface()
4212 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in _nl80211_new_interface()
4230 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in _nl80211_new_interface()
4240 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in _nl80211_new_interface()
4245 if (!info->attrs[NL80211_ATTR_MESH_ID]) in _nl80211_new_interface()
4251 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in _nl80211_new_interface()
4253 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in _nl80211_new_interface()
4336 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
4342 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
4440 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_get_key()
4453 if (info->attrs[NL80211_ATTR_KEY_IDX]) { in nl80211_get_key()
4454 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
4462 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
4463 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
4466 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
4467 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
4529 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_key()
4624 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_key()
4625 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_key()
4655 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_new_key()
4667 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
4668 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
4685 info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_key()
4686 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_key()
4726 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_del_key()
4733 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
4734 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
4816 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
4819 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
4824 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
4827 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
4838 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
5082 struct nlattr *attrs[], in nl80211_parse_tx_bitrate_mask() argument
5132 if (!attrs[attr]) in nl80211_parse_tx_bitrate_mask()
5139 nla_for_each_nested(tx_rates, attrs[attr], rem) { in nl80211_parse_tx_bitrate_mask()
5306 struct nlattr *attrs, in nl80211_parse_mbssid_config() argument
5315 if (nla_parse_nested(tb, NL80211_MBSSID_CONFIG_ATTR_MAX, attrs, NULL, in nl80211_parse_mbssid_config()
5368 nl80211_parse_mbssid_elems(struct wiphy *wiphy, struct nlattr *attrs) in nl80211_parse_mbssid_elems() argument
5378 nla_for_each_nested(nl_elems, attrs, rem_elems) in nl80211_parse_mbssid_elems()
5385 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5394 static int nl80211_parse_he_bss_color(struct nlattr *attrs, in nl80211_parse_he_bss_color() argument
5400 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs, in nl80211_parse_he_bss_color()
5419 struct nlattr *attrs[], in nl80211_parse_beacon() argument
5427 bcn->link_id = nl80211_link_id(attrs); in nl80211_parse_beacon()
5429 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
5430 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5431 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5437 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
5438 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5439 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5446 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
5447 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5448 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5451 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
5453 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5455 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5458 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
5460 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5462 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5465 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
5466 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5467 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5470 if (attrs[NL80211_ATTR_FTM_RESPONDER]) { in nl80211_parse_beacon()
5475 attrs[NL80211_ATTR_FTM_RESPONDER], in nl80211_parse_beacon()
5500 if (attrs[NL80211_ATTR_HE_BSS_COLOR]) { in nl80211_parse_beacon()
5501 err = nl80211_parse_he_bss_color(attrs[NL80211_ATTR_HE_BSS_COLOR], in nl80211_parse_beacon()
5508 if (attrs[NL80211_ATTR_MBSSID_ELEMS]) { in nl80211_parse_beacon()
5511 attrs[NL80211_ATTR_MBSSID_ELEMS]); in nl80211_parse_beacon()
5522 static int nl80211_parse_he_obss_pd(struct nlattr *attrs, in nl80211_parse_he_obss_pd() argument
5528 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs, in nl80211_parse_he_obss_pd()
5567 struct nlattr *attrs, in nl80211_parse_fils_discovery() argument
5578 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs, in nl80211_parse_fils_discovery()
5598 struct nlattr *attrs, in nl80211_parse_unsol_bcast_probe_resp() argument
5611 attrs, NULL, NULL); in nl80211_parse_unsol_bcast_probe_resp()
5773 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_start_ap()
5790 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
5791 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
5792 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
5799 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon); in nl80211_start_ap()
5804 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
5806 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
5820 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
5821 params->ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5823 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5842 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) in nl80211_start_ap()
5844 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
5846 params->privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
5848 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
5850 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
5864 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
5870 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
5873 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
5879 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
5887 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
5894 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
5903 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
5926 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
5927 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_start_ap()
5940 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
5942 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
5968 params->pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
5974 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
5984 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]); in nl80211_start_ap()
5986 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) { in nl80211_start_ap()
5988 info->attrs[NL80211_ATTR_HE_OBSS_PD], in nl80211_start_ap()
5994 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) { in nl80211_start_ap()
5996 info->attrs[NL80211_ATTR_FILS_DISCOVERY], in nl80211_start_ap()
6002 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) { in nl80211_start_ap()
6004 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP], in nl80211_start_ap()
6010 if (info->attrs[NL80211_ATTR_MBSSID_CONFIG]) { in nl80211_start_ap()
6012 info->attrs[NL80211_ATTR_MBSSID_CONFIG], in nl80211_start_ap()
6025 if (info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]) in nl80211_start_ap()
6027 info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]); in nl80211_start_ap()
6028 else if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT]) in nl80211_start_ap()
6032 info->attrs[NL80211_ATTR_SOCKET_OWNER] && in nl80211_start_ap()
6048 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
6068 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_beacon()
6084 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms); in nl80211_set_beacon()
6100 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_stop_ap()
6127 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
6143 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
6602 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
6605 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
6790 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
6832 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
6835 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
6862 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
6864 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6866 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6876 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
6878 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6880 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6890 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
6891 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
6892 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
6894 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
6895 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
6897 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
6898 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
6900 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6902 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6904 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_set_station_tdls()
6906 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
6908 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
6932 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) { in nl80211_parse_sta_txpower_setting()
6939 txpwr->type = nla_get_u8(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
6944 if (info->attrs[idx]) in nl80211_parse_sta_txpower_setting()
6945 txpwr->power = nla_get_s16(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
6976 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
6977 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
6979 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_set_station()
6980 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_set_station()
6982 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
6984 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
6988 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) in nl80211_set_station()
6990 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
6994 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
6998 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_station()
7000 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_set_station()
7009 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_set_station()
7012 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7016 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7020 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
7022 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7024 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7027 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
7029 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
7033 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
7035 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7037 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7043 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_set_station()
7045 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
7047 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
7049 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
7050 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) in nl80211_set_station()
7052 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
7056 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) in nl80211_set_station()
7058 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
7060 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
7063 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
7066 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_set_station()
7068 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_set_station()
7070 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_set_station()
7072 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_set_station()
7135 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
7138 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
7141 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
7144 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
7145 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7149 nl80211_link_id_or_invalid(info->attrs); in nl80211_new_station()
7151 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_new_station()
7152 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_new_station()
7155 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7159 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7163 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7165 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7167 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
7169 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_station()
7170 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_station()
7172 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
7174 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
7184 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7185 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
7187 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
7189 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
7191 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
7195 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
7197 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7199 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7202 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
7204 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
7206 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
7208 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
7210 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
7212 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7214 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7216 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_new_station()
7218 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7220 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7230 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_new_station()
7232 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_new_station()
7234 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
7237 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
7240 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_new_station()
7242 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
7244 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_new_station()
7246 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_new_station()
7305 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7345 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7411 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
7412 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
7434 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
7436 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
7445 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
7447 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
7586 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
7589 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
7621 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
7624 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
7627 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
7628 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
7646 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
7649 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
7652 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
7653 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
7670 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
7671 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
7694 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
7697 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
7792 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
7794 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
7795 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
7797 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
7798 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
7800 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
7801 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
7803 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
7805 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
7807 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
7808 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
7809 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
7811 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
7813 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
7817 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
7823 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
7828 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
7865 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
7867 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
7874 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
7877 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
7880 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
7882 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
8093 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
8095 …if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFI… in nl80211_parse_mesh_config()
8231 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
8233 …if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SET… in nl80211_parse_mesh_setup()
8392 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
8587 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
8590 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
8593 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
8595 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
8596 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
8598 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8628 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8755 int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
8760 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
8770 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
8773 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
8774 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
8847 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
8854 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
8875 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
8915 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
8946 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) { in nl80211_trigger_scan()
8950 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]; in nl80211_trigger_scan()
8952 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) in nl80211_trigger_scan()
8953 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]; in nl80211_trigger_scan()
8963 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
8964 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
8970 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
8971 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9066 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
9077 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
9078 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9080 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
9089 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
9091 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
9112 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
9114 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
9116 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
9119 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
9125 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
9136 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
9138 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
9140 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
9141 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
9189 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
9194 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
9203 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
9220 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
9308 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
9318 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9320 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
9327 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
9328 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9344 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9346 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9382 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
9383 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
9390 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
9395 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9399 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
9408 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9419 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
9420 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
9467 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9470 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
9518 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9532 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9534 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9606 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
9610 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
9614 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
9616 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
9618 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
9620 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
9625 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
9629 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
9638 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
9664 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
9670 info->attrs, in nl80211_start_sched_scan()
9690 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
9714 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
9715 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
9768 if (nla_get_flag(info->attrs[NL80211_ATTR_RADAR_BACKGROUND])) { in nl80211_start_radar_detection()
9869 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_channel_switch()
9914 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
9915 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
9919 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
9925 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
9934 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after); in nl80211_channel_switch()
9946 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
10047 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
10053 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
10429 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
10432 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
10435 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
10438 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
10483 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
10484 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_authenticate()
10485 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_authenticate()
10487 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_authenticate()
10493 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10494 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10496 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
10497 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10498 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10501 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
10509 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
10512 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
10518 req.auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10519 req.auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10522 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
10535 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_authenticate()
10539 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_authenticate()
10541 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_authenticate()
10562 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
10582 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
10584 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
10588 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
10593 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
10598 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
10606 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH]) in nl80211_crypto_settings()
10610 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
10614 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10615 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10633 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
10635 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
10641 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
10643 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
10648 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
10652 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10653 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10665 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
10666 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
10673 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
10676 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) { in nl80211_crypto_settings()
10683 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10685 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10688 if (info->attrs[NL80211_ATTR_SAE_PWE]) in nl80211_crypto_settings()
10690 nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]); in nl80211_crypto_settings()
10699 struct nlattr **attrs, in nl80211_assoc_bss() argument
10707 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_assoc_bss()
10710 bssid = nla_data(attrs[NL80211_ATTR_MAC]); in nl80211_assoc_bss()
10712 freq = MHZ_TO_KHZ(nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_assoc_bss()
10713 if (attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_assoc_bss()
10714 freq += nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_assoc_bss()
10736 struct nlattr **attrs = NULL; in nl80211_associate() local
10745 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_associate()
10755 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
10756 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
10758 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
10759 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
10760 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
10770 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
10772 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
10779 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
10780 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
10782 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
10785 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
10787 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
10790 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
10791 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
10794 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
10798 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
10801 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_associate()
10804 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_associate()
10807 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
10809 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
10812 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
10813 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
10816 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
10820 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
10830 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
10831 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
10832 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
10833 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
10836 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
10839 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) { in nl80211_associate()
10840 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY]) in nl80211_associate()
10843 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]), in nl80211_associate()
10847 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) { in nl80211_associate()
10848 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) in nl80211_associate()
10851 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]), in nl80211_associate()
10855 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_associate()
10857 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
10858 unsigned int attrsize = NUM_NL80211_ATTR * sizeof(*attrs); in nl80211_associate()
10868 if (info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
10869 info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_associate()
10870 !info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_associate()
10873 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_associate()
10875 attrs = kzalloc(attrsize, GFP_KERNEL); in nl80211_associate()
10876 if (!attrs) in nl80211_associate()
10880 info->attrs[NL80211_ATTR_MLO_LINKS], in nl80211_associate()
10882 memset(attrs, 0, attrsize); in nl80211_associate()
10884 nla_parse_nested(attrs, NL80211_ATTR_MAX, in nl80211_associate()
10887 if (!attrs[NL80211_ATTR_MLO_LINK_ID]) { in nl80211_associate()
10892 link_id = nla_get_u8(attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_associate()
10899 nl80211_assoc_bss(rdev, ssid, ssid_len, attrs, in nl80211_associate()
10907 if (attrs[NL80211_ATTR_IE]) { in nl80211_associate()
10909 nla_data(attrs[NL80211_ATTR_IE]); in nl80211_associate()
10911 nla_len(attrs[NL80211_ATTR_IE]); in nl80211_associate()
10945 kfree(attrs); in nl80211_associate()
10946 attrs = NULL; in nl80211_associate()
10951 req.bss = nl80211_assoc_bss(rdev, ssid, ssid_len, info->attrs, in nl80211_associate()
10963 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
10977 kfree(attrs); in nl80211_associate()
10995 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
10998 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
11008 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
11010 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
11016 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
11017 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11018 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11021 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
11043 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
11046 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
11056 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
11058 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
11064 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
11065 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11066 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11069 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
11117 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
11118 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
11123 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
11125 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
11140 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
11141 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
11146 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11147 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11149 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
11150 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11151 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11187 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
11188 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
11190 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
11192 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11194 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11204 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11206 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
11209 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
11210 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11213 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
11217 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
11219 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
11222 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
11237 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
11239 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
11251 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
11257 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
11295 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
11298 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
11434 info->attrs); in nl80211_testmode_do()
11448 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
11453 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
11454 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
11575 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
11576 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
11579 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
11581 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
11588 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
11590 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
11594 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
11608 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
11611 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
11614 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
11615 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
11616 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
11618 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
11619 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11620 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11622 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
11623 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11624 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11627 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
11628 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
11637 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
11639 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
11641 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_connect()
11643 info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_connect()
11644 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_connect()
11646 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_connect()
11652 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
11653 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
11660 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_connect()
11662 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_connect()
11664 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_connect()
11666 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_connect()
11669 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
11675 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
11678 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
11680 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
11683 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
11684 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
11689 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
11693 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
11696 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_connect()
11699 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_connect()
11702 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
11704 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
11707 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
11708 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
11713 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
11717 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
11729 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
11735 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
11742 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
11752 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
11753 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
11754 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
11755 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
11757 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
11759 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
11761 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
11763 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
11766 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
11768 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
11770 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
11771 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
11772 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
11773 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
11774 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
11779 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
11780 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
11789 if (nla_get_flag(info->attrs[NL80211_ATTR_MLO_SUPPORT])) in nl80211_connect()
11799 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
11828 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
11829 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
11830 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
11843 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
11844 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
11845 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
11846 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
11848 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
11850 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
11852 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
11854 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
11857 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
11859 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
11861 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
11863 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
11864 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
11865 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
11866 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
11870 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
11871 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
11905 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
11908 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
11929 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
11930 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
11933 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
11934 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
11964 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_setdel_pmksa()
11967 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_setdel_pmksa()
11969 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_setdel_pmksa()
11970 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_setdel_pmksa()
11971 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_setdel_pmksa()
11972 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_setdel_pmksa()
11974 info->attrs[NL80211_ATTR_PMK])) { in nl80211_setdel_pmksa()
11975 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
11976 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
11978 nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_setdel_pmksa()
11982 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_setdel_pmksa()
11983 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
11984 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
11987 if (info->attrs[NL80211_ATTR_PMK_LIFETIME]) in nl80211_setdel_pmksa()
11989 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]); in nl80211_setdel_pmksa()
11991 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]) in nl80211_setdel_pmksa()
11994 info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]); in nl80211_setdel_pmksa()
12050 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
12051 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
12052 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
12053 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
12054 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
12057 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
12058 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
12059 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
12060 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
12061 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
12062 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
12064 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
12069 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
12070 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
12084 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
12085 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
12088 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
12089 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
12098 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remain_on_channel()
12107 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
12108 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
12111 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
12192 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
12198 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
12207 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tx_bitrate_mask()
12217 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_set_tx_bitrate_mask()
12235 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
12238 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
12239 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
12260 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] && in nl80211_register_mgmt()
12269 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12270 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12271 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST], in nl80211_register_mgmt()
12286 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
12289 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
12297 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
12313 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
12316 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
12327 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
12332 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
12338 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
12354 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_mgmt()
12367 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12368 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12370 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
12371 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12379 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12430 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
12450 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
12464 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
12467 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
12696 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
12700 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
12704 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
12710 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
12711 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
12713 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
12714 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
12715 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
12724 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
12725 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
12726 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
12727 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
12728 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
12729 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
12771 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
12778 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
12779 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
12782 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
12783 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
12785 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
12787 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
12790 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
12792 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
12801 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
12803 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
12808 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
12818 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
12827 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
12828 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
12830 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
12844 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
12845 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_join_mesh()
12862 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
12864 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
12875 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
13325 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
13332 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
13726 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
13732 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
13746 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
13790 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
13794 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
13869 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
13886 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
14001 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
14005 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
14007 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
14008 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
14122 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
14126 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
14356 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
14359 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
14380 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
14382 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
14389 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
14390 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
14584 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
14585 !info->attrs[NL80211_ATTR_IE]) in nl80211_update_ft_ies()
14589 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
14590 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14591 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14615 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
14616 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
14622 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
14626 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
14678 info->attrs); in nl80211_vendor_cmd()
14694 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
14695 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
14698 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
14699 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
14729 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
14730 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
14731 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
14734 info->attrs[NL80211_ATTR_VENDOR_DATA], in nl80211_vendor_cmd()
15009 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
15010 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15011 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15060 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
15061 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
15064 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
15065 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
15076 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
15078 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
15080 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
15114 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
15117 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
15118 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
15150 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
15151 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
15177 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
15178 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
15208 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
15211 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
15236 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
15258 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
15267 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
15273 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15274 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15281 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) in nl80211_set_pmk()
15283 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
15307 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
15311 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
15327 if (!info->attrs[NL80211_ATTR_SSID] && in nl80211_external_auth()
15332 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
15335 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
15340 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_external_auth()
15341 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
15345 nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
15349 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
15352 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
15354 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_external_auth()
15355 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_external_auth()
15362 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK]; in nl80211_tx_control_port()
15382 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
15383 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
15384 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
15414 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15415 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15416 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
15417 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
15419 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
15421 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_control_port()
15441 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_get_ftm_responder_stats()
15516 if (!info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_update_owe_info()
15517 !info->attrs[NL80211_ATTR_MAC]) in nl80211_update_owe_info()
15521 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_update_owe_info()
15522 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN); in nl80211_update_owe_info()
15524 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_owe_info()
15525 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15526 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15546 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_probe_mesh_link()
15547 !info->attrs[NL80211_ATTR_FRAME]) { in nl80211_probe_mesh_link()
15555 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_mesh_link()
15556 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15557 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15576 struct nlattr *attrs[], struct net_device *dev, in parse_tid_conf() argument
15585 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS]) in parse_tid_conf()
15589 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]); in parse_tid_conf()
15590 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]); in parse_tid_conf()
15603 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) { in parse_tid_conf()
15606 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]); in parse_tid_conf()
15609 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) { in parse_tid_conf()
15612 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]); in parse_tid_conf()
15618 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) { in parse_tid_conf()
15621 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]); in parse_tid_conf()
15627 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) { in parse_tid_conf()
15630 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]); in parse_tid_conf()
15633 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) { in parse_tid_conf()
15636 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]); in parse_tid_conf()
15639 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) { in parse_tid_conf()
15642 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]); in parse_tid_conf()
15645 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) { in parse_tid_conf()
15648 tid_conf->txrate_type = nla_get_u8(attrs[idx]); in parse_tid_conf()
15652 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr, in parse_tid_conf()
15680 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1]; in nl80211_set_tid_config() local
15681 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tid_config()
15689 if (!info->attrs[NL80211_ATTR_TID_CONFIG]) in nl80211_set_tid_config()
15695 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15706 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_tid_config()
15707 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_tid_config()
15711 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15713 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX, in nl80211_set_tid_config()
15719 ret = parse_tid_conf(rdev, attrs, dev, in nl80211_set_tid_config()
15756 if (!info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT] || in nl80211_color_change()
15757 !info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR] || in nl80211_color_change()
15758 !info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS]) in nl80211_color_change()
15761 params.count = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT]); in nl80211_color_change()
15762 params.color = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR]); in nl80211_color_change()
15764 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_next); in nl80211_color_change()
15773 info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS], in nl80211_color_change()
15846 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_set_fils_aad()
15847 !info->attrs[NL80211_ATTR_FILS_KEK] || in nl80211_set_fils_aad()
15848 !info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_set_fils_aad()
15851 fils_aad.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_fils_aad()
15852 fils_aad.kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
15853 fils_aad.kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
15854 nonces = nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_set_fils_aad()
15864 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_add_link()
15879 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_add_link()
15880 !is_valid_ether_addr(nla_data(info->attrs[NL80211_ATTR_MAC]))) in nl80211_add_link()
15886 nla_data(info->attrs[NL80211_ATTR_MAC])); in nl80211_add_link()
15900 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remove_link()
15905 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link()
15935 if (add && !info->attrs[NL80211_ATTR_MAC]) in nl80211_add_mod_link_station()
15938 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_add_mod_link_station()
15941 if (add && !info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_add_mod_link_station()
15944 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_add_mod_link_station()
15946 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_add_mod_link_station()
15947 params.link_mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_mod_link_station()
15952 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_add_mod_link_station()
15955 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_add_mod_link_station()
15957 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_add_mod_link_station()
15959 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
15961 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
15964 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_add_mod_link_station()
15966 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_add_mod_link_station()
15968 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_add_mod_link_station()
15970 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_add_mod_link_station()
15972 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_add_mod_link_station()
15974 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
15976 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
15978 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_add_mod_link_station()
15980 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
15982 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
15992 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_add_mod_link_station()
15994 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_add_mod_link_station()
15996 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_add_mod_link_station()
15999 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_add_mod_link_station()
16040 if (!info->attrs[NL80211_ATTR_MLD_ADDR] || in nl80211_remove_link_station()
16041 !info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link_station()
16044 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_remove_link_station()
16045 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_remove_link_station()
16167 info->attrs); in nl80211_pre_doit()
16198 struct nlattr *link_id = info->attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_pre_doit()
16221 if (info->attrs[NL80211_ATTR_MLO_LINK_ID] || in nl80211_pre_doit()
16329 if (!info->attrs[NL80211_ATTR_SAR_SPEC]) in nl80211_set_sar_specs()
16333 info->attrs[NL80211_ATTR_SAR_SPEC], in nl80211_set_sar_specs()