Lines Matching refs:attrs

67 __cfg80211_wdev_from_attrs(struct net *netns, struct nlattr **attrs)  in __cfg80211_wdev_from_attrs()  argument
71 bool have_ifidx = attrs[NL80211_ATTR_IFINDEX]; in __cfg80211_wdev_from_attrs()
72 bool have_wdev_id = attrs[NL80211_ATTR_WDEV]; in __cfg80211_wdev_from_attrs()
83 ifidx = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_wdev_from_attrs()
85 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_wdev_from_attrs()
120 __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs) in __cfg80211_rdev_from_attrs() argument
127 if (!attrs[NL80211_ATTR_WIPHY] && in __cfg80211_rdev_from_attrs()
128 !attrs[NL80211_ATTR_IFINDEX] && in __cfg80211_rdev_from_attrs()
129 !attrs[NL80211_ATTR_WDEV]) in __cfg80211_rdev_from_attrs()
132 if (attrs[NL80211_ATTR_WIPHY]) in __cfg80211_rdev_from_attrs()
134 nla_get_u32(attrs[NL80211_ATTR_WIPHY])); in __cfg80211_rdev_from_attrs()
136 if (attrs[NL80211_ATTR_WDEV]) { in __cfg80211_rdev_from_attrs()
137 u64 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]); in __cfg80211_rdev_from_attrs()
160 if (attrs[NL80211_ATTR_IFINDEX]) { in __cfg80211_rdev_from_attrs()
161 int ifindex = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]); in __cfg80211_rdev_from_attrs()
202 return __cfg80211_rdev_from_attrs(netns, info->attrs); in cfg80211_get_dev_from_info()
1206 if (info->attrs[NL80211_ATTR_KEY_DATA]) { in nl80211_parse_key_old()
1207 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1208 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]); in nl80211_parse_key_old()
1211 if (info->attrs[NL80211_ATTR_KEY_SEQ]) { in nl80211_parse_key_old()
1212 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1213 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]); in nl80211_parse_key_old()
1216 if (info->attrs[NL80211_ATTR_KEY_IDX]) in nl80211_parse_key_old()
1217 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_parse_key_old()
1219 if (info->attrs[NL80211_ATTR_KEY_CIPHER]) in nl80211_parse_key_old()
1220 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]); in nl80211_parse_key_old()
1222 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT]; in nl80211_parse_key_old()
1223 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT]; in nl80211_parse_key_old()
1232 if (info->attrs[NL80211_ATTR_KEY_TYPE]) in nl80211_parse_key_old()
1233 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_parse_key_old()
1235 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) { in nl80211_parse_key_old()
1239 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES], in nl80211_parse_key_old()
1260 if (info->attrs[NL80211_ATTR_KEY]) in nl80211_parse_key()
1261 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k); in nl80211_parse_key()
1316 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS]; in nl80211_parse_connkeys()
2897 struct nlattr **attrs = info->attrs; in nl80211_parse_chandef() local
2900 if (!attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_parse_chandef()
2904 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_parse_chandef()
2905 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_parse_chandef()
2907 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_parse_chandef()
2918 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ], in nl80211_parse_chandef()
2923 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) { in nl80211_parse_chandef()
2926 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]); in nl80211_parse_chandef()
2936 if (attrs[NL80211_ATTR_CENTER_FREQ1] && in nl80211_parse_chandef()
2937 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) { in nl80211_parse_chandef()
2939 attrs[NL80211_ATTR_CENTER_FREQ1], in nl80211_parse_chandef()
2944 if (attrs[NL80211_ATTR_CENTER_FREQ2] && in nl80211_parse_chandef()
2945 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) { in nl80211_parse_chandef()
2947 attrs[NL80211_ATTR_CENTER_FREQ2], in nl80211_parse_chandef()
2954 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE], in nl80211_parse_chandef()
2958 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) { in nl80211_parse_chandef()
2960 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]); in nl80211_parse_chandef()
2965 attrs[NL80211_ATTR_CHANNEL_WIDTH], in nl80211_parse_chandef()
2970 if (attrs[NL80211_ATTR_CENTER_FREQ1]) { in nl80211_parse_chandef()
2972 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]); in nl80211_parse_chandef()
2973 if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]) in nl80211_parse_chandef()
2975 attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]); in nl80211_parse_chandef()
2979 if (attrs[NL80211_ATTR_CENTER_FREQ2]) in nl80211_parse_chandef()
2981 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]); in nl80211_parse_chandef()
2984 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_parse_chandef()
2986 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_parse_chandef()
2988 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_parse_chandef()
2990 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_parse_chandef()
3093 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_wds_peer()
3105 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_wds_peer()
3134 if (info->attrs[NL80211_ATTR_IFINDEX]) { in nl80211_set_wiphy()
3135 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]); in nl80211_set_wiphy()
3146 info->attrs); in nl80211_set_wiphy()
3160 if (info->attrs[NL80211_ATTR_WIPHY_NAME]) in nl80211_set_wiphy()
3162 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME])); in nl80211_set_wiphy()
3167 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) { in nl80211_set_wiphy()
3185 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS], in nl80211_set_wiphy()
3205 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_set_wiphy()
3214 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) { in nl80211_set_wiphy()
3226 type = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3228 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] && in nl80211_set_wiphy()
3234 mbm = nla_get_u32(info->attrs[idx]); in nl80211_set_wiphy()
3242 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && in nl80211_set_wiphy()
3243 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { in nl80211_set_wiphy()
3251 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]); in nl80211_set_wiphy()
3252 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]); in nl80211_set_wiphy()
3270 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) { in nl80211_set_wiphy()
3272 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]); in nl80211_set_wiphy()
3277 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) { in nl80211_set_wiphy()
3279 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]); in nl80211_set_wiphy()
3284 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) { in nl80211_set_wiphy()
3286 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]); in nl80211_set_wiphy()
3302 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) { in nl80211_set_wiphy()
3304 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]); in nl80211_set_wiphy()
3308 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) { in nl80211_set_wiphy()
3309 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) in nl80211_set_wiphy()
3313 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]); in nl80211_set_wiphy()
3317 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) { in nl80211_set_wiphy()
3324 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) { in nl80211_set_wiphy()
3329 info->attrs[NL80211_ATTR_TXQ_LIMIT]); in nl80211_set_wiphy()
3333 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) { in nl80211_set_wiphy()
3338 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]); in nl80211_set_wiphy()
3342 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) { in nl80211_set_wiphy()
3347 info->attrs[NL80211_ATTR_TXQ_QUANTUM]); in nl80211_set_wiphy()
3672 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) { in nl80211_parse_mon_options()
3676 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS], in nl80211_parse_mon_options()
3688 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) { in nl80211_parse_mon_options()
3699 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]); in nl80211_parse_mon_options()
3710 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) { in nl80211_parse_mon_options()
3720 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]); in nl80211_parse_mon_options()
3766 if (info->attrs[NL80211_ATTR_IFTYPE]) { in nl80211_set_interface()
3767 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_set_interface()
3772 if (info->attrs[NL80211_ATTR_MESH_ID]) { in nl80211_set_interface()
3784 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_set_interface()
3785 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_set_interface()
3790 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_set_interface()
3791 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_set_interface()
3837 if (!info->attrs[NL80211_ATTR_IFNAME]) in nl80211_new_interface()
3840 if (info->attrs[NL80211_ATTR_IFTYPE]) in nl80211_new_interface()
3841 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]); in nl80211_new_interface()
3848 info->attrs[NL80211_ATTR_MAC]) { in nl80211_new_interface()
3849 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC], in nl80211_new_interface()
3855 if (info->attrs[NL80211_ATTR_4ADDR]) { in nl80211_new_interface()
3856 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]); in nl80211_new_interface()
3874 nla_data(info->attrs[NL80211_ATTR_IFNAME]), in nl80211_new_interface()
3884 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_new_interface()
3889 if (!info->attrs[NL80211_ATTR_MESH_ID]) in nl80211_new_interface()
3895 nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_new_interface()
3896 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]), in nl80211_new_interface()
3949 if (!info->attrs[NL80211_ATTR_NOACK_MAP]) in nl80211_set_noack_map()
3955 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]); in nl80211_set_noack_map()
4032 if (info->attrs[NL80211_ATTR_KEY_IDX]) { in nl80211_get_key()
4033 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]); in nl80211_get_key()
4041 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_get_key()
4042 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_key()
4045 if (info->attrs[NL80211_ATTR_KEY_TYPE]) { in nl80211_get_key()
4046 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]); in nl80211_get_key()
4185 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_key()
4186 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_key()
4222 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_new_key()
4223 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_key()
4240 info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_key()
4241 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_key()
4281 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_key()
4282 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_key()
4360 if (!info->attrs[NL80211_ATTR_ACL_POLICY]) in parse_acl_data()
4363 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]); in parse_acl_data()
4368 if (!info->attrs[NL80211_ATTR_MAC_ADDRS]) in parse_acl_data()
4371 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]); in parse_acl_data()
4382 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) { in parse_acl_data()
4614 struct nlattr *attrs[], in nl80211_parse_tx_bitrate_mask() argument
4659 if (!attrs[attr]) in nl80211_parse_tx_bitrate_mask()
4666 nla_for_each_nested(tx_rates, attrs[attr], rem) { in nl80211_parse_tx_bitrate_mask()
4810 struct nlattr *attrs[], in nl80211_parse_beacon() argument
4818 if (attrs[NL80211_ATTR_BEACON_HEAD]) { in nl80211_parse_beacon()
4819 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
4820 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]); in nl80211_parse_beacon()
4826 if (attrs[NL80211_ATTR_BEACON_TAIL]) { in nl80211_parse_beacon()
4827 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
4828 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]); in nl80211_parse_beacon()
4835 if (attrs[NL80211_ATTR_IE]) { in nl80211_parse_beacon()
4836 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
4837 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_beacon()
4840 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) { in nl80211_parse_beacon()
4842 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
4844 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]); in nl80211_parse_beacon()
4847 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) { in nl80211_parse_beacon()
4849 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
4851 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]); in nl80211_parse_beacon()
4854 if (attrs[NL80211_ATTR_PROBE_RESP]) { in nl80211_parse_beacon()
4855 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
4856 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]); in nl80211_parse_beacon()
4859 if (attrs[NL80211_ATTR_FTM_RESPONDER]) { in nl80211_parse_beacon()
4864 attrs[NL80211_ATTR_FTM_RESPONDER], in nl80211_parse_beacon()
4892 static int nl80211_parse_he_obss_pd(struct nlattr *attrs, in nl80211_parse_he_obss_pd() argument
4898 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs, in nl80211_parse_he_obss_pd()
4936 static int nl80211_parse_he_bss_color(struct nlattr *attrs, in nl80211_parse_he_bss_color() argument
4942 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs, in nl80211_parse_he_bss_color()
4961 struct nlattr *attrs, in nl80211_parse_fils_discovery() argument
4972 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs, in nl80211_parse_fils_discovery()
4992 struct nlattr *attrs, in nl80211_parse_unsol_bcast_probe_resp() argument
5005 attrs, NULL, NULL); in nl80211_parse_unsol_bcast_probe_resp()
5165 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] || in nl80211_start_ap()
5166 !info->attrs[NL80211_ATTR_DTIM_PERIOD] || in nl80211_start_ap()
5167 !info->attrs[NL80211_ATTR_BEACON_HEAD]) in nl80211_start_ap()
5170 err = nl80211_parse_beacon(rdev, info->attrs, &params.beacon); in nl80211_start_ap()
5175 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_start_ap()
5177 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_start_ap()
5191 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_start_ap()
5192 params.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5194 nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_start_ap()
5199 if (info->attrs[NL80211_ATTR_HIDDEN_SSID]) in nl80211_start_ap()
5201 info->attrs[NL80211_ATTR_HIDDEN_SSID]); in nl80211_start_ap()
5203 params.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_start_ap()
5205 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_start_ap()
5207 info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_start_ap()
5219 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) { in nl80211_start_ap()
5223 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]); in nl80211_start_ap()
5226 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_start_ap()
5230 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_start_ap()
5236 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_start_ap()
5241 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_start_ap()
5248 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_start_ap()
5261 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_start_ap()
5262 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_start_ap()
5275 if (info->attrs[NL80211_ATTR_SMPS_MODE]) { in nl80211_start_ap()
5277 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]); in nl80211_start_ap()
5298 params.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_start_ap()
5302 if (info->attrs[NL80211_ATTR_ACL_POLICY]) { in nl80211_start_ap()
5309 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]); in nl80211_start_ap()
5311 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) { in nl80211_start_ap()
5313 info->attrs[NL80211_ATTR_HE_OBSS_PD], in nl80211_start_ap()
5319 if (info->attrs[NL80211_ATTR_HE_BSS_COLOR]) { in nl80211_start_ap()
5321 info->attrs[NL80211_ATTR_HE_BSS_COLOR], in nl80211_start_ap()
5327 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) { in nl80211_start_ap()
5329 info->attrs[NL80211_ATTR_FILS_DISCOVERY], in nl80211_start_ap()
5335 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) { in nl80211_start_ap()
5337 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP], in nl80211_start_ap()
5345 if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT]) in nl80211_start_ap()
5357 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_ap()
5386 err = nl80211_parse_beacon(rdev, info->attrs, &params); in nl80211_set_beacon()
5426 nla = info->attrs[NL80211_ATTR_STA_FLAGS2]; in parse_station_flags()
5442 nla = info->attrs[NL80211_ATTR_STA_FLAGS]; in parse_station_flags()
5881 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_station()
5884 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_station()
6067 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN]; in get_vlan()
6115 if (!info->attrs[NL80211_ATTR_STA_WME]) in nl80211_parse_sta_wme()
6118 nla = info->attrs[NL80211_ATTR_STA_WME]; in nl80211_parse_sta_wme()
6145 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) { in nl80211_parse_sta_channel_info()
6147 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6149 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]); in nl80211_parse_sta_channel_info()
6159 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) { in nl80211_parse_sta_channel_info()
6161 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6163 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]); in nl80211_parse_sta_channel_info()
6173 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_set_station_tdls()
6174 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_set_station_tdls()
6175 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_set_station_tdls()
6177 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_set_station_tdls()
6178 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_set_station_tdls()
6180 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_set_station_tdls()
6181 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_set_station_tdls()
6183 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6185 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_set_station_tdls()
6201 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) { in nl80211_parse_sta_txpower_setting()
6208 params->txpwr.type = nla_get_u8(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
6213 if (info->attrs[idx]) in nl80211_parse_sta_txpower_setting()
6215 nla_get_s16(info->attrs[idx]); in nl80211_parse_sta_txpower_setting()
6243 if (info->attrs[NL80211_ATTR_STA_AID]) in nl80211_set_station()
6244 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_set_station()
6246 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_set_station()
6247 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_set_station()
6249 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_set_station()
6251 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_set_station()
6255 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) in nl80211_set_station()
6257 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_set_station()
6261 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_station()
6264 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_station()
6266 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) { in nl80211_set_station()
6268 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
6270 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_set_station()
6273 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_set_station()
6275 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_set_station()
6279 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_set_station()
6281 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
6283 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_set_station()
6289 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_set_station()
6291 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_set_station()
6293 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) { in nl80211_set_station()
6295 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]); in nl80211_set_station()
6296 if (info->attrs[NL80211_ATTR_MESH_PEER_AID]) in nl80211_set_station()
6298 info->attrs[NL80211_ATTR_MESH_PEER_AID]); in nl80211_set_station()
6302 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]) in nl80211_set_station()
6304 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]); in nl80211_set_station()
6306 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_set_station()
6309 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_set_station()
6312 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_set_station()
6314 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_set_station()
6316 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_set_station()
6318 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_set_station()
6377 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_station()
6380 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]) in nl80211_new_station()
6383 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) in nl80211_new_station()
6386 if (!info->attrs[NL80211_ATTR_STA_AID] && in nl80211_new_station()
6387 !info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
6390 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_station()
6392 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
6394 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); in nl80211_new_station()
6396 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); in nl80211_new_station()
6398 if (info->attrs[NL80211_ATTR_VLAN_ID]) in nl80211_new_station()
6399 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]); in nl80211_new_station()
6401 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) { in nl80211_new_station()
6403 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]); in nl80211_new_station()
6413 if (info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
6414 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]); in nl80211_new_station()
6416 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); in nl80211_new_station()
6418 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) { in nl80211_new_station()
6420 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]); in nl80211_new_station()
6424 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) { in nl80211_new_station()
6426 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
6428 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]); in nl80211_new_station()
6431 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) in nl80211_new_station()
6433 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]); in nl80211_new_station()
6435 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) in nl80211_new_station()
6437 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]); in nl80211_new_station()
6439 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) { in nl80211_new_station()
6441 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
6443 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]); in nl80211_new_station()
6446 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]) in nl80211_new_station()
6448 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]); in nl80211_new_station()
6450 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) { in nl80211_new_station()
6453 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]); in nl80211_new_station()
6456 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION]) in nl80211_new_station()
6458 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]); in nl80211_new_station()
6460 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]) in nl80211_new_station()
6462 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]); in nl80211_new_station()
6516 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
6556 info->attrs[NL80211_ATTR_PEER_AID]) in nl80211_new_station()
6605 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_station()
6606 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_station()
6628 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) { in nl80211_del_station()
6630 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]); in nl80211_del_station()
6639 if (info->attrs[NL80211_ATTR_REASON_CODE]) { in nl80211_del_station()
6641 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_del_station()
6775 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpath()
6778 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpath()
6810 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_set_mpath()
6813 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_set_mpath()
6816 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_mpath()
6817 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_set_mpath()
6835 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_new_mpath()
6838 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]) in nl80211_new_mpath()
6841 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_new_mpath()
6842 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]); in nl80211_new_mpath()
6859 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_del_mpath()
6860 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_mpath()
6883 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_get_mpp()
6886 dst = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_get_mpp()
6980 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT]) in nl80211_set_bss()
6982 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]); in nl80211_set_bss()
6983 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]) in nl80211_set_bss()
6985 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]); in nl80211_set_bss()
6986 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]) in nl80211_set_bss()
6988 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]); in nl80211_set_bss()
6989 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_set_bss()
6991 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
6993 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_set_bss()
6995 if (info->attrs[NL80211_ATTR_AP_ISOLATE]) in nl80211_set_bss()
6996 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]); in nl80211_set_bss()
6997 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE]) in nl80211_set_bss()
6999 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]); in nl80211_set_bss()
7001 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) { in nl80211_set_bss()
7005 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]); in nl80211_set_bss()
7011 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) { in nl80211_set_bss()
7016 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]); in nl80211_set_bss()
7053 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]) in nl80211_req_set_reg()
7055 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]); in nl80211_req_set_reg()
7062 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_req_set_reg()
7065 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_req_set_reg()
7068 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_req_set_reg()
7070 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR]; in nl80211_req_set_reg()
7281 if (!info->attrs[NL80211_ATTR_MESH_CONFIG]) in nl80211_parse_mesh_config()
7283 …if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFI… in nl80211_parse_mesh_config()
7419 if (!info->attrs[NL80211_ATTR_MESH_SETUP]) in nl80211_parse_mesh_setup()
7421 …if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SET… in nl80211_parse_mesh_setup()
7577 if (info->attrs[NL80211_ATTR_WIPHY]) { in nl80211_get_reg_do()
7767 if (!info->attrs[NL80211_ATTR_REG_ALPHA2]) in nl80211_set_reg()
7770 if (!info->attrs[NL80211_ATTR_REG_RULES]) in nl80211_set_reg()
7773 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]); in nl80211_set_reg()
7775 if (info->attrs[NL80211_ATTR_DFS_REGION]) in nl80211_set_reg()
7776 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]); in nl80211_set_reg()
7778 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
7803 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES], in nl80211_set_reg()
7927 int nl80211_parse_random_mac(struct nlattr **attrs, in nl80211_parse_random_mac() argument
7932 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) { in nl80211_parse_random_mac()
7942 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK]) in nl80211_parse_random_mac()
7945 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN); in nl80211_parse_random_mac()
7946 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN); in nl80211_parse_random_mac()
7989 void *request, struct nlattr **attrs, in nl80211_check_scan_flags() argument
7996 if (!attrs[NL80211_ATTR_SCAN_FLAGS]) in nl80211_check_scan_flags()
8017 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]); in nl80211_check_scan_flags()
8057 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask); in nl80211_check_scan_flags()
8088 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) { in nl80211_trigger_scan()
8092 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]; in nl80211_trigger_scan()
8094 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) in nl80211_trigger_scan()
8095 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]; in nl80211_trigger_scan()
8105 if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_trigger_scan()
8106 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) in nl80211_trigger_scan()
8112 if (info->attrs[NL80211_ATTR_IE]) in nl80211_trigger_scan()
8113 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
8211 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { in nl80211_trigger_scan()
8222 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_trigger_scan()
8223 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_trigger_scan()
8225 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_trigger_scan()
8234 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) { in nl80211_trigger_scan()
8236 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES], in nl80211_trigger_scan()
8257 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) { in nl80211_trigger_scan()
8265 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]); in nl80211_trigger_scan()
8267 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]); in nl80211_trigger_scan()
8270 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs, in nl80211_trigger_scan()
8276 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_trigger_scan()
8287 if (info->attrs[NL80211_ATTR_BSSID]) in nl80211_trigger_scan()
8289 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN); in nl80211_trigger_scan()
8291 info->attrs[NL80211_ATTR_MAC]) in nl80211_trigger_scan()
8292 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]), in nl80211_trigger_scan()
8341 struct nlattr **attrs) in nl80211_parse_sched_scan_plans() argument
8346 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan_plans()
8355 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]); in nl80211_parse_sched_scan_plans()
8372 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) { in nl80211_parse_sched_scan_plans()
8460 struct nlattr **attrs, int max_match_sets) in nl80211_parse_sched_scan() argument
8470 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
8472 attrs[NL80211_ATTR_SCAN_FREQUENCIES]); in nl80211_parse_sched_scan()
8479 if (attrs[NL80211_ATTR_SCAN_SSIDS]) in nl80211_parse_sched_scan()
8480 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
8496 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
8498 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
8534 if (attrs[NL80211_ATTR_IE]) in nl80211_parse_sched_scan()
8535 ie_len = nla_len(attrs[NL80211_ATTR_IE]); in nl80211_parse_sched_scan()
8542 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) { in nl80211_parse_sched_scan()
8547 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
8551 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) in nl80211_parse_sched_scan()
8560 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]) in nl80211_parse_sched_scan()
8571 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] || in nl80211_parse_sched_scan()
8572 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST])) in nl80211_parse_sched_scan()
8619 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { in nl80211_parse_sched_scan()
8622 attrs[NL80211_ATTR_SCAN_FREQUENCIES], in nl80211_parse_sched_scan()
8670 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS], in nl80211_parse_sched_scan()
8684 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) { in nl80211_parse_sched_scan()
8686 attrs[NL80211_ATTR_SCHED_SCAN_MATCH], in nl80211_parse_sched_scan()
8758 nla_data(attrs[NL80211_ATTR_IE]), in nl80211_parse_sched_scan()
8762 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true); in nl80211_parse_sched_scan()
8766 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY]) in nl80211_parse_sched_scan()
8768 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]); in nl80211_parse_sched_scan()
8770 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) { in nl80211_parse_sched_scan()
8772 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]); in nl80211_parse_sched_scan()
8777 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) { in nl80211_parse_sched_scan()
8781 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]); in nl80211_parse_sched_scan()
8790 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs); in nl80211_parse_sched_scan()
8816 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI]; in nl80211_start_sched_scan()
8822 info->attrs, in nl80211_start_sched_scan()
8842 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_start_sched_scan()
8866 if (info->attrs[NL80211_ATTR_COOKIE]) { in nl80211_stop_sched_scan()
8867 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_stop_sched_scan()
9043 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_channel_switch()
9044 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]) in nl80211_channel_switch()
9048 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES]) in nl80211_channel_switch()
9054 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]); in nl80211_channel_switch()
9063 err = nl80211_parse_beacon(rdev, info->attrs, &params.beacon_after); in nl80211_channel_switch()
9068 info->attrs[NL80211_ATTR_CSA_IES], in nl80211_channel_switch()
9149 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) { in nl80211_channel_switch()
9154 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX]) in nl80211_channel_switch()
9513 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_authenticate()
9516 if (!info->attrs[NL80211_ATTR_AUTH_TYPE]) in nl80211_authenticate()
9519 if (!info->attrs[NL80211_ATTR_SSID]) in nl80211_authenticate()
9522 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_authenticate()
9567 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_authenticate()
9568 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_authenticate()
9569 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_authenticate()
9571 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_authenticate()
9577 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
9578 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_authenticate()
9580 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_authenticate()
9581 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
9582 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_authenticate()
9585 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_authenticate()
9593 !info->attrs[NL80211_ATTR_AUTH_DATA]) in nl80211_authenticate()
9596 if (info->attrs[NL80211_ATTR_AUTH_DATA]) { in nl80211_authenticate()
9602 auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
9603 auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]); in nl80211_authenticate()
9606 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_authenticate()
9627 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in validate_pae_over_nl80211()
9647 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT]; in nl80211_crypto_settings()
9649 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_crypto_settings()
9653 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_crypto_settings()
9658 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]) in nl80211_crypto_settings()
9663 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_crypto_settings()
9671 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH]) in nl80211_crypto_settings()
9675 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) { in nl80211_crypto_settings()
9679 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
9680 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]); in nl80211_crypto_settings()
9698 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) { in nl80211_crypto_settings()
9700 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]); in nl80211_crypto_settings()
9706 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) { in nl80211_crypto_settings()
9708 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]); in nl80211_crypto_settings()
9713 if (info->attrs[NL80211_ATTR_AKM_SUITES]) { in nl80211_crypto_settings()
9717 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
9718 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]); in nl80211_crypto_settings()
9730 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_crypto_settings()
9731 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN) in nl80211_crypto_settings()
9738 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_crypto_settings()
9741 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) { in nl80211_crypto_settings()
9748 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
9750 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]); in nl80211_crypto_settings()
9753 if (info->attrs[NL80211_ATTR_SAE_PWE]) in nl80211_crypto_settings()
9755 nla_get_u8(info->attrs[NL80211_ATTR_SAE_PWE]); in nl80211_crypto_settings()
9776 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_associate()
9777 !info->attrs[NL80211_ATTR_SSID] || in nl80211_associate()
9778 !info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_associate()
9788 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_associate()
9790 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_associate()
9791 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_associate()
9793 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_associate()
9798 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
9799 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_associate()
9801 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_associate()
9802 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
9803 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_associate()
9806 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_associate()
9808 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_associate()
9815 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_associate()
9816 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_associate()
9818 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_associate()
9821 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
9823 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_associate()
9826 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_associate()
9827 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_associate()
9830 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_associate()
9834 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_associate()
9837 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
9839 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_associate()
9842 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_associate()
9843 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_associate()
9846 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_associate()
9850 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_associate()
9860 if (info->attrs[NL80211_ATTR_FILS_KEK]) { in nl80211_associate()
9861 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
9862 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]); in nl80211_associate()
9863 if (!info->attrs[NL80211_ATTR_FILS_NONCES]) in nl80211_associate()
9866 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]); in nl80211_associate()
9869 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) { in nl80211_associate()
9870 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY]) in nl80211_associate()
9873 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]), in nl80211_associate()
9877 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) { in nl80211_associate()
9878 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) in nl80211_associate()
9881 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]), in nl80211_associate()
9892 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_associate()
9918 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_deauthenticate()
9921 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_deauthenticate()
9931 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_deauthenticate()
9933 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_deauthenticate()
9939 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_deauthenticate()
9940 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
9941 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_deauthenticate()
9944 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_deauthenticate()
9966 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_disassociate()
9969 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disassociate()
9979 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_disassociate()
9981 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disassociate()
9987 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_disassociate()
9988 ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
9989 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_disassociate()
9992 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE]; in nl80211_disassociate()
10040 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_join_ibss()
10041 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_join_ibss()
10046 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) in nl80211_join_ibss()
10048 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_ibss()
10063 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_join_ibss()
10064 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_join_ibss()
10069 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
10070 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_join_ibss()
10072 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_join_ibss()
10073 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
10074 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_join_ibss()
10108 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED]; in nl80211_join_ibss()
10109 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_join_ibss()
10111 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_ibss()
10113 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
10115 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_ibss()
10125 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
10127 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_join_ibss()
10130 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_join_ibss()
10131 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_join_ibss()
10134 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_join_ibss()
10138 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_ibss()
10140 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_ibss()
10143 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_join_ibss()
10158 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]); in nl80211_join_ibss()
10160 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_ibss()
10172 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_ibss()
10178 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_ibss()
10217 if (!info->attrs[NL80211_ATTR_MCAST_RATE]) in nl80211_set_mcast_rate()
10220 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]); in nl80211_set_mcast_rate()
10353 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_testmode_do()
10368 if (!info->attrs[NL80211_ATTR_TESTDATA]) in nl80211_testmode_do()
10373 nla_data(info->attrs[NL80211_ATTR_TESTDATA]), in nl80211_testmode_do()
10374 nla_len(info->attrs[NL80211_ATTR_TESTDATA])); in nl80211_testmode_do()
10495 if (!info->attrs[NL80211_ATTR_SSID] || in nl80211_connect()
10496 !nla_len(info->attrs[NL80211_ATTR_SSID])) in nl80211_connect()
10499 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_connect()
10501 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_connect()
10508 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY]; in nl80211_connect()
10510 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] && in nl80211_connect()
10514 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS]; in nl80211_connect()
10528 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] && in nl80211_connect()
10531 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]); in nl80211_connect()
10534 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_connect()
10535 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_connect()
10536 else if (info->attrs[NL80211_ATTR_MAC_HINT]) in nl80211_connect()
10538 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]); in nl80211_connect()
10539 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
10540 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_connect()
10542 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_connect()
10543 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
10544 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_connect()
10547 if (info->attrs[NL80211_ATTR_USE_MFP]) { in nl80211_connect()
10548 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]); in nl80211_connect()
10557 if (info->attrs[NL80211_ATTR_PREV_BSSID]) in nl80211_connect()
10559 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]); in nl80211_connect()
10561 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_connect()
10563 info->attrs[NL80211_ATTR_WIPHY_FREQ])); in nl80211_connect()
10564 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]) in nl80211_connect()
10566 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]); in nl80211_connect()
10572 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) { in nl80211_connect()
10573 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]); in nl80211_connect()
10580 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) { in nl80211_connect()
10582 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]); in nl80211_connect()
10584 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]) in nl80211_connect()
10586 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]); in nl80211_connect()
10589 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) { in nl80211_connect()
10595 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT])) in nl80211_connect()
10598 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) in nl80211_connect()
10600 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]), in nl80211_connect()
10603 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) { in nl80211_connect()
10604 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) { in nl80211_connect()
10609 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]), in nl80211_connect()
10613 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT])) in nl80211_connect()
10616 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) in nl80211_connect()
10618 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]), in nl80211_connect()
10621 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) { in nl80211_connect()
10622 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) { in nl80211_connect()
10627 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]), in nl80211_connect()
10631 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) { in nl80211_connect()
10643 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]); in nl80211_connect()
10649 if (info->attrs[NL80211_ATTR_BSS_SELECT]) { in nl80211_connect()
10656 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT], in nl80211_connect()
10666 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_connect()
10667 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_connect()
10668 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_connect()
10669 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
10671 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
10673 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_connect()
10675 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
10677 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_connect()
10680 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_connect()
10682 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
10684 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_connect()
10685 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_connect()
10686 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_connect()
10687 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_connect()
10688 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_connect()
10693 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) { in nl80211_connect()
10694 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
10710 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) { in nl80211_connect()
10739 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_connect_params()
10740 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
10741 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_connect_params()
10754 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] && in nl80211_update_connect_params()
10755 info->attrs[NL80211_ATTR_FILS_ERP_REALM] && in nl80211_update_connect_params()
10756 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] && in nl80211_update_connect_params()
10757 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
10759 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
10761 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]); in nl80211_update_connect_params()
10763 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
10765 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]); in nl80211_update_connect_params()
10768 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]); in nl80211_update_connect_params()
10770 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
10772 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]); in nl80211_update_connect_params()
10774 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] || in nl80211_update_connect_params()
10775 info->attrs[NL80211_ATTR_FILS_ERP_REALM] || in nl80211_update_connect_params()
10776 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] || in nl80211_update_connect_params()
10777 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) { in nl80211_update_connect_params()
10781 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) { in nl80211_update_connect_params()
10782 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]); in nl80211_update_connect_params()
10816 if (!info->attrs[NL80211_ATTR_REASON_CODE]) in nl80211_disconnect()
10819 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]); in nl80211_disconnect()
10840 if (info->attrs[NL80211_ATTR_PID]) { in nl80211_wiphy_netns()
10841 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]); in nl80211_wiphy_netns()
10844 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) { in nl80211_wiphy_netns()
10845 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]); in nl80211_wiphy_netns()
10875 if (!info->attrs[NL80211_ATTR_PMKID]) in nl80211_setdel_pmksa()
10878 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_setdel_pmksa()
10880 if (info->attrs[NL80211_ATTR_MAC]) { in nl80211_setdel_pmksa()
10881 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_setdel_pmksa()
10882 } else if (info->attrs[NL80211_ATTR_SSID] && in nl80211_setdel_pmksa()
10883 info->attrs[NL80211_ATTR_FILS_CACHE_ID] && in nl80211_setdel_pmksa()
10885 info->attrs[NL80211_ATTR_PMK])) { in nl80211_setdel_pmksa()
10886 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
10887 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_setdel_pmksa()
10889 nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]); in nl80211_setdel_pmksa()
10893 if (info->attrs[NL80211_ATTR_PMK]) { in nl80211_setdel_pmksa()
10894 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
10895 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_setdel_pmksa()
10898 if (info->attrs[NL80211_ATTR_PMK_LIFETIME]) in nl80211_setdel_pmksa()
10900 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]); in nl80211_setdel_pmksa()
10902 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]) in nl80211_setdel_pmksa()
10905 info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]); in nl80211_setdel_pmksa()
10961 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] || in nl80211_tdls_mgmt()
10962 !info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_tdls_mgmt()
10963 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] || in nl80211_tdls_mgmt()
10964 !info->attrs[NL80211_ATTR_IE] || in nl80211_tdls_mgmt()
10965 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_mgmt()
10968 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_mgmt()
10969 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]); in nl80211_tdls_mgmt()
10970 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_tdls_mgmt()
10971 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]); in nl80211_tdls_mgmt()
10972 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]); in nl80211_tdls_mgmt()
10973 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]) in nl80211_tdls_mgmt()
10975 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]); in nl80211_tdls_mgmt()
10980 nla_data(info->attrs[NL80211_ATTR_IE]), in nl80211_tdls_mgmt()
10981 nla_len(info->attrs[NL80211_ATTR_IE])); in nl80211_tdls_mgmt()
10995 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] || in nl80211_tdls_oper()
10996 !info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_oper()
10999 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]); in nl80211_tdls_oper()
11000 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_oper()
11018 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] || in nl80211_remain_on_channel()
11019 !info->attrs[NL80211_ATTR_DURATION]) in nl80211_remain_on_channel()
11022 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_remain_on_channel()
11091 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_cancel_remain_on_channel()
11097 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_cancel_remain_on_channel()
11115 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_set_tx_bitrate_mask()
11133 if (!info->attrs[NL80211_ATTR_FRAME_MATCH]) in nl80211_register_mgmt()
11136 if (info->attrs[NL80211_ATTR_FRAME_TYPE]) in nl80211_register_mgmt()
11137 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]); in nl80211_register_mgmt()
11158 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] && in nl80211_register_mgmt()
11167 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
11168 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]), in nl80211_register_mgmt()
11169 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST], in nl80211_register_mgmt()
11184 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK], in nl80211_tx_mgmt()
11187 if (!info->attrs[NL80211_ATTR_FRAME]) in nl80211_tx_mgmt()
11195 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ]) in nl80211_tx_mgmt()
11210 if (info->attrs[NL80211_ATTR_DURATION]) { in nl80211_tx_mgmt()
11213 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]); in nl80211_tx_mgmt()
11224 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK]; in nl80211_tx_mgmt()
11229 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]); in nl80211_tx_mgmt()
11235 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_tx_mgmt()
11251 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
11252 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_mgmt()
11254 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) { in nl80211_tx_mgmt()
11255 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
11263 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]); in nl80211_tx_mgmt()
11314 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_tx_mgmt_cancel_wait()
11334 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_tx_mgmt_cancel_wait()
11348 if (!info->attrs[NL80211_ATTR_PS_STATE]) in nl80211_set_power_save()
11351 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]); in nl80211_set_power_save()
11577 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1]; in nl80211_set_cqm() local
11581 cqm = info->attrs[NL80211_ATTR_CQM]; in nl80211_set_cqm()
11585 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm, in nl80211_set_cqm()
11591 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] && in nl80211_set_cqm()
11592 attrs[NL80211_ATTR_CQM_RSSI_HYST]) { in nl80211_set_cqm()
11594 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
11595 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]); in nl80211_set_cqm()
11596 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]); in nl80211_set_cqm()
11605 if (attrs[NL80211_ATTR_CQM_TXE_RATE] && in nl80211_set_cqm()
11606 attrs[NL80211_ATTR_CQM_TXE_PKTS] && in nl80211_set_cqm()
11607 attrs[NL80211_ATTR_CQM_TXE_INTVL]) { in nl80211_set_cqm()
11608 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]); in nl80211_set_cqm()
11609 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]); in nl80211_set_cqm()
11610 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]); in nl80211_set_cqm()
11652 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) { in nl80211_join_mesh()
11659 if (!info->attrs[NL80211_ATTR_MESH_ID] || in nl80211_join_mesh()
11660 !nla_len(info->attrs[NL80211_ATTR_MESH_ID])) in nl80211_join_mesh()
11663 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
11664 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]); in nl80211_join_mesh()
11666 if (info->attrs[NL80211_ATTR_MCAST_RATE] && in nl80211_join_mesh()
11668 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]))) in nl80211_join_mesh()
11671 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) { in nl80211_join_mesh()
11673 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]); in nl80211_join_mesh()
11682 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) { in nl80211_join_mesh()
11684 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]); in nl80211_join_mesh()
11689 if (info->attrs[NL80211_ATTR_MESH_SETUP]) { in nl80211_join_mesh()
11699 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) { in nl80211_join_mesh()
11708 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) { in nl80211_join_mesh()
11709 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
11711 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]); in nl80211_join_mesh()
11725 if (info->attrs[NL80211_ATTR_TX_RATES]) { in nl80211_join_mesh()
11726 err = nl80211_parse_tx_bitrate_mask(info, info->attrs, in nl80211_join_mesh()
11743 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]); in nl80211_join_mesh()
11745 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) { in nl80211_join_mesh()
11756 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) in nl80211_join_mesh()
12204 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) { in nl80211_set_wowlan()
12211 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS], in nl80211_set_wowlan()
12605 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) { in nl80211_set_coalesce()
12611 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
12625 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE], in nl80211_set_coalesce()
12669 if (!info->attrs[NL80211_ATTR_REKEY_DATA]) in nl80211_set_rekey_data()
12673 info->attrs[NL80211_ATTR_REKEY_DATA], in nl80211_set_rekey_data()
12748 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_probe_client()
12765 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_client()
12880 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) in nl80211_start_nan()
12884 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_start_nan()
12886 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_start_nan()
12887 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_start_nan()
13001 if (!info->attrs[NL80211_ATTR_NAN_FUNC]) in nl80211_nan_add_func()
13005 info->attrs[NL80211_ATTR_NAN_FUNC], in nl80211_nan_add_func()
13235 if (!info->attrs[NL80211_ATTR_COOKIE]) in nl80211_nan_del_func()
13238 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]); in nl80211_nan_del_func()
13259 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) { in nl80211_nan_change_config()
13261 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]); in nl80211_nan_change_config()
13268 if (info->attrs[NL80211_ATTR_BANDS]) { in nl80211_nan_change_config()
13269 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]); in nl80211_nan_change_config()
13463 if (!info->attrs[NL80211_ATTR_MDID] || in nl80211_update_ft_ies()
13464 !info->attrs[NL80211_ATTR_IE]) in nl80211_update_ft_ies()
13468 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]); in nl80211_update_ft_ies()
13469 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
13470 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_ft_ies()
13494 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID]) in nl80211_crit_protocol_start()
13495 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]); in nl80211_crit_protocol_start()
13501 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]) in nl80211_crit_protocol_start()
13505 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]); in nl80211_crit_protocol_start()
13556 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs); in nl80211_vendor_cmd()
13572 if (!info->attrs[NL80211_ATTR_VENDOR_ID] || in nl80211_vendor_cmd()
13573 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD]) in nl80211_vendor_cmd()
13576 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]); in nl80211_vendor_cmd()
13577 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]); in nl80211_vendor_cmd()
13607 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) { in nl80211_vendor_cmd()
13608 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
13609 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]); in nl80211_vendor_cmd()
13612 info->attrs[NL80211_ATTR_VENDOR_DATA], in nl80211_vendor_cmd()
13887 if (info->attrs[NL80211_ATTR_QOS_MAP]) { in nl80211_set_qos_map()
13888 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
13889 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]); in nl80211_set_qos_map()
13938 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] || in nl80211_add_tx_ts()
13939 !info->attrs[NL80211_ATTR_USER_PRIO]) in nl80211_add_tx_ts()
13942 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_add_tx_ts()
13943 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]); in nl80211_add_tx_ts()
13954 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_add_tx_ts()
13956 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) { in nl80211_add_tx_ts()
13958 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]); in nl80211_add_tx_ts()
13992 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC]) in nl80211_del_tx_ts()
13995 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]); in nl80211_del_tx_ts()
13996 peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_tx_ts()
14028 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_tdls_channel_switch()
14029 !info->attrs[NL80211_ATTR_OPER_CLASS]) in nl80211_tdls_channel_switch()
14055 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_channel_switch()
14056 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]); in nl80211_tdls_channel_switch()
14086 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_tdls_cancel_channel_switch()
14089 addr = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tdls_cancel_channel_switch()
14114 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED]; in nl80211_set_multicast_to_unicast()
14136 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK]) in nl80211_set_pmk()
14145 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_pmk()
14151 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
14152 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]); in nl80211_set_pmk()
14159 if (info->attrs[NL80211_ATTR_PMKR0_NAME]) in nl80211_set_pmk()
14161 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]); in nl80211_set_pmk()
14185 if (!info->attrs[NL80211_ATTR_MAC]) in nl80211_del_pmk()
14189 aa = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_del_pmk()
14205 if (!info->attrs[NL80211_ATTR_SSID] && in nl80211_external_auth()
14210 if (!info->attrs[NL80211_ATTR_BSSID]) in nl80211_external_auth()
14213 if (!info->attrs[NL80211_ATTR_STATUS_CODE]) in nl80211_external_auth()
14218 if (info->attrs[NL80211_ATTR_SSID]) { in nl80211_external_auth()
14219 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]); in nl80211_external_auth()
14223 nla_data(info->attrs[NL80211_ATTR_SSID]), in nl80211_external_auth()
14227 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]), in nl80211_external_auth()
14230 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_external_auth()
14232 if (info->attrs[NL80211_ATTR_PMKID]) in nl80211_external_auth()
14233 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]); in nl80211_external_auth()
14240 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK]; in nl80211_tx_control_port()
14259 if (!info->attrs[NL80211_ATTR_FRAME] || in nl80211_tx_control_port()
14260 !info->attrs[NL80211_ATTR_MAC] || in nl80211_tx_control_port()
14261 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) { in nl80211_tx_control_port()
14287 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
14288 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_tx_control_port()
14289 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_tx_control_port()
14290 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]); in nl80211_tx_control_port()
14292 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]); in nl80211_tx_control_port()
14385 if (!info->attrs[NL80211_ATTR_STATUS_CODE] || in nl80211_update_owe_info()
14386 !info->attrs[NL80211_ATTR_MAC]) in nl80211_update_owe_info()
14390 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]); in nl80211_update_owe_info()
14391 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN); in nl80211_update_owe_info()
14393 if (info->attrs[NL80211_ATTR_IE]) { in nl80211_update_owe_info()
14394 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
14395 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]); in nl80211_update_owe_info()
14415 if (!info->attrs[NL80211_ATTR_MAC] || in nl80211_probe_mesh_link()
14416 !info->attrs[NL80211_ATTR_FRAME]) { in nl80211_probe_mesh_link()
14424 dest = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_probe_mesh_link()
14425 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
14426 len = nla_len(info->attrs[NL80211_ATTR_FRAME]); in nl80211_probe_mesh_link()
14445 struct nlattr *attrs[], struct net_device *dev, in parse_tid_conf() argument
14453 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS]) in parse_tid_conf()
14457 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]); in parse_tid_conf()
14458 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]); in parse_tid_conf()
14471 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) { in parse_tid_conf()
14474 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]); in parse_tid_conf()
14477 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) { in parse_tid_conf()
14480 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]); in parse_tid_conf()
14486 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) { in parse_tid_conf()
14489 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]); in parse_tid_conf()
14495 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) { in parse_tid_conf()
14498 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]); in parse_tid_conf()
14501 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) { in parse_tid_conf()
14504 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]); in parse_tid_conf()
14507 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) { in parse_tid_conf()
14510 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]); in parse_tid_conf()
14513 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) { in parse_tid_conf()
14516 tid_conf->txrate_type = nla_get_u8(attrs[idx]); in parse_tid_conf()
14520 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr, in parse_tid_conf()
14547 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1]; in nl80211_set_tid_config() local
14555 if (!info->attrs[NL80211_ATTR_TID_CONFIG]) in nl80211_set_tid_config()
14561 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
14572 if (info->attrs[NL80211_ATTR_MAC]) in nl80211_set_tid_config()
14573 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]); in nl80211_set_tid_config()
14575 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG], in nl80211_set_tid_config()
14577 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX, in nl80211_set_tid_config()
14583 ret = parse_tid_conf(rdev, attrs, dev, in nl80211_set_tid_config()
14635 info->attrs); in nl80211_pre_doit()