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()
1253 static unsigned int nl80211_link_id(struct nlattr **attrs) in nl80211_link_id() argument
1255 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id()
1263 static int nl80211_link_id_or_invalid(struct nlattr **attrs) in nl80211_link_id_or_invalid() argument
1265 struct nlattr *linkid = attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_link_id_or_invalid()
1344 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
1345 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1346 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1349 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
1350 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1351 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1354 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
1355 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
1357 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
1358 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
1360 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
1361 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
1370 if (info->attrs[NL80211_ATTR_KEY_TYPE]) in nl80211_parse_key_old()
1371 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
1373 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
1377 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
1398 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
1399 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1454 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
3189 *punct_bitmap = nla_get_u32(info->attrs[NL80211_ATTR_PUNCT_BITMAP]); in nl80211_parse_punct_bitmap()
3201 struct nlattr **attrs = info->attrs; in nl80211_parse_chandef() local
3204 if (!attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_parse_chandef()
3205 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
3211 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_parse_chandef()
3212 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_parse_chandef()
3214 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_parse_chandef()
3225 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
3230 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
3233 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
3243 if (attrs[NL80211_ATTR_CENTER_FREQ1] && in nl80211_parse_chandef()
3244 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) { in nl80211_parse_chandef()
3246 attrs[NL80211_ATTR_CENTER_FREQ1], in nl80211_parse_chandef()
3251 if (attrs[NL80211_ATTR_CENTER_FREQ2] && in nl80211_parse_chandef()
3252 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) { in nl80211_parse_chandef()
3254 attrs[NL80211_ATTR_CENTER_FREQ2], in nl80211_parse_chandef()
3261 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE], in nl80211_parse_chandef()
3265 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
3267 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
3272 attrs[NL80211_ATTR_CHANNEL_WIDTH], in nl80211_parse_chandef()
3277 if (attrs[NL80211_ATTR_CENTER_FREQ1]) { in nl80211_parse_chandef()
3279 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
3280 if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]) in nl80211_parse_chandef()
3282 attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]); in nl80211_parse_chandef()
3286 if (attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
3288 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
3291 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_parse_chandef()
3293 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_parse_chandef()
3295 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_parse_chandef()
3297 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_parse_chandef()
3394 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_channel()
3429 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
3430 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
3441 info->attrs); in nl80211_set_wiphy()
3459 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
3461 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
3467 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
3493 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
3507 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3526 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
3527 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_wiphy()
3544 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
3558 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3560 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
3568 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3576 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
3577 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
3587 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
3588 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
3608 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
3610 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
3615 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
3617 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
3622 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
3624 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
3642 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
3644 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
3648 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
3649 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3655 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
3659 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3668 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
3675 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
3679 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
3686 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
3690 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
3697 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
4056 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
4060 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
4072 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
4083 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
4094 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
4104 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
4150 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
4151 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
4156 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
4168 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
4170 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
4175 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
4176 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
4219 if (!info->attrs[NL80211_ATTR_IFNAME]) in _nl80211_new_interface()
4222 if (info->attrs[NL80211_ATTR_IFTYPE]) in _nl80211_new_interface()
4223 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in _nl80211_new_interface()
4230 info->attrs[NL80211_ATTR_MAC]) { in _nl80211_new_interface()
4231 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in _nl80211_new_interface()
4237 if (info->attrs[NL80211_ATTR_4ADDR]) { in _nl80211_new_interface()
4238 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in _nl80211_new_interface()
4256 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in _nl80211_new_interface()
4266 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in _nl80211_new_interface()
4271 if (!info->attrs[NL80211_ATTR_MESH_ID]) in _nl80211_new_interface()
4277 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in _nl80211_new_interface()
4279 nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in _nl80211_new_interface()
4362 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
4368 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
4466 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_get_key()
4479 if (info->attrs[NL80211_ATTR_KEY_IDX]) { in nl80211_get_key()
4480 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
4488 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
4489 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
4492 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
4493 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
4555 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_key()
4650 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_key()
4651 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_key()
4681 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_new_key()
4693 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
4694 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
4711 info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_key()
4712 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_key()
4752 int link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_del_key()
4759 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
4760 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
4842 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
4845 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
4850 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
4853 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
4864 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
5108 struct nlattr *attrs[], in nl80211_parse_tx_bitrate_mask() argument
5158 if (!attrs[attr]) in nl80211_parse_tx_bitrate_mask()
5165 nla_for_each_nested(tx_rates, attrs[attr], rem) { in nl80211_parse_tx_bitrate_mask()
5332 struct nlattr *attrs, in nl80211_parse_mbssid_config() argument
5341 if (nla_parse_nested(tb, NL80211_MBSSID_CONFIG_ATTR_MAX, attrs, NULL, in nl80211_parse_mbssid_config()
5394 nl80211_parse_mbssid_elems(struct wiphy *wiphy, struct nlattr *attrs) in nl80211_parse_mbssid_elems() argument
5404 nla_for_each_nested(nl_elems, attrs, rem_elems) in nl80211_parse_mbssid_elems()
5411 nla_for_each_nested(nl_elems, attrs, rem_elems) { in nl80211_parse_mbssid_elems()
5420 static int nl80211_parse_he_bss_color(struct nlattr *attrs, in nl80211_parse_he_bss_color() argument
5426 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs, in nl80211_parse_he_bss_color()
5445 struct nlattr *attrs[], in nl80211_parse_beacon() argument
5453 bcn->link_id = nl80211_link_id(attrs); in nl80211_parse_beacon()
5455 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
5456 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5457 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
5463 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
5464 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5465 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
5472 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
5473 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5474 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
5477 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
5479 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5481 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
5484 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
5486 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5488 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
5491 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
5492 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5493 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
5496 if (attrs[NL80211_ATTR_FTM_RESPONDER]) { in nl80211_parse_beacon()
5501 attrs[NL80211_ATTR_FTM_RESPONDER], in nl80211_parse_beacon()
5526 if (attrs[NL80211_ATTR_HE_BSS_COLOR]) { in nl80211_parse_beacon()
5527 err = nl80211_parse_he_bss_color(attrs[NL80211_ATTR_HE_BSS_COLOR], in nl80211_parse_beacon()
5534 if (attrs[NL80211_ATTR_MBSSID_ELEMS]) { in nl80211_parse_beacon()
5537 attrs[NL80211_ATTR_MBSSID_ELEMS]); in nl80211_parse_beacon()
5548 static int nl80211_parse_he_obss_pd(struct nlattr *attrs, in nl80211_parse_he_obss_pd() argument
5554 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs, in nl80211_parse_he_obss_pd()
5593 struct nlattr *attrs, in nl80211_parse_fils_discovery() argument
5604 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs, in nl80211_parse_fils_discovery()
5624 struct nlattr *attrs, in nl80211_parse_unsol_bcast_probe_resp() argument
5637 attrs, NULL, NULL); in nl80211_parse_unsol_bcast_probe_resp()
5835 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_start_ap()
5852 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
5853 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
5854 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
5861 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms->beacon); in nl80211_start_ap()
5866 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
5868 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
5882 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
5883 params->ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5885 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5904 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) in nl80211_start_ap()
5906 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
5908 params->privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
5910 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
5912 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
5926 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
5932 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
5935 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
5941 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
5949 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
5956 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
5965 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
5980 if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) { in nl80211_start_ap()
5996 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
5997 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_start_ap()
6010 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
6012 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
6038 params->pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
6044 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
6054 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]); in nl80211_start_ap()
6056 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) { in nl80211_start_ap()
6058 info->attrs[NL80211_ATTR_HE_OBSS_PD], in nl80211_start_ap()
6064 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) { in nl80211_start_ap()
6066 info->attrs[NL80211_ATTR_FILS_DISCOVERY], in nl80211_start_ap()
6072 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) { in nl80211_start_ap()
6074 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP], in nl80211_start_ap()
6080 if (info->attrs[NL80211_ATTR_MBSSID_CONFIG]) { in nl80211_start_ap()
6082 info->attrs[NL80211_ATTR_MBSSID_CONFIG], in nl80211_start_ap()
6095 if (info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]) in nl80211_start_ap()
6097 info->attrs[NL80211_ATTR_AP_SETTINGS_FLAGS]); in nl80211_start_ap()
6098 else if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT]) in nl80211_start_ap()
6102 info->attrs[NL80211_ATTR_SOCKET_OWNER] && in nl80211_start_ap()
6118 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
6140 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_beacon()
6156 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms); in nl80211_set_beacon()
6172 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_stop_ap()
6199 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
6215 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
6690 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
6693 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
6878 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
6920 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
6923 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
6950 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
6952 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6954 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6964 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
6966 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6968 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6978 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
6979 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
6980 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
6982 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
6983 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
6985 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
6986 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
6988 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6990 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6992 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_set_station_tdls()
6994 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
6996 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_set_station_tdls()
7020 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) { in nl80211_parse_sta_txpower_setting()
7027 txpwr->type = nla_get_u8(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7032 if (info->attrs[idx]) in nl80211_parse_sta_txpower_setting()
7033 txpwr->power = nla_get_s16(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
7064 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
7065 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
7067 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_set_station()
7068 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_set_station()
7070 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
7072 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
7076 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) in nl80211_set_station()
7078 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
7082 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
7086 nl80211_link_id_or_invalid(info->attrs); in nl80211_set_station()
7088 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_set_station()
7097 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_set_station()
7100 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7104 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
7108 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
7110 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7112 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
7115 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
7117 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
7121 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
7123 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7125 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
7131 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_set_station()
7133 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
7135 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
7137 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
7138 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) in nl80211_set_station()
7140 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
7144 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) in nl80211_set_station()
7146 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
7148 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
7151 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
7154 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_set_station()
7156 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_set_station()
7158 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_set_station()
7160 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_set_station()
7223 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
7226 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
7229 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
7232 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
7233 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7237 nl80211_link_id_or_invalid(info->attrs); in nl80211_new_station()
7239 if (info->attrs[NL80211_ATTR_MLD_ADDR]) { in nl80211_new_station()
7240 mac_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_new_station()
7243 nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7247 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
7251 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7253 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
7255 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
7257 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_station()
7258 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_station()
7260 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
7262 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
7272 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7273 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
7275 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
7277 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
7279 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
7283 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
7285 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7287 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
7290 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
7292 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
7294 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
7296 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
7298 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
7300 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7302 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
7304 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_new_station()
7306 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7308 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_new_station()
7318 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_new_station()
7320 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_new_station()
7322 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
7325 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
7328 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_new_station()
7330 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
7332 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_new_station()
7334 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_new_station()
7393 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7433 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
7499 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
7500 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
7522 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
7524 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
7533 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
7535 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
7674 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
7677 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
7709 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
7712 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
7715 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
7716 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
7734 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
7737 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
7740 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
7741 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
7758 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
7759 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
7782 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
7785 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
7871 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_set_bss()
7881 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
7883 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
7884 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
7886 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
7887 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
7889 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
7890 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
7892 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
7894 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
7896 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
7897 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
7898 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
7900 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
7902 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
7906 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
7912 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
7917 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
7954 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
7956 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
7963 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
7966 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
7969 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
7971 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
8182 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
8184 …if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFI… in nl80211_parse_mesh_config()
8320 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
8322 …if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SET… in nl80211_parse_mesh_setup()
8481 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
8676 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
8679 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
8682 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
8684 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
8685 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
8687 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8717 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
8844 int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
8849 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
8859 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
8862 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
8863 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
8936 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
8943 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
8964 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
9004 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
9035 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) { in nl80211_trigger_scan()
9039 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]; in nl80211_trigger_scan()
9041 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) in nl80211_trigger_scan()
9042 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]; in nl80211_trigger_scan()
9052 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
9053 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
9059 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
9060 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9155 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
9166 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
9167 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
9169 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
9178 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
9180 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
9201 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
9203 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
9205 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
9208 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
9214 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
9225 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
9227 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
9229 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
9230 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
9278 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
9283 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
9292 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
9309 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
9397 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
9407 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9409 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
9416 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
9417 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9433 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9435 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9471 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
9472 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
9479 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
9484 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9488 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
9497 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
9508 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
9509 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
9556 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
9559 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
9607 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
9621 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
9623 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
9695 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
9699 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
9703 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
9705 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
9707 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
9709 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
9714 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
9718 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
9727 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
9753 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
9759 info->attrs, in nl80211_start_sched_scan()
9779 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
9803 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
9804 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
9857 if (nla_get_flag(info->attrs[NL80211_ATTR_RADAR_BACKGROUND])) { in nl80211_start_radar_detection()
9958 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_channel_switch()
10003 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
10004 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
10008 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
10014 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
10023 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after); in nl80211_channel_switch()
10035 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
10136 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
10142 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
10145 if (info->attrs[NL80211_ATTR_PUNCT_BITMAP]) { in nl80211_channel_switch()
10526 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
10529 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
10532 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
10535 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
10580 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
10581 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_authenticate()
10582 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_authenticate()
10584 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_authenticate()
10590 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10591 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
10593 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
10594 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10595 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
10598 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
10606 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
10609 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
10615 req.auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10616 req.auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
10619 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
10632 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_authenticate()
10636 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_authenticate()
10638 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_authenticate()
10659 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
10679 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
10681 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
10685 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
10690 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
10695 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
10703 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH]) in nl80211_crypto_settings()
10707 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
10711 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10712 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
10730 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
10732 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
10738 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
10740 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
10745 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
10749 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10750 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
10762 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
10763 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
10770 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
10773 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) { in nl80211_crypto_settings()
10780 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10782 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
10785 if (info->attrs[NL80211_ATTR_SAE_PWE]) in nl80211_crypto_settings()
10787 nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]); in nl80211_crypto_settings()
10796 struct nlattr **attrs, in nl80211_assoc_bss() argument
10804 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_assoc_bss()
10807 bssid = nla_data(attrs[NL80211_ATTR_MAC]); in nl80211_assoc_bss()
10809 freq = MHZ_TO_KHZ(nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_assoc_bss()
10810 if (attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_assoc_bss()
10811 freq += nla_get_u32(attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_assoc_bss()
10833 struct nlattr **attrs = NULL; in nl80211_associate() local
10842 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_associate()
10852 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
10853 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
10855 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
10856 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
10857 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
10867 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
10869 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
10876 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
10877 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
10879 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
10882 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
10884 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
10887 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
10888 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
10891 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
10895 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
10898 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_associate()
10901 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_associate()
10904 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
10906 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
10909 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
10910 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
10913 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
10917 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
10927 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
10928 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
10929 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
10930 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
10933 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
10936 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) { in nl80211_associate()
10937 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY]) in nl80211_associate()
10940 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]), in nl80211_associate()
10944 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) { in nl80211_associate()
10945 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) in nl80211_associate()
10948 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]), in nl80211_associate()
10952 req.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_associate()
10954 if (info->attrs[NL80211_ATTR_MLO_LINKS]) { in nl80211_associate()
10955 unsigned int attrsize = NUM_NL80211_ATTR * sizeof(*attrs); in nl80211_associate()
10965 if (info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
10966 info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_associate()
10967 !info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_associate()
10970 req.ap_mld_addr = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_associate()
10972 attrs = kzalloc(attrsize, GFP_KERNEL); in nl80211_associate()
10973 if (!attrs) in nl80211_associate()
10977 info->attrs[NL80211_ATTR_MLO_LINKS], in nl80211_associate()
10979 memset(attrs, 0, attrsize); in nl80211_associate()
10981 nla_parse_nested(attrs, NL80211_ATTR_MAX, in nl80211_associate()
10984 if (!attrs[NL80211_ATTR_MLO_LINK_ID]) { in nl80211_associate()
10989 link_id = nla_get_u8(attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_associate()
10996 nl80211_assoc_bss(rdev, ssid, ssid_len, attrs, in nl80211_associate()
11004 if (attrs[NL80211_ATTR_IE]) { in nl80211_associate()
11006 nla_data(attrs[NL80211_ATTR_IE]); in nl80211_associate()
11008 nla_len(attrs[NL80211_ATTR_IE]); in nl80211_associate()
11042 kfree(attrs); in nl80211_associate()
11043 attrs = NULL; in nl80211_associate()
11048 req.bss = nl80211_assoc_bss(rdev, ssid, ssid_len, info->attrs, in nl80211_associate()
11060 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
11074 kfree(attrs); in nl80211_associate()
11092 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
11095 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
11105 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
11107 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
11113 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
11114 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11115 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
11118 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
11140 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
11143 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
11153 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
11155 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
11161 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
11162 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11163 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
11166 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
11214 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
11215 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
11220 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
11222 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
11237 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
11238 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
11243 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11244 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
11246 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
11247 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11248 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
11284 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
11285 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
11287 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
11289 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11291 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
11301 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11303 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
11306 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
11307 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
11310 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
11314 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
11316 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
11319 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
11334 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
11336 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
11348 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
11354 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
11392 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
11395 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
11531 info->attrs); in nl80211_testmode_do()
11545 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
11550 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
11551 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
11672 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
11673 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
11676 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
11678 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
11685 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
11687 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
11691 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
11705 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
11708 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
11711 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
11712 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
11713 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
11715 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
11716 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11717 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
11719 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
11720 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11721 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
11724 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
11725 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
11734 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
11736 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
11738 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_connect()
11740 info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_connect()
11741 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_connect()
11743 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_connect()
11749 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
11750 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
11757 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_connect()
11759 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_connect()
11761 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_connect()
11763 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_connect()
11766 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
11772 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
11775 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
11777 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
11780 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
11781 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
11786 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
11790 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
11793 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HE])) in nl80211_connect()
11796 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_EHT])) in nl80211_connect()
11799 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
11801 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
11804 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
11805 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
11810 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
11814 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
11826 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
11832 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
11839 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
11849 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
11850 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
11851 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
11852 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
11854 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
11856 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
11858 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
11860 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
11863 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
11865 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
11867 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
11868 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
11869 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
11870 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
11871 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
11876 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
11877 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
11886 if (nla_get_flag(info->attrs[NL80211_ATTR_MLO_SUPPORT])) in nl80211_connect()
11896 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
11925 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
11926 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
11927 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
11940 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
11941 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
11942 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
11943 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
11945 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
11947 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
11949 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
11951 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
11954 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
11956 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
11958 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
11960 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
11961 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
11962 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
11963 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
11967 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
11968 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
12002 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
12005 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
12026 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
12027 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
12030 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
12031 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
12061 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_setdel_pmksa()
12064 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_setdel_pmksa()
12066 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_setdel_pmksa()
12067 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_setdel_pmksa()
12068 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_setdel_pmksa()
12069 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_setdel_pmksa()
12071 info->attrs[NL80211_ATTR_PMK])) { in nl80211_setdel_pmksa()
12072 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
12073 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
12075 nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_setdel_pmksa()
12079 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_setdel_pmksa()
12080 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
12081 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
12084 if (info->attrs[NL80211_ATTR_PMK_LIFETIME]) in nl80211_setdel_pmksa()
12086 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]); in nl80211_setdel_pmksa()
12088 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]) in nl80211_setdel_pmksa()
12091 info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]); in nl80211_setdel_pmksa()
12147 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
12148 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
12149 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
12150 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
12151 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
12154 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
12155 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
12156 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
12157 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
12158 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
12159 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
12161 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
12166 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
12167 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
12181 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
12182 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
12185 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
12186 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
12195 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remain_on_channel()
12204 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
12205 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
12208 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
12289 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
12295 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
12304 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tx_bitrate_mask()
12314 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_set_tx_bitrate_mask()
12332 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
12335 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
12336 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
12361 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] && in nl80211_register_mgmt()
12370 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12371 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
12372 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST], in nl80211_register_mgmt()
12387 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
12390 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
12398 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
12418 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
12421 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
12432 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
12437 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
12443 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
12459 params.link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_mgmt()
12472 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12473 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
12475 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
12476 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12484 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
12535 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
12559 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
12573 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
12576 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
12805 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
12809 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
12813 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
12819 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
12820 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
12822 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
12823 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
12824 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
12833 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
12834 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
12835 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
12836 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
12837 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
12838 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
12880 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
12887 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
12888 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
12891 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
12892 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
12894 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
12896 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
12899 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
12901 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
12910 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
12912 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
12917 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
12927 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
12936 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
12937 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
12939 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
12953 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
12954 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_join_mesh()
12971 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
12973 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
12984 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
13434 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
13441 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
13835 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
13841 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
13855 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
13899 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
13903 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
13980 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
13997 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
14112 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
14116 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
14118 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
14119 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
14233 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
14237 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
14467 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
14470 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
14491 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
14493 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
14500 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
14501 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
14695 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
14696 !info->attrs[NL80211_ATTR_IE]) in nl80211_update_ft_ies()
14700 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
14701 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14702 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
14726 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
14727 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
14733 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
14737 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
14789 info->attrs); in nl80211_vendor_cmd()
14805 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
14806 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
14809 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
14810 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
14840 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
14841 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
14842 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
14845 info->attrs[NL80211_ATTR_VENDOR_DATA], in nl80211_vendor_cmd()
15120 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
15121 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15122 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
15171 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
15172 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
15175 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
15176 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
15187 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
15189 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
15191 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
15225 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
15228 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
15229 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
15261 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
15262 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
15288 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
15289 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
15319 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
15322 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
15347 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
15369 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
15378 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
15384 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15385 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
15392 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) in nl80211_set_pmk()
15394 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
15418 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
15422 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
15438 if (!info->attrs[NL80211_ATTR_SSID] && in nl80211_external_auth()
15443 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
15446 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
15451 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_external_auth()
15452 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
15456 nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
15460 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
15463 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
15465 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_external_auth()
15466 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_external_auth()
15473 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK]; in nl80211_tx_control_port()
15493 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
15494 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
15495 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
15525 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15526 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
15527 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
15528 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
15530 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
15532 link_id = nl80211_link_id_or_invalid(info->attrs); in nl80211_tx_control_port()
15552 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_get_ftm_responder_stats()
15627 if (!info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_update_owe_info()
15628 !info->attrs[NL80211_ATTR_MAC]) in nl80211_update_owe_info()
15632 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_update_owe_info()
15633 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN); in nl80211_update_owe_info()
15635 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_owe_info()
15636 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15637 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
15657 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_probe_mesh_link()
15658 !info->attrs[NL80211_ATTR_FRAME]) { in nl80211_probe_mesh_link()
15666 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_mesh_link()
15667 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15668 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
15687 struct nlattr *attrs[], struct net_device *dev, in parse_tid_conf() argument
15696 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS]) in parse_tid_conf()
15700 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]); in parse_tid_conf()
15701 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]); in parse_tid_conf()
15714 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) { in parse_tid_conf()
15717 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]); in parse_tid_conf()
15720 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) { in parse_tid_conf()
15723 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]); in parse_tid_conf()
15729 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) { in parse_tid_conf()
15732 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]); in parse_tid_conf()
15738 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) { in parse_tid_conf()
15741 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]); in parse_tid_conf()
15744 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) { in parse_tid_conf()
15747 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]); in parse_tid_conf()
15750 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) { in parse_tid_conf()
15753 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]); in parse_tid_conf()
15756 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) { in parse_tid_conf()
15759 tid_conf->txrate_type = nla_get_u8(attrs[idx]); in parse_tid_conf()
15763 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr, in parse_tid_conf()
15791 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1]; in nl80211_set_tid_config() local
15792 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_set_tid_config()
15800 if (!info->attrs[NL80211_ATTR_TID_CONFIG]) in nl80211_set_tid_config()
15806 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15817 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_tid_config()
15818 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_tid_config()
15822 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
15824 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX, in nl80211_set_tid_config()
15830 ret = parse_tid_conf(rdev, attrs, dev, in nl80211_set_tid_config()
15867 if (!info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT] || in nl80211_color_change()
15868 !info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR] || in nl80211_color_change()
15869 !info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS]) in nl80211_color_change()
15872 params.count = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COUNT]); in nl80211_color_change()
15873 params.color = nla_get_u8(info->attrs[NL80211_ATTR_COLOR_CHANGE_COLOR]); in nl80211_color_change()
15875 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_next); in nl80211_color_change()
15884 info->attrs[NL80211_ATTR_COLOR_CHANGE_ELEMS], in nl80211_color_change()
15957 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_set_fils_aad()
15958 !info->attrs[NL80211_ATTR_FILS_KEK] || in nl80211_set_fils_aad()
15959 !info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_set_fils_aad()
15962 fils_aad.macaddr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_fils_aad()
15963 fils_aad.kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
15964 fils_aad.kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_set_fils_aad()
15965 nonces = nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_set_fils_aad()
15975 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_add_link()
15990 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_add_link()
15991 !is_valid_ether_addr(nla_data(info->attrs[NL80211_ATTR_MAC]))) in nl80211_add_link()
15997 nla_data(info->attrs[NL80211_ATTR_MAC])); in nl80211_add_link()
16011 unsigned int link_id = nl80211_link_id(info->attrs); in nl80211_remove_link()
16016 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link()
16046 if (add && !info->attrs[NL80211_ATTR_MAC]) in nl80211_add_mod_link_station()
16049 if (!info->attrs[NL80211_ATTR_MLD_ADDR]) in nl80211_add_mod_link_station()
16052 if (add && !info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_add_mod_link_station()
16055 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_add_mod_link_station()
16057 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_add_mod_link_station()
16058 params.link_mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_mod_link_station()
16063 if (!info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_add_mod_link_station()
16066 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_add_mod_link_station()
16068 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_add_mod_link_station()
16070 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16072 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_add_mod_link_station()
16075 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_add_mod_link_station()
16077 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_add_mod_link_station()
16079 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_add_mod_link_station()
16081 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_add_mod_link_station()
16083 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_add_mod_link_station()
16085 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16087 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_add_mod_link_station()
16089 if (info->attrs[NL80211_ATTR_EHT_CAPABILITY]) { in nl80211_add_mod_link_station()
16091 nla_data(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16093 nla_len(info->attrs[NL80211_ATTR_EHT_CAPABILITY]); in nl80211_add_mod_link_station()
16103 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_add_mod_link_station()
16105 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_add_mod_link_station()
16107 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_add_mod_link_station()
16110 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_add_mod_link_station()
16151 if (!info->attrs[NL80211_ATTR_MLD_ADDR] || in nl80211_remove_link_station()
16152 !info->attrs[NL80211_ATTR_MLO_LINK_ID]) in nl80211_remove_link_station()
16155 params.mld_mac = nla_data(info->attrs[NL80211_ATTR_MLD_ADDR]); in nl80211_remove_link_station()
16156 params.link_id = nla_get_u8(info->attrs[NL80211_ATTR_MLO_LINK_ID]); in nl80211_remove_link_station()
16279 info->attrs); in nl80211_pre_doit()
16310 struct nlattr *link_id = info->attrs[NL80211_ATTR_MLO_LINK_ID]; in nl80211_pre_doit()
16333 if (info->attrs[NL80211_ATTR_MLO_LINK_ID] || in nl80211_pre_doit()
16442 if (!info->attrs[NL80211_ATTR_SAR_SPEC]) in nl80211_set_sar_specs()
16446 info->attrs[NL80211_ATTR_SAR_SPEC], in nl80211_set_sar_specs()