Lines Matching refs:attrs

74 __cfg80211_wdev_from_attrs(struct net *netns, struct nlattr **attrs)  in __cfg80211_wdev_from_attrs()  argument
78 bool have_ifidx = attrs[NL80211_ATTR_IFINDEX]; in __cfg80211_wdev_from_attrs()
79 bool have_wdev_id = attrs[NL80211_ATTR_WDEV]; in __cfg80211_wdev_from_attrs()
90 ifidx = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_wdev_from_attrs()
92 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_wdev_from_attrs()
127 __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs) in __cfg80211_rdev_from_attrs() argument
134 if (!attrs[NL80211_ATTR_WIPHY] && in __cfg80211_rdev_from_attrs()
135 !attrs[NL80211_ATTR_IFINDEX] && in __cfg80211_rdev_from_attrs()
136 !attrs[NL80211_ATTR_WDEV]) in __cfg80211_rdev_from_attrs()
139 if (attrs[NL80211_ATTR_WIPHY]) in __cfg80211_rdev_from_attrs()
141 nla_get_u32(attrs[NL80211_ATTR_WIPHY])); in __cfg80211_rdev_from_attrs()
143 if (attrs[NL80211_ATTR_WDEV]) { in __cfg80211_rdev_from_attrs()
144 u64 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_rdev_from_attrs()
167 if (attrs[NL80211_ATTR_IFINDEX]) { in __cfg80211_rdev_from_attrs()
168 int ifindex = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_rdev_from_attrs()
208 return __cfg80211_rdev_from_attrs(netns, info->attrs); in cfg80211_get_dev_from_info()
730 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
731 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
732 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
735 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
736 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
737 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
740 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
741 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
743 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
744 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
746 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
747 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
756 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_parse_key_old()
757 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
762 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
766 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
786 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
787 err = nl80211_parse_key_new(info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1924 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_parse_chandef()
1927 control_freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_parse_chandef()
1938 if (info->attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
1942 info->attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
1955 } else if (info->attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
1957 nla_get_u32(info->attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
1958 if (info->attrs[NL80211_ATTR_CENTER_FREQ1]) in nl80211_parse_chandef()
1961 info->attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
1962 if (info->attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
1965 info->attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
2058 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_wds_peer()
2070 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_wds_peer()
2099 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
2100 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
2111 info->attrs); in nl80211_set_wiphy()
2125 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
2127 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
2132 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
2150 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
2169 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
2178 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
2190 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
2192 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
2198 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
2206 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
2207 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
2214 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
2215 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
2233 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
2235 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
2242 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
2244 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
2251 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
2253 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
2269 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
2271 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
2275 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
2276 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) in nl80211_set_wiphy()
2280 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
2284 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
2549 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
2550 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
2557 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
2569 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
2570 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
2575 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
2576 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
2585 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_set_interface()
2588 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_set_interface()
2627 if (!info->attrs[NL80211_ATTR_IFNAME]) in nl80211_new_interface()
2630 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_new_interface()
2631 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_new_interface()
2642 info->attrs[NL80211_ATTR_MAC]) { in nl80211_new_interface()
2643 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in nl80211_new_interface()
2649 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_new_interface()
2650 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_new_interface()
2657 info->attrs[NL80211_ATTR_MNTR_FLAGS] : NULL, in nl80211_new_interface()
2669 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in nl80211_new_interface()
2680 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_new_interface()
2685 if (!info->attrs[NL80211_ATTR_MESH_ID]) in nl80211_new_interface()
2691 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_new_interface()
2692 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_new_interface()
2781 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
2787 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
2853 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_get_key()
2854 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
2859 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
2860 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
2863 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
2864 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
3001 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
3002 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
3047 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
3048 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
3122 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
3125 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
3130 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
3133 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
3145 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
3181 static int nl80211_parse_beacon(struct nlattr *attrs[], in nl80211_parse_beacon() argument
3186 if (!is_valid_ie_attr(attrs[NL80211_ATTR_BEACON_TAIL]) || in nl80211_parse_beacon()
3187 !is_valid_ie_attr(attrs[NL80211_ATTR_IE]) || in nl80211_parse_beacon()
3188 !is_valid_ie_attr(attrs[NL80211_ATTR_IE_PROBE_RESP]) || in nl80211_parse_beacon()
3189 !is_valid_ie_attr(attrs[NL80211_ATTR_IE_ASSOC_RESP])) in nl80211_parse_beacon()
3194 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
3195 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
3196 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
3202 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
3203 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
3204 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
3211 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
3212 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
3213 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
3216 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
3218 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
3220 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
3223 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
3225 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
3227 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
3230 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
3231 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
3232 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
3305 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
3306 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
3307 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
3310 err = nl80211_parse_beacon(info->attrs, &params.beacon); in nl80211_start_ap()
3315 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
3317 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
3330 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
3331 params.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
3333 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
3339 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) { in nl80211_start_ap()
3341 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
3348 params.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
3350 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
3352 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
3364 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
3368 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
3371 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
3375 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
3383 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
3388 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
3397 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
3410 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
3412 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
3433 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
3473 err = nl80211_parse_beacon(info->attrs, &params); in nl80211_set_beacon()
3513 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
3529 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
3916 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
3919 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
4079 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
4127 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
4130 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
4156 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
4158 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
4160 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
4172 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
4174 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
4176 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
4193 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
4194 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
4195 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
4197 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
4198 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
4200 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
4224 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
4227 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
4230 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
4232 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
4234 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
4236 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
4239 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
4241 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
4245 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
4247 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
4249 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
4252 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
4258 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) { in nl80211_set_station()
4260 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
4265 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
4267 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
4273 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) { in nl80211_set_station()
4275 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
4330 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
4333 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
4336 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
4339 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
4340 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
4343 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
4345 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
4347 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
4349 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
4351 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
4352 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
4354 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
4358 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
4360 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
4364 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
4366 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
4368 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
4371 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
4373 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
4375 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
4377 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
4379 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
4382 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
4385 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) { in nl80211_new_station()
4387 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
4427 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
4454 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
4503 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
4504 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
4515 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
4517 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
4526 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
4528 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
4656 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
4659 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
4691 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
4694 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
4697 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
4698 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
4716 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
4719 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
4722 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
4723 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
4740 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
4741 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
4761 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
4764 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
4857 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
4859 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
4860 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
4862 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
4863 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
4865 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
4866 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
4868 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
4870 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
4872 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
4873 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
4874 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
4876 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
4878 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
4882 nla_get_s8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
4890 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
4895 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
4985 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
4987 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
4994 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
4997 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
5000 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
5002 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
5185 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
5188 info->attrs[NL80211_ATTR_MESH_CONFIG], in nl80211_parse_mesh_config()
5306 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
5309 info->attrs[NL80211_ATTR_MESH_SETUP], in nl80211_parse_mesh_setup()
5469 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
5609 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
5612 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
5615 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
5617 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
5618 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
5620 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
5648 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
5701 static int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
5706 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
5716 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
5719 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
5720 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
5748 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_trigger_scan()
5761 if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_trigger_scan()
5763 info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_trigger_scan()
5772 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
5773 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
5781 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
5782 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
5811 if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_trigger_scan()
5813 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_FREQUENCIES], tmp) { in nl80211_trigger_scan()
5861 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
5872 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
5873 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
5875 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
5884 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
5886 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
5907 if (info->attrs[NL80211_ATTR_SCAN_FLAGS]) { in nl80211_trigger_scan()
5909 info->attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_trigger_scan()
5928 err = nl80211_parse_random_mac(info->attrs, in nl80211_trigger_scan()
5937 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
5962 struct nlattr **attrs) in nl80211_parse_sched_scan() argument
5973 if (!is_valid_ie_attr(attrs[NL80211_ATTR_IE])) in nl80211_parse_sched_scan()
5976 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
5979 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan()
5983 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
5985 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
5992 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
5993 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
6009 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
6011 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
6038 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
6039 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
6077 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
6080 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
6127 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
6141 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
6143 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
6198 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
6202 if (attrs[NL80211_ATTR_SCAN_FLAGS]) { in nl80211_parse_sched_scan()
6204 attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_parse_sched_scan()
6227 err = nl80211_parse_random_mac(attrs, request->mac_addr, in nl80211_parse_sched_scan()
6234 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
6236 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
6265 info->attrs); in nl80211_start_sched_scan()
6278 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
6401 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
6402 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
6406 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
6412 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
6421 err = nl80211_parse_beacon(info->attrs, &params.beacon_after); in nl80211_channel_switch()
6426 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
6507 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
6815 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_authenticate()
6818 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
6821 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
6824 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
6827 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
6871 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
6873 info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_authenticate()
6877 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
6878 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
6880 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
6881 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
6882 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
6885 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
6890 !info->attrs[NL80211_ATTR_SAE_DATA]) in nl80211_authenticate()
6893 if (info->attrs[NL80211_ATTR_SAE_DATA]) { in nl80211_authenticate()
6896 sae_data = nla_data(info->attrs[NL80211_ATTR_SAE_DATA]); in nl80211_authenticate()
6897 sae_data_len = nla_len(info->attrs[NL80211_ATTR_SAE_DATA]); in nl80211_authenticate()
6903 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
6928 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
6930 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
6933 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
6938 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
6943 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
6947 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
6948 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
6966 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
6968 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
6974 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
6976 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
6981 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
6985 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
6986 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
7010 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_associate()
7013 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
7014 !info->attrs[NL80211_ATTR_SSID] || in nl80211_associate()
7015 !info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_associate()
7025 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_associate()
7028 info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_associate()
7032 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
7033 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
7035 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
7036 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
7037 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
7040 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
7042 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
7049 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
7050 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
7052 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
7055 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
7057 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
7060 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
7061 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
7064 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
7068 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
7071 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
7073 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
7076 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
7077 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
7080 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
7084 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
7112 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_deauthenticate()
7115 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
7118 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
7128 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
7130 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
7136 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
7137 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
7138 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
7141 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
7159 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_disassociate()
7162 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
7165 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
7175 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
7177 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
7183 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
7184 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
7185 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
7188 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
7236 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_join_ibss()
7239 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
7240 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
7245 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_ibss()
7247 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
7260 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
7261 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
7266 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
7267 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
7269 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
7270 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
7271 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
7305 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
7306 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
7308 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
7310 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
7312 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
7322 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
7324 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
7327 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
7328 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
7331 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
7335 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
7337 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
7340 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
7344 info->attrs[NL80211_ATTR_KEYS], in nl80211_join_ibss()
7357 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
7360 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
7399 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
7402 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
7526 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_testmode_do()
7541 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
7546 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
7547 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
7660 if (!is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_connect()
7663 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
7664 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
7667 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
7669 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
7676 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
7690 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
7693 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
7696 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
7697 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
7698 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
7700 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
7701 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
7702 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
7704 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
7705 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
7706 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
7709 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
7710 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
7718 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_connect()
7720 wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ]); in nl80211_connect()
7723 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
7725 wiphy, info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
7730 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
7732 info->attrs[NL80211_ATTR_KEYS], NULL); in nl80211_connect()
7737 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
7740 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
7742 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
7745 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
7746 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
7751 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
7755 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
7758 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
7760 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
7763 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
7764 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
7769 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
7773 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
7796 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
7799 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
7820 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
7821 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
7824 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
7825 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
7855 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_setdel_pmksa()
7858 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_setdel_pmksa()
7861 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_setdel_pmksa()
7862 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_setdel_pmksa()
7915 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
7916 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
7917 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
7918 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
7919 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
7922 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
7923 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
7924 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
7925 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
7926 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
7927 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
7929 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
7934 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
7935 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
7949 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
7950 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
7953 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
7954 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
7971 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
7972 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
7975 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
8031 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
8037 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
8199 if (!info->attrs[NL80211_ATTR_TX_RATES]) in nl80211_set_tx_bitrate_mask()
8207 nla_for_each_nested(tx_rates, info->attrs[NL80211_ATTR_TX_RATES], rem) { in nl80211_set_tx_bitrate_mask()
8282 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
8285 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
8286 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
8307 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
8308 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH])); in nl80211_register_mgmt()
8322 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
8325 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
8333 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
8347 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
8350 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
8362 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
8367 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
8373 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
8382 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
8383 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
8385 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
8386 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
8394 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
8444 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
8463 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
8477 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
8480 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
8601 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
8605 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
8609 err = nla_parse_nested(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
8614 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
8615 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
8616 s32 threshold = nla_get_s32(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
8617 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
8622 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
8623 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
8624 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
8625 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
8626 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
8627 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
8669 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
8676 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
8677 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
8680 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
8681 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
8683 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
8685 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
8688 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
8690 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
8696 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
8698 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
8703 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
8713 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
8722 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
8723 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
8725 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
9137 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
9144 nla_data(info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]), in nl80211_set_wowlan()
9145 nla_len(info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]), in nl80211_set_wowlan()
9530 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
9536 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
9550 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
9594 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
9598 nla_data(info->attrs[NL80211_ATTR_REKEY_DATA]), in nl80211_set_rekey_data()
9599 nla_len(info->attrs[NL80211_ATTR_REKEY_DATA]), in nl80211_set_rekey_data()
9665 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
9682 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
9816 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
9817 !is_valid_ie_attr(info->attrs[NL80211_ATTR_IE])) in nl80211_update_ft_ies()
9821 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
9822 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
9823 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
9847 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
9848 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
9854 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
9858 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
9890 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_vendor_cmd()
9906 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
9907 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
9910 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
9911 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
9941 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
9942 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
9943 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
10006 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
10007 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
10008 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
10058 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
10059 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
10062 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
10066 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
10079 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
10081 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
10083 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
10117 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
10120 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
10121 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
10153 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
10154 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
10179 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
10180 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
10210 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
10213 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
10258 info->attrs); in nl80211_pre_doit()