Lines Matching refs:attrs

65 __cfg80211_wdev_from_attrs(struct net *netns, struct nlattr **attrs)  in __cfg80211_wdev_from_attrs()  argument
69 bool have_ifidx = attrs[NL80211_ATTR_IFINDEX]; in __cfg80211_wdev_from_attrs()
70 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()
118 __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs) in __cfg80211_rdev_from_attrs() argument
125 if (!attrs[NL80211_ATTR_WIPHY] && in __cfg80211_rdev_from_attrs()
126 !attrs[NL80211_ATTR_IFINDEX] && in __cfg80211_rdev_from_attrs()
127 !attrs[NL80211_ATTR_WDEV]) in __cfg80211_rdev_from_attrs()
130 if (attrs[NL80211_ATTR_WIPHY]) in __cfg80211_rdev_from_attrs()
132 nla_get_u32(attrs[NL80211_ATTR_WIPHY])); in __cfg80211_rdev_from_attrs()
134 if (attrs[NL80211_ATTR_WDEV]) { in __cfg80211_rdev_from_attrs()
135 u64 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_rdev_from_attrs()
158 if (attrs[NL80211_ATTR_IFINDEX]) { in __cfg80211_rdev_from_attrs()
159 int ifindex = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_rdev_from_attrs()
200 return __cfg80211_rdev_from_attrs(netns, info->attrs); in cfg80211_get_dev_from_info()
887 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
888 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
889 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
892 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
893 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
894 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
897 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
898 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
900 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
901 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
903 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
904 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
913 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_parse_key_old()
914 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
921 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
925 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
946 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
947 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
993 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
2297 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_parse_chandef()
2300 control_freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_parse_chandef()
2311 if (info->attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
2315 info->attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
2325 if (info->attrs[NL80211_ATTR_CENTER_FREQ1] && in nl80211_parse_chandef()
2327 info->attrs[NL80211_ATTR_CENTER_FREQ1])) in nl80211_parse_chandef()
2330 if (info->attrs[NL80211_ATTR_CENTER_FREQ2] && in nl80211_parse_chandef()
2331 nla_get_u32(info->attrs[NL80211_ATTR_CENTER_FREQ2])) in nl80211_parse_chandef()
2337 } else if (info->attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
2339 nla_get_u32(info->attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
2340 if (info->attrs[NL80211_ATTR_CENTER_FREQ1]) in nl80211_parse_chandef()
2343 info->attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
2344 if (info->attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
2347 info->attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
2441 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_wds_peer()
2453 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_wds_peer()
2482 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
2483 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
2494 info->attrs); in nl80211_set_wiphy()
2508 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
2510 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
2515 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
2533 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
2552 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
2561 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
2573 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
2575 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
2581 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
2589 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
2590 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
2598 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
2599 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
2617 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
2619 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
2626 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
2628 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
2635 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
2637 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
2653 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
2655 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
2659 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
2660 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) in nl80211_set_wiphy()
2664 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
2668 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
2675 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
2680 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
2684 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
2689 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
2693 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
2698 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
3024 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
3028 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
3040 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
3051 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
3062 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
3072 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
3118 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
3119 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
3126 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
3138 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
3139 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
3144 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
3145 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
3185 if (!info->attrs[NL80211_ATTR_IFNAME]) in nl80211_new_interface()
3188 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_new_interface()
3189 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_new_interface()
3200 info->attrs[NL80211_ATTR_MAC]) { in nl80211_new_interface()
3201 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in nl80211_new_interface()
3207 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_new_interface()
3208 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_new_interface()
3223 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in nl80211_new_interface()
3233 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_new_interface()
3238 if (!info->attrs[NL80211_ATTR_MESH_ID]) in nl80211_new_interface()
3244 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_new_interface()
3245 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_new_interface()
3314 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
3320 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
3386 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_get_key()
3387 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
3392 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
3393 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
3396 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
3397 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
3535 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
3536 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
3581 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
3582 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
3656 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
3659 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
3664 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
3667 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
3679 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
3869 if (!info->attrs[NL80211_ATTR_TX_RATES]) in nl80211_parse_tx_bitrate_mask()
3876 nla_for_each_nested(tx_rates, info->attrs[NL80211_ATTR_TX_RATES], rem) { in nl80211_parse_tx_bitrate_mask()
4001 static int nl80211_parse_beacon(struct nlattr *attrs[], in nl80211_parse_beacon() argument
4006 if (!is_valid_ie_attr(attrs[NL80211_ATTR_BEACON_TAIL]) || in nl80211_parse_beacon()
4007 !is_valid_ie_attr(attrs[NL80211_ATTR_IE]) || in nl80211_parse_beacon()
4008 !is_valid_ie_attr(attrs[NL80211_ATTR_IE_PROBE_RESP]) || in nl80211_parse_beacon()
4009 !is_valid_ie_attr(attrs[NL80211_ATTR_IE_ASSOC_RESP])) in nl80211_parse_beacon()
4014 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
4015 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
4016 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
4022 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
4023 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
4024 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
4031 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
4032 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
4033 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
4036 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
4038 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
4040 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
4043 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
4045 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
4047 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
4050 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
4051 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
4052 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
4193 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
4194 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
4195 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
4198 err = nl80211_parse_beacon(info->attrs, &params.beacon); in nl80211_start_ap()
4203 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
4205 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
4219 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
4220 params.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
4222 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
4228 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) { in nl80211_start_ap()
4230 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
4237 params.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
4239 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
4241 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
4253 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
4257 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
4260 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
4264 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
4272 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
4277 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
4286 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
4299 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
4310 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
4312 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
4333 params.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
4337 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
4354 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
4382 err = nl80211_parse_beacon(info->attrs, &params); in nl80211_set_beacon()
4422 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
4438 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
4863 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
4866 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
5049 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
5097 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
5100 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
5126 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
5128 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
5130 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
5142 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
5144 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
5146 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
5163 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
5164 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
5165 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
5167 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
5168 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
5170 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
5171 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
5173 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
5175 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
5206 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
5207 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
5209 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
5211 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
5215 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_set_station()
5218 tmp = nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
5227 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
5230 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
5232 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
5234 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
5236 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
5239 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
5241 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
5245 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
5247 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
5249 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
5255 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) { in nl80211_set_station()
5257 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
5262 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
5264 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
5267 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) { in nl80211_set_station()
5269 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
5276 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) { in nl80211_set_station()
5278 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
5287 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
5290 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
5341 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
5344 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
5347 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
5350 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
5351 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
5354 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
5356 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
5358 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
5360 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
5362 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
5365 tmp = nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
5379 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
5380 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
5382 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
5386 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
5388 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
5392 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
5394 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
5396 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
5399 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
5401 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
5403 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
5405 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
5407 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
5409 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
5411 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
5418 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
5421 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
5424 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) { in nl80211_new_station()
5426 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
5470 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
5510 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
5559 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
5560 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
5571 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
5573 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
5582 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
5584 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
5712 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
5715 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
5747 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
5750 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
5753 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
5754 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
5772 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
5775 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
5778 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
5779 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
5796 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
5797 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
5817 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
5820 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
5914 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
5916 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
5917 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
5919 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
5920 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
5922 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
5923 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
5925 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
5927 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
5929 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
5930 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
5931 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
5933 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
5935 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
5939 nla_get_s8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
5947 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
5952 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
5991 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
5993 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
6000 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
6003 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
6006 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
6008 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
6251 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
6254 info->attrs[NL80211_ATTR_MESH_CONFIG], in nl80211_parse_mesh_config()
6387 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
6390 info->attrs[NL80211_ATTR_MESH_SETUP], in nl80211_parse_mesh_setup()
6549 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
6739 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
6742 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
6745 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
6747 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
6748 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
6750 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
6778 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
6901 static int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
6906 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
6916 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
6919 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
6920 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
6963 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
6970 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
6991 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
7031 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
7049 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_trigger_scan()
7065 if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_trigger_scan()
7067 info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_trigger_scan()
7076 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
7077 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
7085 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
7086 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
7115 if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_trigger_scan()
7117 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_FREQUENCIES], tmp) { in nl80211_trigger_scan()
7185 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
7196 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
7197 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
7199 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
7208 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
7210 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
7231 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
7239 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
7241 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
7244 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
7250 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
7261 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
7263 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
7265 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
7266 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
7313 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
7318 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
7327 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
7344 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
7395 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
7405 if (!is_valid_ie_attr(attrs[NL80211_ATTR_IE])) in nl80211_parse_sched_scan()
7408 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
7410 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
7417 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
7418 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
7434 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
7436 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
7471 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
7472 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
7479 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
7484 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
7488 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
7497 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
7508 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
7509 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
7556 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
7559 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
7607 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
7621 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
7623 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
7691 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
7695 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
7699 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
7701 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
7703 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
7705 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
7710 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
7714 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
7723 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
7749 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
7755 info->attrs, in nl80211_start_sched_scan()
7777 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
7801 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
7802 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
7923 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
7924 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
7928 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
7934 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
7943 err = nl80211_parse_beacon(info->attrs, &params.beacon_after); in nl80211_channel_switch()
7948 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
8029 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
8034 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
8375 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_authenticate()
8378 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
8381 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
8384 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
8387 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
8432 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
8434 info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_authenticate()
8438 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
8439 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
8441 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
8442 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
8443 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
8446 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
8454 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
8457 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
8463 auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
8464 auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
8470 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
8491 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
8511 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
8513 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
8517 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
8522 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
8527 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
8536 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
8540 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
8541 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
8559 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
8561 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
8567 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
8569 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
8574 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
8578 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
8579 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
8591 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
8592 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
8597 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
8616 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_associate()
8619 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
8620 !info->attrs[NL80211_ATTR_SSID] || in nl80211_associate()
8621 !info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_associate()
8631 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_associate()
8634 info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_associate()
8638 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
8639 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
8641 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
8642 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
8643 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
8646 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
8648 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
8655 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
8656 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
8658 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
8661 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
8663 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
8666 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
8667 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
8670 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
8674 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
8677 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
8679 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
8682 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
8683 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
8686 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
8690 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
8700 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
8701 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
8702 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
8703 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
8706 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
8716 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
8742 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_deauthenticate()
8745 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
8748 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
8758 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
8760 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
8766 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
8767 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
8768 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
8771 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
8793 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_disassociate()
8796 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
8799 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
8809 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
8811 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
8817 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
8818 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
8819 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
8822 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
8870 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_join_ibss()
8873 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
8874 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
8879 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
8881 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
8896 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
8897 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
8902 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
8903 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
8905 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
8906 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
8907 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
8941 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
8942 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
8944 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
8946 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
8948 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
8958 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
8960 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
8963 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
8964 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
8967 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
8971 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
8973 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
8976 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
8991 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
8993 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
9003 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
9009 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
9048 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
9051 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
9177 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_testmode_do()
9192 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
9197 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
9198 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
9310 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_connect()
9313 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
9314 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
9317 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
9319 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
9326 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
9328 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
9332 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
9346 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
9349 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
9352 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
9353 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
9354 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
9356 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
9357 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
9358 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
9360 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
9361 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
9362 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
9365 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
9366 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
9380 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
9382 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
9384 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_connect()
9386 wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_connect()
9389 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
9391 wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
9396 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
9402 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
9405 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
9407 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
9410 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
9411 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
9416 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
9420 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
9423 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
9425 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
9428 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
9429 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
9434 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
9438 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
9450 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
9456 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
9463 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
9473 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
9474 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
9475 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
9476 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
9478 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
9480 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
9482 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
9484 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
9487 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
9489 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
9491 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
9492 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
9493 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
9494 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
9495 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
9500 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
9501 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
9517 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
9547 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
9548 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_update_connect_params()
9550 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
9551 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
9564 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
9565 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
9566 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
9567 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
9569 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
9571 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
9573 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
9575 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
9578 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
9580 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
9582 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
9584 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
9585 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
9586 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
9587 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
9591 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
9592 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
9626 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
9629 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
9650 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
9651 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
9654 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
9655 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
9685 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_setdel_pmksa()
9688 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_setdel_pmksa()
9690 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_setdel_pmksa()
9691 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_setdel_pmksa()
9692 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_setdel_pmksa()
9693 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_setdel_pmksa()
9695 info->attrs[NL80211_ATTR_PMK])) { in nl80211_setdel_pmksa()
9696 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
9697 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
9699 nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_setdel_pmksa()
9703 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_setdel_pmksa()
9704 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
9705 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
9759 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
9760 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
9761 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
9762 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
9763 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
9766 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
9767 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
9768 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
9769 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
9770 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
9771 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
9773 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
9778 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
9779 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
9793 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
9794 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
9797 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
9798 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
9816 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
9817 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
9820 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
9889 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
9895 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
9924 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
9927 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
9928 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
9950 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
9951 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH])); in nl80211_register_mgmt()
9965 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
9968 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
9976 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
9991 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
9994 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
10005 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
10010 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
10016 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
10032 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
10033 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
10035 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
10036 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
10044 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
10095 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
10115 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
10129 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
10132 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
10358 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
10362 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
10366 err = nla_parse_nested(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
10371 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
10372 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
10374 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
10375 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
10376 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
10385 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
10386 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
10387 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
10388 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
10389 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
10390 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
10432 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
10439 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
10440 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
10443 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
10444 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
10446 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
10448 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
10451 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
10453 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
10462 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
10464 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
10469 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
10479 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
10488 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
10489 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
10491 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
10505 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
10520 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
10522 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
10533 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
10979 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
10986 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
11379 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
11385 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
11399 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
11443 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
11447 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
11516 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
11533 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
11648 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
11652 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
11656 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
11657 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
11759 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
11763 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
11991 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
11994 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
12015 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
12017 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
12024 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
12025 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
12217 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
12218 !info->attrs[NL80211_ATTR_IE] || in nl80211_update_ft_ies()
12219 !is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_update_ft_ies()
12223 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
12224 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
12225 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
12249 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
12250 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
12256 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
12260 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
12292 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_vendor_cmd()
12308 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
12309 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
12312 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
12313 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
12343 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
12344 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
12345 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
12582 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
12583 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
12584 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
12634 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
12635 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
12638 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
12642 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
12655 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
12657 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
12659 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
12693 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
12696 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
12697 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
12729 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
12730 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
12756 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
12757 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
12787 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
12790 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
12815 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
12837 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
12846 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
12852 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
12853 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
12860 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) { in nl80211_set_pmk()
12861 int r0_name_len = nla_len(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
12869 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
12894 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
12898 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
12914 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_external_auth()
12917 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
12920 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
12925 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
12929 memcpy(params.ssid.ssid, nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
12932 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
12935 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
12959 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
12960 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
12961 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
12987 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
12988 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
12989 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
12990 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
12992 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
13038 info->attrs); in nl80211_pre_doit()