Lines Matching defs:attrs
67 __cfg80211_wdev_from_attrs(struct net *netns, struct nlattr **attrs)
71 bool have_ifidx = attrs[NL80211_ATTR_IFINDEX];
72 bool have_wdev_id = attrs[NL80211_ATTR_WDEV];
83 ifidx = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]);
85 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]);
120 __cfg80211_rdev_from_attrs(struct net *netns, struct nlattr **attrs)
127 if (!attrs[NL80211_ATTR_WIPHY] &&
128 !attrs[NL80211_ATTR_IFINDEX] &&
129 !attrs[NL80211_ATTR_WDEV])
132 if (attrs[NL80211_ATTR_WIPHY])
134 nla_get_u32(attrs[NL80211_ATTR_WIPHY]));
136 if (attrs[NL80211_ATTR_WDEV]) {
137 u64 wdev_id = nla_get_u64(attrs[NL80211_ATTR_WDEV]);
160 if (attrs[NL80211_ATTR_IFINDEX]) {
161 int ifindex = nla_get_u32(attrs[NL80211_ATTR_IFINDEX]);
202 return __cfg80211_rdev_from_attrs(netns, info->attrs);
1207 if (info->attrs[NL80211_ATTR_KEY_DATA]) {
1208 k->p.key = nla_data(info->attrs[NL80211_ATTR_KEY_DATA]);
1209 k->p.key_len = nla_len(info->attrs[NL80211_ATTR_KEY_DATA]);
1212 if (info->attrs[NL80211_ATTR_KEY_SEQ]) {
1213 k->p.seq = nla_data(info->attrs[NL80211_ATTR_KEY_SEQ]);
1214 k->p.seq_len = nla_len(info->attrs[NL80211_ATTR_KEY_SEQ]);
1217 if (info->attrs[NL80211_ATTR_KEY_IDX])
1218 k->idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]);
1220 if (info->attrs[NL80211_ATTR_KEY_CIPHER])
1221 k->p.cipher = nla_get_u32(info->attrs[NL80211_ATTR_KEY_CIPHER]);
1223 k->def = !!info->attrs[NL80211_ATTR_KEY_DEFAULT];
1224 k->defmgmt = !!info->attrs[NL80211_ATTR_KEY_DEFAULT_MGMT];
1233 if (info->attrs[NL80211_ATTR_KEY_TYPE])
1234 k->type = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]);
1236 if (info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES]) {
1240 info->attrs[NL80211_ATTR_KEY_DEFAULT_TYPES],
1261 if (info->attrs[NL80211_ATTR_KEY])
1262 err = nl80211_parse_key_new(info, info->attrs[NL80211_ATTR_KEY], k);
1317 struct nlattr *keys = info->attrs[NL80211_ATTR_KEYS];
2898 struct nlattr **attrs = info->attrs;
2901 if (!attrs[NL80211_ATTR_WIPHY_FREQ])
2905 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]));
2906 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET])
2908 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]);
2919 NL_SET_ERR_MSG_ATTR(extack, attrs[NL80211_ATTR_WIPHY_FREQ],
2924 if (attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]) {
2927 chantype = nla_get_u32(attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE]);
2937 if (attrs[NL80211_ATTR_CENTER_FREQ1] &&
2938 chandef->center_freq1 != nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1])) {
2940 attrs[NL80211_ATTR_CENTER_FREQ1],
2945 if (attrs[NL80211_ATTR_CENTER_FREQ2] &&
2946 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2])) {
2948 attrs[NL80211_ATTR_CENTER_FREQ2],
2955 attrs[NL80211_ATTR_WIPHY_CHANNEL_TYPE],
2959 } else if (attrs[NL80211_ATTR_CHANNEL_WIDTH]) {
2961 nla_get_u32(attrs[NL80211_ATTR_CHANNEL_WIDTH]);
2966 attrs[NL80211_ATTR_CHANNEL_WIDTH],
2971 if (attrs[NL80211_ATTR_CENTER_FREQ1]) {
2973 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ1]);
2974 if (attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET])
2976 attrs[NL80211_ATTR_CENTER_FREQ1_OFFSET]);
2980 if (attrs[NL80211_ATTR_CENTER_FREQ2])
2982 nla_get_u32(attrs[NL80211_ATTR_CENTER_FREQ2]);
2985 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) {
2987 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]);
2989 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG])
2991 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]);
3094 if (!info->attrs[NL80211_ATTR_MAC])
3106 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
3135 if (info->attrs[NL80211_ATTR_IFINDEX]) {
3136 int ifindex = nla_get_u32(info->attrs[NL80211_ATTR_IFINDEX]);
3147 info->attrs);
3161 if (info->attrs[NL80211_ATTR_WIPHY_NAME])
3163 rdev, nla_data(info->attrs[NL80211_ATTR_WIPHY_NAME]));
3168 if (info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS]) {
3186 info->attrs[NL80211_ATTR_WIPHY_TXQ_PARAMS],
3206 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
3215 if (info->attrs[NL80211_ATTR_WIPHY_TX_POWER_SETTING]) {
3227 type = nla_get_u32(info->attrs[idx]);
3229 if (!info->attrs[NL80211_ATTR_WIPHY_TX_POWER_LEVEL] &&
3235 mbm = nla_get_u32(info->attrs[idx]);
3243 if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] &&
3244 info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) {
3252 tx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX]);
3253 rx_ant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]);
3271 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) {
3273 info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]);
3278 if (info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]) {
3280 info->attrs[NL80211_ATTR_WIPHY_RETRY_LONG]);
3285 if (info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]) {
3287 info->attrs[NL80211_ATTR_WIPHY_FRAG_THRESHOLD]);
3303 if (info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]) {
3305 info->attrs[NL80211_ATTR_WIPHY_RTS_THRESHOLD]);
3309 if (info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]) {
3310 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK])
3314 info->attrs[NL80211_ATTR_WIPHY_COVERAGE_CLASS]);
3318 if (info->attrs[NL80211_ATTR_WIPHY_DYN_ACK]) {
3325 if (info->attrs[NL80211_ATTR_TXQ_LIMIT]) {
3330 info->attrs[NL80211_ATTR_TXQ_LIMIT]);
3334 if (info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]) {
3339 info->attrs[NL80211_ATTR_TXQ_MEMORY_LIMIT]);
3343 if (info->attrs[NL80211_ATTR_TXQ_QUANTUM]) {
3348 info->attrs[NL80211_ATTR_TXQ_QUANTUM]);
3673 if (info->attrs[NL80211_ATTR_MNTR_FLAGS]) {
3677 err = parse_monitor_flags(info->attrs[NL80211_ATTR_MNTR_FLAGS],
3689 if (info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]) {
3700 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_GROUP_DATA]);
3711 if (info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]) {
3721 nla_data(info->attrs[NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR]);
3767 if (info->attrs[NL80211_ATTR_IFTYPE]) {
3768 ntype = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]);
3773 if (info->attrs[NL80211_ATTR_MESH_ID]) {
3787 nla_len(info->attrs[NL80211_ATTR_MESH_ID]);
3788 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]),
3793 if (info->attrs[NL80211_ATTR_4ADDR]) {
3794 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]);
3840 if (!info->attrs[NL80211_ATTR_IFNAME])
3843 if (info->attrs[NL80211_ATTR_IFTYPE])
3844 type = nla_get_u32(info->attrs[NL80211_ATTR_IFTYPE]);
3851 info->attrs[NL80211_ATTR_MAC]) {
3852 nla_memcpy(params.macaddr, info->attrs[NL80211_ATTR_MAC],
3858 if (info->attrs[NL80211_ATTR_4ADDR]) {
3859 params.use_4addr = !!nla_get_u8(info->attrs[NL80211_ATTR_4ADDR]);
3877 nla_data(info->attrs[NL80211_ATTR_IFNAME]),
3887 if (info->attrs[NL80211_ATTR_SOCKET_OWNER])
3892 if (!info->attrs[NL80211_ATTR_MESH_ID])
3898 nla_len(info->attrs[NL80211_ATTR_MESH_ID]);
3899 memcpy(wdev->ssid, nla_data(info->attrs[NL80211_ATTR_MESH_ID]),
3952 if (!info->attrs[NL80211_ATTR_NOACK_MAP])
3958 noack_map = nla_get_u16(info->attrs[NL80211_ATTR_NOACK_MAP]);
4035 if (info->attrs[NL80211_ATTR_KEY_IDX]) {
4036 key_idx = nla_get_u8(info->attrs[NL80211_ATTR_KEY_IDX]);
4044 if (info->attrs[NL80211_ATTR_MAC])
4045 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
4048 if (info->attrs[NL80211_ATTR_KEY_TYPE]) {
4049 u32 kt = nla_get_u32(info->attrs[NL80211_ATTR_KEY_TYPE]);
4188 if (info->attrs[NL80211_ATTR_MAC])
4189 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
4225 if (info->attrs[NL80211_ATTR_MAC])
4226 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
4243 info->attrs[NL80211_ATTR_VLAN_ID])
4244 key.p.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
4284 if (info->attrs[NL80211_ATTR_MAC])
4285 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
4363 if (!info->attrs[NL80211_ATTR_ACL_POLICY])
4366 acl_policy = nla_get_u32(info->attrs[NL80211_ATTR_ACL_POLICY]);
4371 if (!info->attrs[NL80211_ATTR_MAC_ADDRS])
4374 n_entries = validate_acl_mac_addrs(info->attrs[NL80211_ATTR_MAC_ADDRS]);
4385 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_MAC_ADDRS], tmp) {
4617 struct nlattr *attrs[],
4662 if (!attrs[attr])
4669 nla_for_each_nested(tx_rates, attrs[attr], rem) {
4813 struct nlattr *attrs[],
4821 if (attrs[NL80211_ATTR_BEACON_HEAD]) {
4822 bcn->head = nla_data(attrs[NL80211_ATTR_BEACON_HEAD]);
4823 bcn->head_len = nla_len(attrs[NL80211_ATTR_BEACON_HEAD]);
4829 if (attrs[NL80211_ATTR_BEACON_TAIL]) {
4830 bcn->tail = nla_data(attrs[NL80211_ATTR_BEACON_TAIL]);
4831 bcn->tail_len = nla_len(attrs[NL80211_ATTR_BEACON_TAIL]);
4838 if (attrs[NL80211_ATTR_IE]) {
4839 bcn->beacon_ies = nla_data(attrs[NL80211_ATTR_IE]);
4840 bcn->beacon_ies_len = nla_len(attrs[NL80211_ATTR_IE]);
4843 if (attrs[NL80211_ATTR_IE_PROBE_RESP]) {
4845 nla_data(attrs[NL80211_ATTR_IE_PROBE_RESP]);
4847 nla_len(attrs[NL80211_ATTR_IE_PROBE_RESP]);
4850 if (attrs[NL80211_ATTR_IE_ASSOC_RESP]) {
4852 nla_data(attrs[NL80211_ATTR_IE_ASSOC_RESP]);
4854 nla_len(attrs[NL80211_ATTR_IE_ASSOC_RESP]);
4857 if (attrs[NL80211_ATTR_PROBE_RESP]) {
4858 bcn->probe_resp = nla_data(attrs[NL80211_ATTR_PROBE_RESP]);
4859 bcn->probe_resp_len = nla_len(attrs[NL80211_ATTR_PROBE_RESP]);
4862 if (attrs[NL80211_ATTR_FTM_RESPONDER]) {
4867 attrs[NL80211_ATTR_FTM_RESPONDER],
4895 static int nl80211_parse_he_obss_pd(struct nlattr *attrs,
4901 err = nla_parse_nested(tb, NL80211_HE_OBSS_PD_ATTR_MAX, attrs,
4939 static int nl80211_parse_he_bss_color(struct nlattr *attrs,
4945 err = nla_parse_nested(tb, NL80211_HE_BSS_COLOR_ATTR_MAX, attrs,
4964 struct nlattr *attrs,
4975 ret = nla_parse_nested(tb, NL80211_FILS_DISCOVERY_ATTR_MAX, attrs,
4995 struct nlattr *attrs,
5008 attrs, NULL, NULL);
5168 if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] ||
5169 !info->attrs[NL80211_ATTR_DTIM_PERIOD] ||
5170 !info->attrs[NL80211_ATTR_BEACON_HEAD])
5173 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon);
5178 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]);
5180 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
5194 if (info->attrs[NL80211_ATTR_SSID]) {
5195 params.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
5197 nla_len(info->attrs[NL80211_ATTR_SSID]);
5202 if (info->attrs[NL80211_ATTR_HIDDEN_SSID])
5204 info->attrs[NL80211_ATTR_HIDDEN_SSID]);
5206 params.privacy = !!info->attrs[NL80211_ATTR_PRIVACY];
5208 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) {
5210 info->attrs[NL80211_ATTR_AUTH_TYPE]);
5222 if (info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]) {
5226 info->attrs[NL80211_ATTR_INACTIVITY_TIMEOUT]);
5229 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) {
5233 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]);
5239 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) {
5244 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]);
5251 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
5264 if (info->attrs[NL80211_ATTR_TX_RATES]) {
5265 err = nl80211_parse_tx_bitrate_mask(info, info->attrs,
5278 if (info->attrs[NL80211_ATTR_SMPS_MODE]) {
5280 nla_get_u8(info->attrs[NL80211_ATTR_SMPS_MODE]);
5301 params.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]);
5305 if (info->attrs[NL80211_ATTR_ACL_POLICY]) {
5312 nla_get_flag(info->attrs[NL80211_ATTR_TWT_RESPONDER]);
5314 if (info->attrs[NL80211_ATTR_HE_OBSS_PD]) {
5316 info->attrs[NL80211_ATTR_HE_OBSS_PD],
5322 if (info->attrs[NL80211_ATTR_HE_BSS_COLOR]) {
5324 info->attrs[NL80211_ATTR_HE_BSS_COLOR],
5330 if (info->attrs[NL80211_ATTR_FILS_DISCOVERY]) {
5332 info->attrs[NL80211_ATTR_FILS_DISCOVERY],
5338 if (info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP]) {
5340 rdev, info->attrs[NL80211_ATTR_UNSOL_BCAST_PROBE_RESP],
5348 if (info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])
5360 if (info->attrs[NL80211_ATTR_SOCKET_OWNER])
5389 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms);
5429 nla = info->attrs[NL80211_ATTR_STA_FLAGS2];
5445 nla = info->attrs[NL80211_ATTR_STA_FLAGS];
5884 if (!info->attrs[NL80211_ATTR_MAC])
5887 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
6070 struct nlattr *vlanattr = info->attrs[NL80211_ATTR_STA_VLAN];
6118 if (!info->attrs[NL80211_ATTR_STA_WME])
6121 nla = info->attrs[NL80211_ATTR_STA_WME];
6148 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]) {
6150 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]);
6152 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_CHANNELS]);
6162 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]) {
6164 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]);
6166 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES]);
6176 if (info->attrs[NL80211_ATTR_PEER_AID])
6177 params->aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
6178 if (info->attrs[NL80211_ATTR_HT_CAPABILITY])
6180 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]);
6181 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY])
6183 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]);
6184 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) {
6186 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]);
6188 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]);
6204 if (info->attrs[NL80211_ATTR_STA_TX_POWER_SETTING]) {
6211 params->txpwr.type = nla_get_u8(info->attrs[idx]);
6216 if (info->attrs[idx])
6218 nla_get_s16(info->attrs[idx]);
6246 if (info->attrs[NL80211_ATTR_STA_AID])
6247 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
6249 if (info->attrs[NL80211_ATTR_VLAN_ID])
6250 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
6252 if (info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL])
6254 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
6258 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS])
6260 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]);
6264 if (!info->attrs[NL80211_ATTR_MAC])
6267 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
6269 if (info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]) {
6271 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]);
6273 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]);
6276 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) {
6278 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]);
6282 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) {
6284 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]);
6286 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]);
6292 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION])
6294 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]);
6296 if (info->attrs[NL80211_ATTR_STA_PLINK_STATE]) {
6298 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_STATE]);
6299 if (info->attrs[NL80211_ATTR_MESH_PEER_AID])
6301 info->attrs[NL80211_ATTR_MESH_PEER_AID]);
6305 if (info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE])
6307 info->attrs[NL80211_ATTR_LOCAL_MESH_POWER_MODE]);
6309 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) {
6312 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
6315 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY])
6317 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]);
6319 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT])
6321 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]);
6380 if (!info->attrs[NL80211_ATTR_MAC])
6383 if (!info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL])
6386 if (!info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES])
6389 if (!info->attrs[NL80211_ATTR_STA_AID] &&
6390 !info->attrs[NL80211_ATTR_PEER_AID])
6393 mac_addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
6395 nla_data(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]);
6397 nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]);
6399 nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]);
6401 if (info->attrs[NL80211_ATTR_VLAN_ID])
6402 params.vlan_id = nla_get_u16(info->attrs[NL80211_ATTR_VLAN_ID]);
6404 if (info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]) {
6406 nla_get_u8(info->attrs[NL80211_ATTR_STA_SUPPORT_P2P_PS]);
6416 if (info->attrs[NL80211_ATTR_PEER_AID])
6417 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_PEER_AID]);
6419 params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]);
6421 if (info->attrs[NL80211_ATTR_STA_CAPABILITY]) {
6423 nla_get_u16(info->attrs[NL80211_ATTR_STA_CAPABILITY]);
6427 if (info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]) {
6429 nla_data(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]);
6431 nla_len(info->attrs[NL80211_ATTR_STA_EXT_CAPABILITY]);
6434 if (info->attrs[NL80211_ATTR_HT_CAPABILITY])
6436 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]);
6438 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY])
6440 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]);
6442 if (info->attrs[NL80211_ATTR_HE_CAPABILITY]) {
6444 nla_data(info->attrs[NL80211_ATTR_HE_CAPABILITY]);
6446 nla_len(info->attrs[NL80211_ATTR_HE_CAPABILITY]);
6449 if (info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY])
6451 nla_data(info->attrs[NL80211_ATTR_HE_6GHZ_CAPABILITY]);
6453 if (info->attrs[NL80211_ATTR_OPMODE_NOTIF]) {
6456 nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
6459 if (info->attrs[NL80211_ATTR_STA_PLINK_ACTION])
6461 nla_get_u8(info->attrs[NL80211_ATTR_STA_PLINK_ACTION]);
6463 if (info->attrs[NL80211_ATTR_AIRTIME_WEIGHT])
6465 nla_get_u16(info->attrs[NL80211_ATTR_AIRTIME_WEIGHT]);
6519 info->attrs[NL80211_ATTR_PEER_AID])
6559 info->attrs[NL80211_ATTR_PEER_AID])
6608 if (info->attrs[NL80211_ATTR_MAC])
6609 params.mac = nla_data(info->attrs[NL80211_ATTR_MAC]);
6631 if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) {
6633 nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]);
6642 if (info->attrs[NL80211_ATTR_REASON_CODE]) {
6644 nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
6778 if (!info->attrs[NL80211_ATTR_MAC])
6781 dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
6813 if (!info->attrs[NL80211_ATTR_MAC])
6816 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP])
6819 dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
6820 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]);
6838 if (!info->attrs[NL80211_ATTR_MAC])
6841 if (!info->attrs[NL80211_ATTR_MPATH_NEXT_HOP])
6844 dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
6845 next_hop = nla_data(info->attrs[NL80211_ATTR_MPATH_NEXT_HOP]);
6862 if (info->attrs[NL80211_ATTR_MAC])
6863 dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
6886 if (!info->attrs[NL80211_ATTR_MAC])
6889 dst = nla_data(info->attrs[NL80211_ATTR_MAC]);
6983 if (info->attrs[NL80211_ATTR_BSS_CTS_PROT])
6985 nla_get_u8(info->attrs[NL80211_ATTR_BSS_CTS_PROT]);
6986 if (info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE])
6988 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_PREAMBLE]);
6989 if (info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME])
6991 nla_get_u8(info->attrs[NL80211_ATTR_BSS_SHORT_SLOT_TIME]);
6992 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) {
6994 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
6996 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
6998 if (info->attrs[NL80211_ATTR_AP_ISOLATE])
6999 params.ap_isolate = !!nla_get_u8(info->attrs[NL80211_ATTR_AP_ISOLATE]);
7000 if (info->attrs[NL80211_ATTR_BSS_HT_OPMODE])
7002 nla_get_u16(info->attrs[NL80211_ATTR_BSS_HT_OPMODE]);
7004 if (info->attrs[NL80211_ATTR_P2P_CTWINDOW]) {
7008 nla_get_u8(info->attrs[NL80211_ATTR_P2P_CTWINDOW]);
7014 if (info->attrs[NL80211_ATTR_P2P_OPPPS]) {
7019 tmp = nla_get_u8(info->attrs[NL80211_ATTR_P2P_OPPPS]);
7056 if (info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE])
7058 nla_get_u32(info->attrs[NL80211_ATTR_USER_REG_HINT_TYPE]);
7065 if (!info->attrs[NL80211_ATTR_REG_ALPHA2])
7068 data = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]);
7071 if (info->attrs[NL80211_ATTR_SOCKET_OWNER]) {
7073 is_indoor = !!info->attrs[NL80211_ATTR_REG_INDOOR];
7284 if (!info->attrs[NL80211_ATTR_MESH_CONFIG])
7286 if (nla_parse_nested_deprecated(tb, NL80211_MESHCONF_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_CONFIG], nl80211_meshconf_params_policy, info->extack))
7422 if (!info->attrs[NL80211_ATTR_MESH_SETUP])
7424 if (nla_parse_nested_deprecated(tb, NL80211_MESH_SETUP_ATTR_MAX, info->attrs[NL80211_ATTR_MESH_SETUP], nl80211_mesh_setup_params_policy, info->extack))
7580 if (info->attrs[NL80211_ATTR_WIPHY]) {
7770 if (!info->attrs[NL80211_ATTR_REG_ALPHA2])
7773 if (!info->attrs[NL80211_ATTR_REG_RULES])
7776 alpha2 = nla_data(info->attrs[NL80211_ATTR_REG_ALPHA2]);
7778 if (info->attrs[NL80211_ATTR_DFS_REGION])
7779 dfs_region = nla_get_u8(info->attrs[NL80211_ATTR_DFS_REGION]);
7781 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES],
7806 nla_for_each_nested(nl_reg_rule, info->attrs[NL80211_ATTR_REG_RULES],
7930 int nl80211_parse_random_mac(struct nlattr **attrs,
7935 if (!attrs[NL80211_ATTR_MAC] && !attrs[NL80211_ATTR_MAC_MASK]) {
7945 if (!attrs[NL80211_ATTR_MAC] || !attrs[NL80211_ATTR_MAC_MASK])
7948 memcpy(mac_addr, nla_data(attrs[NL80211_ATTR_MAC]), ETH_ALEN);
7949 memcpy(mac_addr_mask, nla_data(attrs[NL80211_ATTR_MAC_MASK]), ETH_ALEN);
7992 void *request, struct nlattr **attrs,
7999 if (!attrs[NL80211_ATTR_SCAN_FLAGS])
8020 *flags = nla_get_u32(attrs[NL80211_ATTR_SCAN_FLAGS]);
8060 err = nl80211_parse_random_mac(attrs, mac_addr, mac_addr_mask);
8091 if (info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ]) {
8095 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQ_KHZ];
8097 } else if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES])
8098 scan_freqs = info->attrs[NL80211_ATTR_SCAN_FREQUENCIES];
8108 if (info->attrs[NL80211_ATTR_SCAN_SSIDS])
8109 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp)
8115 if (info->attrs[NL80211_ATTR_IE])
8116 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
8214 nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) {
8225 if (info->attrs[NL80211_ATTR_IE]) {
8226 request->ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
8228 nla_data(info->attrs[NL80211_ATTR_IE]),
8237 if (info->attrs[NL80211_ATTR_SCAN_SUPP_RATES]) {
8239 info->attrs[NL80211_ATTR_SCAN_SUPP_RATES],
8260 if (info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]) {
8268 nla_get_u16(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION]);
8270 nla_get_flag(info->attrs[NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY]);
8273 err = nl80211_check_scan_flags(wiphy, wdev, request, info->attrs,
8279 nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);
8290 if (info->attrs[NL80211_ATTR_BSSID])
8292 nla_data(info->attrs[NL80211_ATTR_BSSID]), ETH_ALEN);
8294 info->attrs[NL80211_ATTR_MAC])
8295 memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]),
8344 struct nlattr **attrs)
8349 if (!attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) {
8358 interval = nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL]);
8375 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp) {
8463 struct nlattr **attrs, int max_match_sets)
8473 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) {
8475 attrs[NL80211_ATTR_SCAN_FREQUENCIES]);
8482 if (attrs[NL80211_ATTR_SCAN_SSIDS])
8483 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS],
8499 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) {
8501 attrs[NL80211_ATTR_SCHED_SCAN_MATCH],
8537 if (attrs[NL80211_ATTR_IE])
8538 ie_len = nla_len(attrs[NL80211_ATTR_IE]);
8545 if (attrs[NL80211_ATTR_SCHED_SCAN_PLANS]) {
8550 if (attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL])
8554 attrs[NL80211_ATTR_SCHED_SCAN_PLANS], tmp)
8563 if (!attrs[NL80211_ATTR_SCHED_SCAN_INTERVAL])
8574 (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI] ||
8575 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]))
8622 if (attrs[NL80211_ATTR_SCAN_FREQUENCIES]) {
8625 attrs[NL80211_ATTR_SCAN_FREQUENCIES],
8673 nla_for_each_nested(attr, attrs[NL80211_ATTR_SCAN_SSIDS],
8687 if (attrs[NL80211_ATTR_SCHED_SCAN_MATCH]) {
8689 attrs[NL80211_ATTR_SCHED_SCAN_MATCH],
8761 nla_data(attrs[NL80211_ATTR_IE]),
8765 err = nl80211_check_scan_flags(wiphy, wdev, request, attrs, true);
8769 if (attrs[NL80211_ATTR_SCHED_SCAN_DELAY])
8771 nla_get_u32(attrs[NL80211_ATTR_SCHED_SCAN_DELAY]);
8773 if (attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]) {
8775 attrs[NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI]);
8780 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]) {
8784 attrs[NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST]);
8793 err = nl80211_parse_sched_scan_plans(wiphy, n_plans, request, attrs);
8819 want_multi = info->attrs[NL80211_ATTR_SCHED_SCAN_MULTI];
8825 info->attrs,
8845 if (info->attrs[NL80211_ATTR_SOCKET_OWNER])
8869 if (info->attrs[NL80211_ATTR_COOKIE]) {
8870 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
9046 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] ||
9047 !info->attrs[NL80211_ATTR_CH_SWITCH_COUNT])
9051 if (need_new_beacon && !info->attrs[NL80211_ATTR_CSA_IES])
9057 cs_count = nla_get_u32(info->attrs[NL80211_ATTR_CH_SWITCH_COUNT]);
9066 err = nl80211_parse_beacon(rdev, info->attrs, ¶ms.beacon_after);
9071 info->attrs[NL80211_ATTR_CSA_IES],
9152 !nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS])) {
9157 if (info->attrs[NL80211_ATTR_CH_SWITCH_BLOCK_TX])
9516 if (!info->attrs[NL80211_ATTR_MAC])
9519 if (!info->attrs[NL80211_ATTR_AUTH_TYPE])
9522 if (!info->attrs[NL80211_ATTR_SSID])
9525 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ])
9570 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
9571 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]));
9572 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET])
9574 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]);
9580 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
9581 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
9583 if (info->attrs[NL80211_ATTR_IE]) {
9584 ie = nla_data(info->attrs[NL80211_ATTR_IE]);
9585 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
9588 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]);
9596 !info->attrs[NL80211_ATTR_AUTH_DATA])
9599 if (info->attrs[NL80211_ATTR_AUTH_DATA]) {
9605 auth_data = nla_data(info->attrs[NL80211_ATTR_AUTH_DATA]);
9606 auth_data_len = nla_len(info->attrs[NL80211_ATTR_AUTH_DATA]);
9609 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE];
9630 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) {
9650 settings->control_port = info->attrs[NL80211_ATTR_CONTROL_PORT];
9652 if (info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) {
9656 info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]);
9661 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT])
9666 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) {
9674 if (info->attrs[NL80211_ATTR_CONTROL_PORT_NO_PREAUTH])
9678 if (info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]) {
9682 data = nla_data(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]);
9683 len = nla_len(info->attrs[NL80211_ATTR_CIPHER_SUITES_PAIRWISE]);
9701 if (info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]) {
9703 nla_get_u32(info->attrs[NL80211_ATTR_CIPHER_SUITE_GROUP]);
9709 if (info->attrs[NL80211_ATTR_WPA_VERSIONS]) {
9711 nla_get_u32(info->attrs[NL80211_ATTR_WPA_VERSIONS]);
9716 if (info->attrs[NL80211_ATTR_AKM_SUITES]) {
9720 data = nla_data(info->attrs[NL80211_ATTR_AKM_SUITES]);
9721 len = nla_len(info->attrs[NL80211_ATTR_AKM_SUITES]);
9733 if (info->attrs[NL80211_ATTR_PMK]) {
9734 if (nla_len(info->attrs[NL80211_ATTR_PMK]) != WLAN_PMK_LEN)
9741 settings->psk = nla_data(info->attrs[NL80211_ATTR_PMK]);
9744 if (info->attrs[NL80211_ATTR_SAE_PASSWORD]) {
9751 nla_data(info->attrs[NL80211_ATTR_SAE_PASSWORD]);
9753 nla_len(info->attrs[NL80211_ATTR_SAE_PASSWORD]);
9773 if (!info->attrs[NL80211_ATTR_MAC] ||
9774 !info->attrs[NL80211_ATTR_SSID] ||
9775 !info->attrs[NL80211_ATTR_WIPHY_FREQ])
9785 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
9787 freq = MHZ_TO_KHZ(nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]));
9788 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET])
9790 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]);
9795 ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
9796 ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
9798 if (info->attrs[NL80211_ATTR_IE]) {
9799 req.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
9800 req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
9803 if (info->attrs[NL80211_ATTR_USE_MFP]) {
9805 nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]);
9812 if (info->attrs[NL80211_ATTR_PREV_BSSID])
9813 req.prev_bssid = nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]);
9815 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT]))
9818 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK])
9820 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]),
9823 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) {
9824 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK])
9827 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]),
9831 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT]))
9834 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK])
9836 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]),
9839 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) {
9840 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK])
9843 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]),
9847 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) {
9857 if (info->attrs[NL80211_ATTR_FILS_KEK]) {
9858 req.fils_kek = nla_data(info->attrs[NL80211_ATTR_FILS_KEK]);
9859 req.fils_kek_len = nla_len(info->attrs[NL80211_ATTR_FILS_KEK]);
9860 if (!info->attrs[NL80211_ATTR_FILS_NONCES])
9863 nla_data(info->attrs[NL80211_ATTR_FILS_NONCES]);
9866 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]) {
9867 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY])
9870 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK]),
9874 if (info->attrs[NL80211_ATTR_S1G_CAPABILITY]) {
9875 if (!info->attrs[NL80211_ATTR_S1G_CAPABILITY_MASK])
9878 nla_data(info->attrs[NL80211_ATTR_S1G_CAPABILITY]),
9889 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) {
9915 if (!info->attrs[NL80211_ATTR_MAC])
9918 if (!info->attrs[NL80211_ATTR_REASON_CODE])
9928 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
9930 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
9936 if (info->attrs[NL80211_ATTR_IE]) {
9937 ie = nla_data(info->attrs[NL80211_ATTR_IE]);
9938 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
9941 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE];
9963 if (!info->attrs[NL80211_ATTR_MAC])
9966 if (!info->attrs[NL80211_ATTR_REASON_CODE])
9976 bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
9978 reason_code = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
9984 if (info->attrs[NL80211_ATTR_IE]) {
9985 ie = nla_data(info->attrs[NL80211_ATTR_IE]);
9986 ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
9989 local_state_change = !!info->attrs[NL80211_ATTR_LOCAL_STATE_CHANGE];
10037 if (!info->attrs[NL80211_ATTR_SSID] ||
10038 !nla_len(info->attrs[NL80211_ATTR_SSID]))
10043 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL])
10045 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]);
10060 if (info->attrs[NL80211_ATTR_MAC]) {
10061 ibss.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
10066 ibss.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
10067 ibss.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
10069 if (info->attrs[NL80211_ATTR_IE]) {
10070 ibss.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
10071 ibss.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
10105 ibss.channel_fixed = !!info->attrs[NL80211_ATTR_FREQ_FIXED];
10106 ibss.privacy = !!info->attrs[NL80211_ATTR_PRIVACY];
10108 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) {
10110 nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
10112 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
10122 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK])
10124 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]),
10127 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) {
10128 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK])
10131 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]),
10135 if (info->attrs[NL80211_ATTR_MCAST_RATE] &&
10137 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE])))
10140 if (ibss.privacy && info->attrs[NL80211_ATTR_KEYS]) {
10155 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT]);
10157 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) {
10169 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]);
10175 else if (info->attrs[NL80211_ATTR_SOCKET_OWNER])
10214 if (!info->attrs[NL80211_ATTR_MCAST_RATE])
10217 nla_rate = nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE]);
10350 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs);
10365 if (!info->attrs[NL80211_ATTR_TESTDATA])
10370 nla_data(info->attrs[NL80211_ATTR_TESTDATA]),
10371 nla_len(info->attrs[NL80211_ATTR_TESTDATA]));
10492 if (!info->attrs[NL80211_ATTR_SSID] ||
10493 !nla_len(info->attrs[NL80211_ATTR_SSID]))
10496 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) {
10498 nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]);
10505 connect.privacy = info->attrs[NL80211_ATTR_PRIVACY];
10507 if (info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS] &&
10511 connect.want_1x = info->attrs[NL80211_ATTR_WANT_1X_4WAY_HS];
10525 if (info->attrs[NL80211_ATTR_BG_SCAN_PERIOD] &&
10528 nla_get_u16(info->attrs[NL80211_ATTR_BG_SCAN_PERIOD]);
10531 if (info->attrs[NL80211_ATTR_MAC])
10532 connect.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
10533 else if (info->attrs[NL80211_ATTR_MAC_HINT])
10535 nla_data(info->attrs[NL80211_ATTR_MAC_HINT]);
10536 connect.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
10537 connect.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
10539 if (info->attrs[NL80211_ATTR_IE]) {
10540 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
10541 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
10544 if (info->attrs[NL80211_ATTR_USE_MFP]) {
10545 connect.mfp = nla_get_u32(info->attrs[NL80211_ATTR_USE_MFP]);
10554 if (info->attrs[NL80211_ATTR_PREV_BSSID])
10556 nla_data(info->attrs[NL80211_ATTR_PREV_BSSID]);
10558 if (info->attrs[NL80211_ATTR_WIPHY_FREQ])
10560 info->attrs[NL80211_ATTR_WIPHY_FREQ]));
10561 if (info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET])
10563 nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_OFFSET]);
10569 } else if (info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]) {
10570 freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ_HINT]);
10577 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]) {
10579 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_CHANNELS]);
10581 if (info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG])
10583 nla_get_u8(info->attrs[NL80211_ATTR_WIPHY_EDMG_BW_CONFIG]);
10586 if (connect.privacy && info->attrs[NL80211_ATTR_KEYS]) {
10592 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_HT]))
10595 if (info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK])
10597 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]),
10600 if (info->attrs[NL80211_ATTR_HT_CAPABILITY]) {
10601 if (!info->attrs[NL80211_ATTR_HT_CAPABILITY_MASK]) {
10606 nla_data(info->attrs[NL80211_ATTR_HT_CAPABILITY]),
10610 if (nla_get_flag(info->attrs[NL80211_ATTR_DISABLE_VHT]))
10613 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK])
10615 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]),
10618 if (info->attrs[NL80211_ATTR_VHT_CAPABILITY]) {
10619 if (!info->attrs[NL80211_ATTR_VHT_CAPABILITY_MASK]) {
10624 nla_data(info->attrs[NL80211_ATTR_VHT_CAPABILITY]),
10628 if (nla_get_flag(info->attrs[NL80211_ATTR_USE_RRM])) {
10640 connect.pbss = nla_get_flag(info->attrs[NL80211_ATTR_PBSS]);
10646 if (info->attrs[NL80211_ATTR_BSS_SELECT]) {
10653 err = parse_bss_select(info->attrs[NL80211_ATTR_BSS_SELECT],
10663 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] &&
10664 info->attrs[NL80211_ATTR_FILS_ERP_REALM] &&
10665 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] &&
10666 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) {
10668 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]);
10670 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]);
10672 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]);
10674 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]);
10677 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]);
10679 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]);
10681 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]);
10682 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] ||
10683 info->attrs[NL80211_ATTR_FILS_ERP_REALM] ||
10684 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] ||
10685 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) {
10690 if (nla_get_flag(info->attrs[NL80211_ATTR_EXTERNAL_AUTH_SUPPORT])) {
10691 if (!info->attrs[NL80211_ATTR_SOCKET_OWNER]) {
10707 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER]) {
10736 if (info->attrs[NL80211_ATTR_IE]) {
10737 connect.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
10738 connect.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
10751 info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] &&
10752 info->attrs[NL80211_ATTR_FILS_ERP_REALM] &&
10753 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] &&
10754 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) {
10756 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]);
10758 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_USERNAME]);
10760 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_REALM]);
10762 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_REALM]);
10765 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM]);
10767 nla_data(info->attrs[NL80211_ATTR_FILS_ERP_RRK]);
10769 nla_len(info->attrs[NL80211_ATTR_FILS_ERP_RRK]);
10771 } else if (info->attrs[NL80211_ATTR_FILS_ERP_USERNAME] ||
10772 info->attrs[NL80211_ATTR_FILS_ERP_REALM] ||
10773 info->attrs[NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM] ||
10774 info->attrs[NL80211_ATTR_FILS_ERP_RRK]) {
10778 if (info->attrs[NL80211_ATTR_AUTH_TYPE]) {
10779 auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]);
10813 if (!info->attrs[NL80211_ATTR_REASON_CODE])
10816 reason = nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
10837 if (info->attrs[NL80211_ATTR_PID]) {
10838 u32 pid = nla_get_u32(info->attrs[NL80211_ATTR_PID]);
10841 } else if (info->attrs[NL80211_ATTR_NETNS_FD]) {
10842 u32 fd = nla_get_u32(info->attrs[NL80211_ATTR_NETNS_FD]);
10872 if (!info->attrs[NL80211_ATTR_PMKID])
10875 pmksa.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
10877 if (info->attrs[NL80211_ATTR_MAC]) {
10878 pmksa.bssid = nla_data(info->attrs[NL80211_ATTR_MAC]);
10879 } else if (info->attrs[NL80211_ATTR_SSID] &&
10880 info->attrs[NL80211_ATTR_FILS_CACHE_ID] &&
10882 info->attrs[NL80211_ATTR_PMK])) {
10883 pmksa.ssid = nla_data(info->attrs[NL80211_ATTR_SSID]);
10884 pmksa.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
10886 nla_data(info->attrs[NL80211_ATTR_FILS_CACHE_ID]);
10890 if (info->attrs[NL80211_ATTR_PMK]) {
10891 pmksa.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]);
10892 pmksa.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]);
10895 if (info->attrs[NL80211_ATTR_PMK_LIFETIME])
10897 nla_get_u32(info->attrs[NL80211_ATTR_PMK_LIFETIME]);
10899 if (info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD])
10902 info->attrs[NL80211_ATTR_PMK_REAUTH_THRESHOLD]);
10958 if (!info->attrs[NL80211_ATTR_TDLS_ACTION] ||
10959 !info->attrs[NL80211_ATTR_STATUS_CODE] ||
10960 !info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN] ||
10961 !info->attrs[NL80211_ATTR_IE] ||
10962 !info->attrs[NL80211_ATTR_MAC])
10965 peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
10966 action_code = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_ACTION]);
10967 status_code = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]);
10968 dialog_token = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_DIALOG_TOKEN]);
10969 initiator = nla_get_flag(info->attrs[NL80211_ATTR_TDLS_INITIATOR]);
10970 if (info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY])
10972 nla_get_u32(info->attrs[NL80211_ATTR_TDLS_PEER_CAPABILITY]);
10977 nla_data(info->attrs[NL80211_ATTR_IE]),
10978 nla_len(info->attrs[NL80211_ATTR_IE]));
10992 if (!info->attrs[NL80211_ATTR_TDLS_OPERATION] ||
10993 !info->attrs[NL80211_ATTR_MAC])
10996 operation = nla_get_u8(info->attrs[NL80211_ATTR_TDLS_OPERATION]);
10997 peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
11015 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ] ||
11016 !info->attrs[NL80211_ATTR_DURATION])
11019 duration = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]);
11088 if (!info->attrs[NL80211_ATTR_COOKIE])
11094 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
11112 err = nl80211_parse_tx_bitrate_mask(info, info->attrs,
11130 if (!info->attrs[NL80211_ATTR_FRAME_MATCH])
11133 if (info->attrs[NL80211_ATTR_FRAME_TYPE])
11134 frame_type = nla_get_u16(info->attrs[NL80211_ATTR_FRAME_TYPE]);
11155 if (info->attrs[NL80211_ATTR_RECEIVE_MULTICAST] &&
11164 nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]),
11165 nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]),
11166 info->attrs[NL80211_ATTR_RECEIVE_MULTICAST],
11181 info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK],
11184 if (!info->attrs[NL80211_ATTR_FRAME])
11192 if (!info->attrs[NL80211_ATTR_WIPHY_FREQ])
11207 if (info->attrs[NL80211_ATTR_DURATION]) {
11210 params.wait = nla_get_u32(info->attrs[NL80211_ATTR_DURATION]);
11221 params.offchan = info->attrs[NL80211_ATTR_OFFCHANNEL_TX_OK];
11226 params.no_cck = nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);
11232 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
11248 params.buf = nla_data(info->attrs[NL80211_ATTR_FRAME]);
11249 params.len = nla_len(info->attrs[NL80211_ATTR_FRAME]);
11251 if (info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]) {
11252 int len = nla_len(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]);
11260 nla_data(info->attrs[NL80211_ATTR_CSA_C_OFFSETS_TX]);
11311 if (!info->attrs[NL80211_ATTR_COOKIE])
11331 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
11345 if (!info->attrs[NL80211_ATTR_PS_STATE])
11348 ps_state = nla_get_u32(info->attrs[NL80211_ATTR_PS_STATE]);
11574 struct nlattr *attrs[NL80211_ATTR_CQM_MAX + 1];
11578 cqm = info->attrs[NL80211_ATTR_CQM];
11582 err = nla_parse_nested_deprecated(attrs, NL80211_ATTR_CQM_MAX, cqm,
11588 if (attrs[NL80211_ATTR_CQM_RSSI_THOLD] &&
11589 attrs[NL80211_ATTR_CQM_RSSI_HYST]) {
11591 nla_data(attrs[NL80211_ATTR_CQM_RSSI_THOLD]);
11592 int len = nla_len(attrs[NL80211_ATTR_CQM_RSSI_THOLD]);
11593 u32 hysteresis = nla_get_u32(attrs[NL80211_ATTR_CQM_RSSI_HYST]);
11602 if (attrs[NL80211_ATTR_CQM_TXE_RATE] &&
11603 attrs[NL80211_ATTR_CQM_TXE_PKTS] &&
11604 attrs[NL80211_ATTR_CQM_TXE_INTVL]) {
11605 u32 rate = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_RATE]);
11606 u32 pkts = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_PKTS]);
11607 u32 intvl = nla_get_u32(attrs[NL80211_ATTR_CQM_TXE_INTVL]);
11649 if (info->attrs[NL80211_ATTR_MESH_CONFIG]) {
11656 if (!info->attrs[NL80211_ATTR_MESH_ID] ||
11657 !nla_len(info->attrs[NL80211_ATTR_MESH_ID]))
11660 setup.mesh_id = nla_data(info->attrs[NL80211_ATTR_MESH_ID]);
11661 setup.mesh_id_len = nla_len(info->attrs[NL80211_ATTR_MESH_ID]);
11663 if (info->attrs[NL80211_ATTR_MCAST_RATE] &&
11665 nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE])))
11668 if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) {
11670 nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]);
11679 if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) {
11681 nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
11686 if (info->attrs[NL80211_ATTR_MESH_SETUP]) {
11696 if (info->attrs[NL80211_ATTR_WIPHY_FREQ]) {
11705 if (info->attrs[NL80211_ATTR_BSS_BASIC_RATES]) {
11706 u8 *rates = nla_data(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
11708 nla_len(info->attrs[NL80211_ATTR_BSS_BASIC_RATES]);
11722 if (info->attrs[NL80211_ATTR_TX_RATES]) {
11723 err = nl80211_parse_tx_bitrate_mask(info, info->attrs,
11740 nla_get_flag(info->attrs[NL80211_ATTR_HANDLE_DFS]);
11742 if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) {
11753 if (!err && info->attrs[NL80211_ATTR_SOCKET_OWNER])
12201 if (!info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS]) {
12208 info->attrs[NL80211_ATTR_WOWLAN_TRIGGERS],
12602 if (!info->attrs[NL80211_ATTR_COALESCE_RULE]) {
12608 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
12622 nla_for_each_nested(rule, info->attrs[NL80211_ATTR_COALESCE_RULE],
12668 if (!info->attrs[NL80211_ATTR_REKEY_DATA])
12672 info->attrs[NL80211_ATTR_REKEY_DATA],
12747 if (!info->attrs[NL80211_ATTR_MAC])
12764 addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
12879 if (!info->attrs[NL80211_ATTR_NAN_MASTER_PREF])
12883 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]);
12885 if (info->attrs[NL80211_ATTR_BANDS]) {
12886 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]);
13000 if (!info->attrs[NL80211_ATTR_NAN_FUNC])
13004 info->attrs[NL80211_ATTR_NAN_FUNC],
13234 if (!info->attrs[NL80211_ATTR_COOKIE])
13237 cookie = nla_get_u64(info->attrs[NL80211_ATTR_COOKIE]);
13258 if (info->attrs[NL80211_ATTR_NAN_MASTER_PREF]) {
13260 nla_get_u8(info->attrs[NL80211_ATTR_NAN_MASTER_PREF]);
13267 if (info->attrs[NL80211_ATTR_BANDS]) {
13268 u32 bands = nla_get_u32(info->attrs[NL80211_ATTR_BANDS]);
13462 if (!info->attrs[NL80211_ATTR_MDID] ||
13463 !info->attrs[NL80211_ATTR_IE])
13467 ft_params.md = nla_get_u16(info->attrs[NL80211_ATTR_MDID]);
13468 ft_params.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
13469 ft_params.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
13493 if (info->attrs[NL80211_ATTR_CRIT_PROT_ID])
13494 proto = nla_get_u16(info->attrs[NL80211_ATTR_CRIT_PROT_ID]);
13500 if (!info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION])
13504 nla_get_u16(info->attrs[NL80211_ATTR_MAX_CRIT_PROT_DURATION]);
13555 __cfg80211_wdev_from_attrs(genl_info_net(info), info->attrs);
13571 if (!info->attrs[NL80211_ATTR_VENDOR_ID] ||
13572 !info->attrs[NL80211_ATTR_VENDOR_SUBCMD])
13575 vid = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_ID]);
13576 subcmd = nla_get_u32(info->attrs[NL80211_ATTR_VENDOR_SUBCMD]);
13606 if (info->attrs[NL80211_ATTR_VENDOR_DATA]) {
13607 data = nla_data(info->attrs[NL80211_ATTR_VENDOR_DATA]);
13608 len = nla_len(info->attrs[NL80211_ATTR_VENDOR_DATA]);
13611 info->attrs[NL80211_ATTR_VENDOR_DATA],
13886 if (info->attrs[NL80211_ATTR_QOS_MAP]) {
13887 pos = nla_data(info->attrs[NL80211_ATTR_QOS_MAP]);
13888 len = nla_len(info->attrs[NL80211_ATTR_QOS_MAP]);
13937 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC] ||
13938 !info->attrs[NL80211_ATTR_USER_PRIO])
13941 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]);
13942 up = nla_get_u8(info->attrs[NL80211_ATTR_USER_PRIO]);
13953 peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
13955 if (info->attrs[NL80211_ATTR_ADMITTED_TIME]) {
13957 nla_get_u16(info->attrs[NL80211_ATTR_ADMITTED_TIME]);
13991 if (!info->attrs[NL80211_ATTR_TSID] || !info->attrs[NL80211_ATTR_MAC])
13994 tsid = nla_get_u8(info->attrs[NL80211_ATTR_TSID]);
13995 peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
14027 if (!info->attrs[NL80211_ATTR_MAC] ||
14028 !info->attrs[NL80211_ATTR_OPER_CLASS])
14054 addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
14055 oper_class = nla_get_u8(info->attrs[NL80211_ATTR_OPER_CLASS]);
14085 if (!info->attrs[NL80211_ATTR_MAC])
14088 addr = nla_data(info->attrs[NL80211_ATTR_MAC]);
14113 nla = info->attrs[NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED];
14135 if (!info->attrs[NL80211_ATTR_MAC] || !info->attrs[NL80211_ATTR_PMK])
14144 pmk_conf.aa = nla_data(info->attrs[NL80211_ATTR_MAC]);
14150 pmk_conf.pmk = nla_data(info->attrs[NL80211_ATTR_PMK]);
14151 pmk_conf.pmk_len = nla_len(info->attrs[NL80211_ATTR_PMK]);
14158 if (info->attrs[NL80211_ATTR_PMKR0_NAME])
14160 nla_data(info->attrs[NL80211_ATTR_PMKR0_NAME]);
14184 if (!info->attrs[NL80211_ATTR_MAC])
14188 aa = nla_data(info->attrs[NL80211_ATTR_MAC]);
14204 if (!info->attrs[NL80211_ATTR_SSID] &&
14209 if (!info->attrs[NL80211_ATTR_BSSID])
14212 if (!info->attrs[NL80211_ATTR_STATUS_CODE])
14217 if (info->attrs[NL80211_ATTR_SSID]) {
14218 params.ssid.ssid_len = nla_len(info->attrs[NL80211_ATTR_SSID]);
14222 nla_data(info->attrs[NL80211_ATTR_SSID]),
14226 memcpy(params.bssid, nla_data(info->attrs[NL80211_ATTR_BSSID]),
14229 params.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]);
14231 if (info->attrs[NL80211_ATTR_PMKID])
14232 params.pmkid = nla_data(info->attrs[NL80211_ATTR_PMKID]);
14239 bool dont_wait_for_ack = info->attrs[NL80211_ATTR_DONT_WAIT_FOR_ACK];
14258 if (!info->attrs[NL80211_ATTR_FRAME] ||
14259 !info->attrs[NL80211_ATTR_MAC] ||
14260 !info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]) {
14286 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]);
14287 len = nla_len(info->attrs[NL80211_ATTR_FRAME]);
14288 dest = nla_data(info->attrs[NL80211_ATTR_MAC]);
14289 proto = nla_get_u16(info->attrs[NL80211_ATTR_CONTROL_PORT_ETHERTYPE]);
14291 nla_get_flag(info->attrs[NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT]);
14384 if (!info->attrs[NL80211_ATTR_STATUS_CODE] ||
14385 !info->attrs[NL80211_ATTR_MAC])
14389 owe_info.status = nla_get_u16(info->attrs[NL80211_ATTR_STATUS_CODE]);
14390 nla_memcpy(owe_info.peer, info->attrs[NL80211_ATTR_MAC], ETH_ALEN);
14392 if (info->attrs[NL80211_ATTR_IE]) {
14393 owe_info.ie = nla_data(info->attrs[NL80211_ATTR_IE]);
14394 owe_info.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
14414 if (!info->attrs[NL80211_ATTR_MAC] ||
14415 !info->attrs[NL80211_ATTR_FRAME]) {
14423 dest = nla_data(info->attrs[NL80211_ATTR_MAC]);
14424 buf = nla_data(info->attrs[NL80211_ATTR_FRAME]);
14425 len = nla_len(info->attrs[NL80211_ATTR_FRAME]);
14444 struct nlattr *attrs[], struct net_device *dev,
14452 if (!attrs[NL80211_TID_CONFIG_ATTR_TIDS])
14456 nla_get_flag(attrs[NL80211_TID_CONFIG_ATTR_OVERRIDE]);
14457 tid_conf->tids = nla_get_u16(attrs[NL80211_TID_CONFIG_ATTR_TIDS]);
14470 if (attrs[NL80211_TID_CONFIG_ATTR_NOACK]) {
14473 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_NOACK]);
14476 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]) {
14479 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_SHORT]);
14485 if (attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]) {
14488 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RETRY_LONG]);
14494 if (attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]) {
14497 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMPDU_CTRL]);
14500 if (attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]) {
14503 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL]);
14506 if (attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]) {
14509 nla_get_u8(attrs[NL80211_TID_CONFIG_ATTR_AMSDU_CTRL]);
14512 if (attrs[NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE]) {
14515 tid_conf->txrate_type = nla_get_u8(attrs[idx]);
14519 err = nl80211_parse_tx_bitrate_mask(info, attrs, attr,
14546 struct nlattr *attrs[NL80211_TID_CONFIG_ATTR_MAX + 1];
14554 if (!info->attrs[NL80211_ATTR_TID_CONFIG])
14560 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG],
14571 if (info->attrs[NL80211_ATTR_MAC])
14572 tid_config->peer = nla_data(info->attrs[NL80211_ATTR_MAC]);
14574 nla_for_each_nested(tid, info->attrs[NL80211_ATTR_TID_CONFIG],
14576 ret = nla_parse_nested(attrs, NL80211_TID_CONFIG_ATTR_MAX,
14582 ret = parse_tid_conf(rdev, attrs, dev,
14634 info->attrs);