• Home
  • Raw
  • Download

Lines Matching refs:msg

575 static int nl80211_msg_put_channel(struct sk_buff *msg,  in nl80211_msg_put_channel()  argument
586 if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_FREQ, in nl80211_msg_put_channel()
591 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_DISABLED)) in nl80211_msg_put_channel()
594 if (nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_IR)) in nl80211_msg_put_channel()
596 if (nla_put_flag(msg, __NL80211_FREQUENCY_ATTR_NO_IBSS)) in nl80211_msg_put_channel()
600 if (nla_put_flag(msg, NL80211_FREQUENCY_ATTR_RADAR)) in nl80211_msg_put_channel()
607 if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_DFS_STATE, in nl80211_msg_put_channel()
610 if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_DFS_TIME, in nl80211_msg_put_channel()
613 if (nla_put_u32(msg, in nl80211_msg_put_channel()
622 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HT40_MINUS)) in nl80211_msg_put_channel()
625 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_HT40_PLUS)) in nl80211_msg_put_channel()
628 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_80MHZ)) in nl80211_msg_put_channel()
631 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_160MHZ)) in nl80211_msg_put_channel()
634 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_INDOOR_ONLY)) in nl80211_msg_put_channel()
637 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_GO_CONCURRENT)) in nl80211_msg_put_channel()
640 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_20MHZ)) in nl80211_msg_put_channel()
643 nla_put_flag(msg, NL80211_FREQUENCY_ATTR_NO_10MHZ)) in nl80211_msg_put_channel()
647 if (nla_put_u32(msg, NL80211_FREQUENCY_ATTR_MAX_TX_POWER, in nl80211_msg_put_channel()
907 static int nl80211_put_iftypes(struct sk_buff *msg, u32 attr, u16 ifmodes) in nl80211_put_iftypes() argument
909 struct nlattr *nl_modes = nla_nest_start(msg, attr); in nl80211_put_iftypes()
917 if ((ifmodes & 1) && nla_put_flag(msg, i)) in nl80211_put_iftypes()
923 nla_nest_end(msg, nl_modes); in nl80211_put_iftypes()
931 struct sk_buff *msg, in nl80211_put_iface_combinations() argument
937 nl_combis = nla_nest_start(msg, in nl80211_put_iface_combinations()
948 nl_combi = nla_nest_start(msg, i + 1); in nl80211_put_iface_combinations()
952 nl_limits = nla_nest_start(msg, NL80211_IFACE_COMB_LIMITS); in nl80211_put_iface_combinations()
959 nl_limit = nla_nest_start(msg, j + 1); in nl80211_put_iface_combinations()
962 if (nla_put_u32(msg, NL80211_IFACE_LIMIT_MAX, in nl80211_put_iface_combinations()
965 if (nl80211_put_iftypes(msg, NL80211_IFACE_LIMIT_TYPES, in nl80211_put_iface_combinations()
968 nla_nest_end(msg, nl_limit); in nl80211_put_iface_combinations()
971 nla_nest_end(msg, nl_limits); in nl80211_put_iface_combinations()
974 nla_put_flag(msg, NL80211_IFACE_COMB_STA_AP_BI_MATCH)) in nl80211_put_iface_combinations()
976 if (nla_put_u32(msg, NL80211_IFACE_COMB_NUM_CHANNELS, in nl80211_put_iface_combinations()
978 nla_put_u32(msg, NL80211_IFACE_COMB_MAXNUM, in nl80211_put_iface_combinations()
982 (nla_put_u32(msg, NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS, in nl80211_put_iface_combinations()
984 nla_put_u32(msg, NL80211_IFACE_COMB_RADAR_DETECT_REGIONS, in nl80211_put_iface_combinations()
988 nla_nest_end(msg, nl_combi); in nl80211_put_iface_combinations()
991 nla_nest_end(msg, nl_combis); in nl80211_put_iface_combinations()
1000 struct sk_buff *msg) in nl80211_send_wowlan_tcp_caps() argument
1008 nl_tcp = nla_nest_start(msg, NL80211_WOWLAN_TRIG_TCP_CONNECTION); in nl80211_send_wowlan_tcp_caps()
1012 if (nla_put_u32(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD, in nl80211_send_wowlan_tcp_caps()
1016 if (nla_put_u32(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD, in nl80211_send_wowlan_tcp_caps()
1020 if (tcp->seq && nla_put_flag(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ)) in nl80211_send_wowlan_tcp_caps()
1023 if (tcp->tok && nla_put(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN, in nl80211_send_wowlan_tcp_caps()
1027 if (nla_put_u32(msg, NL80211_WOWLAN_TCP_DATA_INTERVAL, in nl80211_send_wowlan_tcp_caps()
1031 if (nla_put_u32(msg, NL80211_WOWLAN_TCP_WAKE_PAYLOAD, in nl80211_send_wowlan_tcp_caps()
1035 nla_nest_end(msg, nl_tcp); in nl80211_send_wowlan_tcp_caps()
1039 static int nl80211_send_wowlan(struct sk_buff *msg, in nl80211_send_wowlan() argument
1048 nl_wowlan = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED); in nl80211_send_wowlan()
1053 nla_put_flag(msg, NL80211_WOWLAN_TRIG_ANY)) || in nl80211_send_wowlan()
1055 nla_put_flag(msg, NL80211_WOWLAN_TRIG_DISCONNECT)) || in nl80211_send_wowlan()
1057 nla_put_flag(msg, NL80211_WOWLAN_TRIG_MAGIC_PKT)) || in nl80211_send_wowlan()
1059 nla_put_flag(msg, NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED)) || in nl80211_send_wowlan()
1061 nla_put_flag(msg, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE)) || in nl80211_send_wowlan()
1063 nla_put_flag(msg, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST)) || in nl80211_send_wowlan()
1065 nla_put_flag(msg, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE)) || in nl80211_send_wowlan()
1067 nla_put_flag(msg, NL80211_WOWLAN_TRIG_RFKILL_RELEASE))) in nl80211_send_wowlan()
1078 if (nla_put(msg, NL80211_WOWLAN_TRIG_PKT_PATTERN, in nl80211_send_wowlan()
1083 if (large && nl80211_send_wowlan_tcp_caps(rdev, msg)) in nl80211_send_wowlan()
1086 nla_nest_end(msg, nl_wowlan); in nl80211_send_wowlan()
1092 static int nl80211_send_coalesce(struct sk_buff *msg, in nl80211_send_coalesce() argument
1107 if (nla_put(msg, NL80211_ATTR_COALESCE_RULE, sizeof(rule), &rule)) in nl80211_send_coalesce()
1113 static int nl80211_send_band_rateinfo(struct sk_buff *msg, in nl80211_send_band_rateinfo() argument
1122 (nla_put(msg, NL80211_BAND_ATTR_HT_MCS_SET, in nl80211_send_band_rateinfo()
1125 nla_put_u16(msg, NL80211_BAND_ATTR_HT_CAPA, in nl80211_send_band_rateinfo()
1127 nla_put_u8(msg, NL80211_BAND_ATTR_HT_AMPDU_FACTOR, in nl80211_send_band_rateinfo()
1129 nla_put_u8(msg, NL80211_BAND_ATTR_HT_AMPDU_DENSITY, in nl80211_send_band_rateinfo()
1135 (nla_put(msg, NL80211_BAND_ATTR_VHT_MCS_SET, in nl80211_send_band_rateinfo()
1138 nla_put_u32(msg, NL80211_BAND_ATTR_VHT_CAPA, in nl80211_send_band_rateinfo()
1143 nl_rates = nla_nest_start(msg, NL80211_BAND_ATTR_RATES); in nl80211_send_band_rateinfo()
1148 nl_rate = nla_nest_start(msg, i); in nl80211_send_band_rateinfo()
1153 if (nla_put_u32(msg, NL80211_BITRATE_ATTR_RATE, in nl80211_send_band_rateinfo()
1157 nla_put_flag(msg, in nl80211_send_band_rateinfo()
1161 nla_nest_end(msg, nl_rate); in nl80211_send_band_rateinfo()
1164 nla_nest_end(msg, nl_rates); in nl80211_send_band_rateinfo()
1170 nl80211_send_mgmt_stypes(struct sk_buff *msg, in nl80211_send_mgmt_stypes() argument
1181 nl_ifs = nla_nest_start(msg, NL80211_ATTR_TX_FRAME_TYPES); in nl80211_send_mgmt_stypes()
1186 nl_ftypes = nla_nest_start(msg, ift); in nl80211_send_mgmt_stypes()
1193 nla_put_u16(msg, NL80211_ATTR_FRAME_TYPE, in nl80211_send_mgmt_stypes()
1199 nla_nest_end(msg, nl_ftypes); in nl80211_send_mgmt_stypes()
1202 nla_nest_end(msg, nl_ifs); in nl80211_send_mgmt_stypes()
1204 nl_ifs = nla_nest_start(msg, NL80211_ATTR_RX_FRAME_TYPES); in nl80211_send_mgmt_stypes()
1209 nl_ftypes = nla_nest_start(msg, ift); in nl80211_send_mgmt_stypes()
1216 nla_put_u16(msg, NL80211_ATTR_FRAME_TYPE, in nl80211_send_mgmt_stypes()
1222 nla_nest_end(msg, nl_ftypes); in nl80211_send_mgmt_stypes()
1224 nla_nest_end(msg, nl_ifs); in nl80211_send_mgmt_stypes()
1238 struct sk_buff *msg, u32 portid, u32 seq, in nl80211_send_wiphy() argument
1252 hdr = nl80211hdr_put(msg, portid, seq, flags, cmd); in nl80211_send_wiphy()
1259 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_wiphy()
1260 nla_put_string(msg, NL80211_ATTR_WIPHY_NAME, in nl80211_send_wiphy()
1262 nla_put_u32(msg, NL80211_ATTR_GENERATION, in nl80211_send_wiphy()
1271 if (nla_put_u8(msg, NL80211_ATTR_WIPHY_RETRY_SHORT, in nl80211_send_wiphy()
1273 nla_put_u8(msg, NL80211_ATTR_WIPHY_RETRY_LONG, in nl80211_send_wiphy()
1275 nla_put_u32(msg, NL80211_ATTR_WIPHY_FRAG_THRESHOLD, in nl80211_send_wiphy()
1277 nla_put_u32(msg, NL80211_ATTR_WIPHY_RTS_THRESHOLD, in nl80211_send_wiphy()
1279 nla_put_u8(msg, NL80211_ATTR_WIPHY_COVERAGE_CLASS, in nl80211_send_wiphy()
1281 nla_put_u8(msg, NL80211_ATTR_MAX_NUM_SCAN_SSIDS, in nl80211_send_wiphy()
1283 nla_put_u8(msg, NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS, in nl80211_send_wiphy()
1285 nla_put_u16(msg, NL80211_ATTR_MAX_SCAN_IE_LEN, in nl80211_send_wiphy()
1287 nla_put_u16(msg, NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN, in nl80211_send_wiphy()
1289 nla_put_u8(msg, NL80211_ATTR_MAX_MATCH_SETS, in nl80211_send_wiphy()
1294 nla_put_flag(msg, NL80211_ATTR_SUPPORT_IBSS_RSN)) in nl80211_send_wiphy()
1297 nla_put_flag(msg, NL80211_ATTR_SUPPORT_MESH_AUTH)) in nl80211_send_wiphy()
1300 nla_put_flag(msg, NL80211_ATTR_SUPPORT_AP_UAPSD)) in nl80211_send_wiphy()
1303 nla_put_flag(msg, NL80211_ATTR_ROAM_SUPPORT)) in nl80211_send_wiphy()
1306 nla_put_flag(msg, NL80211_ATTR_TDLS_SUPPORT)) in nl80211_send_wiphy()
1309 nla_put_flag(msg, NL80211_ATTR_TDLS_EXTERNAL_SETUP)) in nl80211_send_wiphy()
1315 if (nla_put(msg, NL80211_ATTR_CIPHER_SUITES, in nl80211_send_wiphy()
1320 if (nla_put_u8(msg, NL80211_ATTR_MAX_NUM_PMKIDS, in nl80211_send_wiphy()
1325 nla_put_flag(msg, NL80211_ATTR_CONTROL_PORT_ETHERTYPE)) in nl80211_send_wiphy()
1328 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX, in nl80211_send_wiphy()
1330 nla_put_u32(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX, in nl80211_send_wiphy()
1335 nla_put_u32(msg, NL80211_ATTR_PROBE_RESP_OFFLOAD, in nl80211_send_wiphy()
1346 if (nla_put_u32(msg, in nl80211_send_wiphy()
1349 nla_put_u32(msg, in nl80211_send_wiphy()
1360 if (nl80211_put_iftypes(msg, NL80211_ATTR_SUPPORTED_IFTYPES, in nl80211_send_wiphy()
1367 nl_bands = nla_nest_start(msg, NL80211_ATTR_WIPHY_BANDS); in nl80211_send_wiphy()
1380 nl_band = nla_nest_start(msg, band); in nl80211_send_wiphy()
1386 if (nl80211_send_band_rateinfo(msg, sband)) in nl80211_send_wiphy()
1394 msg, NL80211_BAND_ATTR_FREQS); in nl80211_send_wiphy()
1401 nl_freq = nla_nest_start(msg, i); in nl80211_send_wiphy()
1408 msg, chan, in nl80211_send_wiphy()
1412 nla_nest_end(msg, nl_freq); in nl80211_send_wiphy()
1420 nla_nest_end(msg, nl_freqs); in nl80211_send_wiphy()
1423 nla_nest_end(msg, nl_band); in nl80211_send_wiphy()
1432 nla_nest_end(msg, nl_bands); in nl80211_send_wiphy()
1445 nl_cmds = nla_nest_start(msg, NL80211_ATTR_SUPPORTED_COMMANDS); in nl80211_send_wiphy()
1454 if (nla_put_u32(msg, i, NL80211_CMD_ ## n)) \ in nl80211_send_wiphy()
1483 if (nla_put_u32(msg, i, NL80211_CMD_SET_WIPHY_NETNS)) in nl80211_send_wiphy()
1489 if (nla_put_u32(msg, i, NL80211_CMD_SET_CHANNEL)) in nl80211_send_wiphy()
1503 if (nla_put_u32(msg, i, NL80211_CMD_REGISTER_BEACONS)) in nl80211_send_wiphy()
1526 if (nla_put_u32(msg, i, NL80211_CMD_CONNECT)) in nl80211_send_wiphy()
1532 if (nla_put_u32(msg, i, NL80211_CMD_DISCONNECT)) in nl80211_send_wiphy()
1536 nla_nest_end(msg, nl_cmds); in nl80211_send_wiphy()
1543 nla_put_u32(msg, in nl80211_send_wiphy()
1549 nla_put_flag(msg, NL80211_ATTR_OFFCHANNEL_TX_OK)) in nl80211_send_wiphy()
1552 if (nl80211_send_mgmt_stypes(msg, mgmt_stypes)) in nl80211_send_wiphy()
1559 if (nl80211_send_wowlan(msg, rdev, state->split)) in nl80211_send_wiphy()
1568 if (nl80211_put_iftypes(msg, NL80211_ATTR_SOFTWARE_IFTYPES, in nl80211_send_wiphy()
1572 if (nl80211_put_iface_combinations(&rdev->wiphy, msg, in nl80211_send_wiphy()
1581 nla_put_u32(msg, NL80211_ATTR_DEVICE_AP_SME, in nl80211_send_wiphy()
1593 if (nla_put_u32(msg, NL80211_ATTR_FEATURE_FLAGS, features)) in nl80211_send_wiphy()
1597 nla_put(msg, NL80211_ATTR_HT_CAPABILITY_MASK, in nl80211_send_wiphy()
1604 nla_put_u32(msg, NL80211_ATTR_MAC_ACL_MAX, in nl80211_send_wiphy()
1622 (nla_put(msg, NL80211_ATTR_EXT_CAPA, in nl80211_send_wiphy()
1625 nla_put(msg, NL80211_ATTR_EXT_CAPA_MASK, in nl80211_send_wiphy()
1631 nla_put(msg, NL80211_ATTR_VHT_CAPABILITY_MASK, in nl80211_send_wiphy()
1639 if (nl80211_send_coalesce(msg, rdev)) in nl80211_send_wiphy()
1643 (nla_put_flag(msg, NL80211_ATTR_SUPPORT_5_MHZ) || in nl80211_send_wiphy()
1644 nla_put_flag(msg, NL80211_ATTR_SUPPORT_10_MHZ))) in nl80211_send_wiphy()
1648 nla_put_u32(msg, NL80211_ATTR_MAX_AP_ASSOC_STA, in nl80211_send_wiphy()
1659 nested = nla_nest_start(msg, NL80211_ATTR_VENDOR_DATA); in nl80211_send_wiphy()
1665 if (nla_put(msg, i + 1, sizeof(*info), info)) in nl80211_send_wiphy()
1668 nla_nest_end(msg, nested); in nl80211_send_wiphy()
1675 nested = nla_nest_start(msg, in nl80211_send_wiphy()
1682 if (nla_put(msg, i + 1, sizeof(*info), info)) in nl80211_send_wiphy()
1685 nla_nest_end(msg, nested); in nl80211_send_wiphy()
1691 nla_put_u8(msg, NL80211_ATTR_MAX_CSA_COUNTERS, in nl80211_send_wiphy()
1700 return genlmsg_end(msg, hdr); in nl80211_send_wiphy()
1703 genlmsg_cancel(msg, hdr); in nl80211_send_wiphy()
1822 struct sk_buff *msg; in nl80211_get_wiphy() local
1826 msg = nlmsg_new(4096, GFP_KERNEL); in nl80211_get_wiphy()
1827 if (!msg) in nl80211_get_wiphy()
1830 if (nl80211_send_wiphy(rdev, NL80211_CMD_NEW_WIPHY, msg, in nl80211_get_wiphy()
1833 nlmsg_free(msg); in nl80211_get_wiphy()
1837 return genlmsg_reply(msg, info); in nl80211_get_wiphy()
2308 static int nl80211_send_chandef(struct sk_buff *msg, in nl80211_send_chandef() argument
2313 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, in nl80211_send_chandef()
2320 if (nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, in nl80211_send_chandef()
2327 if (nla_put_u32(msg, NL80211_ATTR_CHANNEL_WIDTH, chandef->width)) in nl80211_send_chandef()
2329 if (nla_put_u32(msg, NL80211_ATTR_CENTER_FREQ1, chandef->center_freq1)) in nl80211_send_chandef()
2332 nla_put_u32(msg, NL80211_ATTR_CENTER_FREQ2, chandef->center_freq2)) in nl80211_send_chandef()
2337 static int nl80211_send_iface(struct sk_buff *msg, u32 portid, u32 seq, int flags, in nl80211_send_iface() argument
2344 hdr = nl80211hdr_put(msg, portid, seq, flags, NL80211_CMD_NEW_INTERFACE); in nl80211_send_iface()
2349 (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in nl80211_send_iface()
2350 nla_put_string(msg, NL80211_ATTR_IFNAME, dev->name))) in nl80211_send_iface()
2353 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_iface()
2354 nla_put_u32(msg, NL80211_ATTR_IFTYPE, wdev->iftype) || in nl80211_send_iface()
2355 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev)) || in nl80211_send_iface()
2356 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, wdev_address(wdev)) || in nl80211_send_iface()
2357 nla_put_u32(msg, NL80211_ATTR_GENERATION, in nl80211_send_iface()
2368 if (nl80211_send_chandef(msg, &chandef)) in nl80211_send_iface()
2374 if (nla_put(msg, NL80211_ATTR_SSID, wdev->ssid_len, wdev->ssid)) in nl80211_send_iface()
2378 return genlmsg_end(msg, hdr); in nl80211_send_iface()
2381 genlmsg_cancel(msg, hdr); in nl80211_send_iface()
2430 struct sk_buff *msg; in nl80211_get_interface() local
2434 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_interface()
2435 if (!msg) in nl80211_get_interface()
2438 if (nl80211_send_iface(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_interface()
2440 nlmsg_free(msg); in nl80211_get_interface()
2444 return genlmsg_reply(msg, info); in nl80211_get_interface()
2585 struct sk_buff *msg; in nl80211_new_interface() local
2622 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_new_interface()
2623 if (!msg) in nl80211_new_interface()
2638 nlmsg_free(msg); in nl80211_new_interface()
2677 if (nl80211_send_iface(msg, info->snd_portid, info->snd_seq, 0, in nl80211_new_interface()
2679 nlmsg_free(msg); in nl80211_new_interface()
2683 return genlmsg_reply(msg, info); in nl80211_new_interface()
2725 struct sk_buff *msg; member
2736 nla_put(cookie->msg, NL80211_ATTR_KEY_DATA, in get_key_callback()
2739 nla_put(cookie->msg, NL80211_ATTR_KEY_SEQ, in get_key_callback()
2742 nla_put_u32(cookie->msg, NL80211_ATTR_KEY_CIPHER, in get_key_callback()
2746 key = nla_nest_start(cookie->msg, NL80211_ATTR_KEY); in get_key_callback()
2751 nla_put(cookie->msg, NL80211_KEY_DATA, in get_key_callback()
2754 nla_put(cookie->msg, NL80211_KEY_SEQ, in get_key_callback()
2757 nla_put_u32(cookie->msg, NL80211_KEY_CIPHER, in get_key_callback()
2761 if (nla_put_u8(cookie->msg, NL80211_ATTR_KEY_IDX, cookie->idx)) in get_key_callback()
2764 nla_nest_end(cookie->msg, key); in get_key_callback()
2783 struct sk_buff *msg; in nl80211_get_key() local
2811 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_key()
2812 if (!msg) in nl80211_get_key()
2815 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_key()
2820 cookie.msg = msg; in nl80211_get_key()
2823 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in nl80211_get_key()
2824 nla_put_u8(msg, NL80211_ATTR_KEY_IDX, key_idx)) in nl80211_get_key()
2827 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr)) in nl80211_get_key()
2839 genlmsg_end(msg, hdr); in nl80211_get_key()
2840 return genlmsg_reply(msg, info); in nl80211_get_key()
2845 nlmsg_free(msg); in nl80211_get_key()
3510 static bool nl80211_put_sta_rate(struct sk_buff *msg, struct rate_info *info, in nl80211_put_sta_rate() argument
3517 rate = nla_nest_start(msg, attr); in nl80211_put_sta_rate()
3526 nla_put_u32(msg, NL80211_RATE_INFO_BITRATE32, bitrate)) in nl80211_put_sta_rate()
3529 nla_put_u16(msg, NL80211_RATE_INFO_BITRATE, bitrate_compat)) in nl80211_put_sta_rate()
3533 if (nla_put_u8(msg, NL80211_RATE_INFO_MCS, info->mcs)) in nl80211_put_sta_rate()
3536 nla_put_flag(msg, NL80211_RATE_INFO_40_MHZ_WIDTH)) in nl80211_put_sta_rate()
3539 nla_put_flag(msg, NL80211_RATE_INFO_SHORT_GI)) in nl80211_put_sta_rate()
3542 if (nla_put_u8(msg, NL80211_RATE_INFO_VHT_MCS, info->mcs)) in nl80211_put_sta_rate()
3544 if (nla_put_u8(msg, NL80211_RATE_INFO_VHT_NSS, info->nss)) in nl80211_put_sta_rate()
3547 nla_put_flag(msg, NL80211_RATE_INFO_40_MHZ_WIDTH)) in nl80211_put_sta_rate()
3550 nla_put_flag(msg, NL80211_RATE_INFO_80_MHZ_WIDTH)) in nl80211_put_sta_rate()
3553 nla_put_flag(msg, NL80211_RATE_INFO_80P80_MHZ_WIDTH)) in nl80211_put_sta_rate()
3556 nla_put_flag(msg, NL80211_RATE_INFO_160_MHZ_WIDTH)) in nl80211_put_sta_rate()
3559 nla_put_flag(msg, NL80211_RATE_INFO_SHORT_GI)) in nl80211_put_sta_rate()
3563 nla_nest_end(msg, rate); in nl80211_put_sta_rate()
3567 static bool nl80211_put_signal(struct sk_buff *msg, u8 mask, s8 *signal, in nl80211_put_signal() argument
3576 attr = nla_nest_start(msg, id); in nl80211_put_signal()
3584 if (nla_put_u8(msg, i, signal[i])) in nl80211_put_signal()
3588 nla_nest_end(msg, attr); in nl80211_put_signal()
3593 static int nl80211_send_station(struct sk_buff *msg, u32 portid, u32 seq, in nl80211_send_station() argument
3602 hdr = nl80211hdr_put(msg, portid, seq, flags, NL80211_CMD_NEW_STATION); in nl80211_send_station()
3606 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in nl80211_send_station()
3607 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr) || in nl80211_send_station()
3608 nla_put_u32(msg, NL80211_ATTR_GENERATION, sinfo->generation)) in nl80211_send_station()
3611 sinfoattr = nla_nest_start(msg, NL80211_ATTR_STA_INFO); in nl80211_send_station()
3615 nla_put_u32(msg, NL80211_STA_INFO_CONNECTED_TIME, in nl80211_send_station()
3619 nla_put_u32(msg, NL80211_STA_INFO_INACTIVE_TIME, in nl80211_send_station()
3624 nla_put_u32(msg, NL80211_STA_INFO_RX_BYTES, in nl80211_send_station()
3629 nla_put_u32(msg, NL80211_STA_INFO_TX_BYTES, in nl80211_send_station()
3633 nla_put_u64(msg, NL80211_STA_INFO_RX_BYTES64, in nl80211_send_station()
3637 nla_put_u64(msg, NL80211_STA_INFO_TX_BYTES64, in nl80211_send_station()
3641 nla_put_u16(msg, NL80211_STA_INFO_LLID, sinfo->llid)) in nl80211_send_station()
3644 nla_put_u16(msg, NL80211_STA_INFO_PLID, sinfo->plid)) in nl80211_send_station()
3647 nla_put_u8(msg, NL80211_STA_INFO_PLINK_STATE, in nl80211_send_station()
3653 nla_put_u8(msg, NL80211_STA_INFO_SIGNAL, in nl80211_send_station()
3657 nla_put_u8(msg, NL80211_STA_INFO_SIGNAL_AVG, in nl80211_send_station()
3665 if (!nl80211_put_signal(msg, sinfo->chains, in nl80211_send_station()
3671 if (!nl80211_put_signal(msg, sinfo->chains, in nl80211_send_station()
3677 if (!nl80211_put_sta_rate(msg, &sinfo->txrate, in nl80211_send_station()
3682 if (!nl80211_put_sta_rate(msg, &sinfo->rxrate, in nl80211_send_station()
3687 nla_put_u32(msg, NL80211_STA_INFO_RX_PACKETS, in nl80211_send_station()
3691 nla_put_u32(msg, NL80211_STA_INFO_TX_PACKETS, in nl80211_send_station()
3695 nla_put_u32(msg, NL80211_STA_INFO_TX_RETRIES, in nl80211_send_station()
3699 nla_put_u32(msg, NL80211_STA_INFO_TX_FAILED, in nl80211_send_station()
3703 nla_put_u32(msg, NL80211_STA_INFO_EXPECTED_THROUGHPUT, in nl80211_send_station()
3707 nla_put_u32(msg, NL80211_STA_INFO_BEACON_LOSS, in nl80211_send_station()
3711 nla_put_u32(msg, NL80211_STA_INFO_LOCAL_PM, in nl80211_send_station()
3715 nla_put_u32(msg, NL80211_STA_INFO_PEER_PM, in nl80211_send_station()
3719 nla_put_u32(msg, NL80211_STA_INFO_NONPEER_PM, in nl80211_send_station()
3723 bss_param = nla_nest_start(msg, NL80211_STA_INFO_BSS_PARAM); in nl80211_send_station()
3728 nla_put_flag(msg, NL80211_STA_BSS_PARAM_CTS_PROT)) || in nl80211_send_station()
3730 nla_put_flag(msg, NL80211_STA_BSS_PARAM_SHORT_PREAMBLE)) || in nl80211_send_station()
3732 nla_put_flag(msg, NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME)) || in nl80211_send_station()
3733 nla_put_u8(msg, NL80211_STA_BSS_PARAM_DTIM_PERIOD, in nl80211_send_station()
3735 nla_put_u16(msg, NL80211_STA_BSS_PARAM_BEACON_INTERVAL, in nl80211_send_station()
3739 nla_nest_end(msg, bss_param); in nl80211_send_station()
3742 nla_put(msg, NL80211_STA_INFO_STA_FLAGS, in nl80211_send_station()
3747 nla_put_u64(msg, NL80211_STA_INFO_T_OFFSET, in nl80211_send_station()
3750 nla_nest_end(msg, sinfoattr); in nl80211_send_station()
3753 nla_put(msg, NL80211_ATTR_IE, sinfo->assoc_req_ies_len, in nl80211_send_station()
3757 return genlmsg_end(msg, hdr); in nl80211_send_station()
3760 genlmsg_cancel(msg, hdr); in nl80211_send_station()
3822 struct sk_buff *msg; in nl80211_get_station() local
3840 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_station()
3841 if (!msg) in nl80211_get_station()
3844 if (nl80211_send_station(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_station()
3846 nlmsg_free(msg); in nl80211_get_station()
3850 return genlmsg_reply(msg, info); in nl80211_get_station()
4427 static int nl80211_send_mpath(struct sk_buff *msg, u32 portid, u32 seq, in nl80211_send_mpath() argument
4435 hdr = nl80211hdr_put(msg, portid, seq, flags, NL80211_CMD_NEW_STATION); in nl80211_send_mpath()
4439 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in nl80211_send_mpath()
4440 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, dst) || in nl80211_send_mpath()
4441 nla_put(msg, NL80211_ATTR_MPATH_NEXT_HOP, ETH_ALEN, next_hop) || in nl80211_send_mpath()
4442 nla_put_u32(msg, NL80211_ATTR_GENERATION, pinfo->generation)) in nl80211_send_mpath()
4445 pinfoattr = nla_nest_start(msg, NL80211_ATTR_MPATH_INFO); in nl80211_send_mpath()
4449 nla_put_u32(msg, NL80211_MPATH_INFO_FRAME_QLEN, in nl80211_send_mpath()
4453 nla_put_u32(msg, NL80211_MPATH_INFO_SN, pinfo->sn)) || in nl80211_send_mpath()
4455 nla_put_u32(msg, NL80211_MPATH_INFO_METRIC, in nl80211_send_mpath()
4458 nla_put_u32(msg, NL80211_MPATH_INFO_EXPTIME, in nl80211_send_mpath()
4461 nla_put_u8(msg, NL80211_MPATH_INFO_FLAGS, in nl80211_send_mpath()
4464 nla_put_u32(msg, NL80211_MPATH_INFO_DISCOVERY_TIMEOUT, in nl80211_send_mpath()
4467 nla_put_u8(msg, NL80211_MPATH_INFO_DISCOVERY_RETRIES, in nl80211_send_mpath()
4471 nla_nest_end(msg, pinfoattr); in nl80211_send_mpath()
4473 return genlmsg_end(msg, hdr); in nl80211_send_mpath()
4476 genlmsg_cancel(msg, hdr); in nl80211_send_mpath()
4537 struct sk_buff *msg; in nl80211_get_mpath() local
4558 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_mpath()
4559 if (!msg) in nl80211_get_mpath()
4562 if (nl80211_send_mpath(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_mpath()
4564 nlmsg_free(msg); in nl80211_get_mpath()
4568 return genlmsg_reply(msg, info); in nl80211_get_mpath()
4810 struct sk_buff *msg; in nl80211_get_mesh_config() local
4830 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_mesh_config()
4831 if (!msg) in nl80211_get_mesh_config()
4833 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_mesh_config()
4837 pinfoattr = nla_nest_start(msg, NL80211_ATTR_MESH_CONFIG); in nl80211_get_mesh_config()
4840 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in nl80211_get_mesh_config()
4841 nla_put_u16(msg, NL80211_MESHCONF_RETRY_TIMEOUT, in nl80211_get_mesh_config()
4843 nla_put_u16(msg, NL80211_MESHCONF_CONFIRM_TIMEOUT, in nl80211_get_mesh_config()
4845 nla_put_u16(msg, NL80211_MESHCONF_HOLDING_TIMEOUT, in nl80211_get_mesh_config()
4847 nla_put_u16(msg, NL80211_MESHCONF_MAX_PEER_LINKS, in nl80211_get_mesh_config()
4849 nla_put_u8(msg, NL80211_MESHCONF_MAX_RETRIES, in nl80211_get_mesh_config()
4851 nla_put_u8(msg, NL80211_MESHCONF_TTL, in nl80211_get_mesh_config()
4853 nla_put_u8(msg, NL80211_MESHCONF_ELEMENT_TTL, in nl80211_get_mesh_config()
4855 nla_put_u8(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS, in nl80211_get_mesh_config()
4857 nla_put_u32(msg, NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR, in nl80211_get_mesh_config()
4859 nla_put_u8(msg, NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES, in nl80211_get_mesh_config()
4861 nla_put_u32(msg, NL80211_MESHCONF_PATH_REFRESH_TIME, in nl80211_get_mesh_config()
4863 nla_put_u16(msg, NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT, in nl80211_get_mesh_config()
4865 nla_put_u32(msg, NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT, in nl80211_get_mesh_config()
4867 nla_put_u16(msg, NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL, in nl80211_get_mesh_config()
4869 nla_put_u16(msg, NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, in nl80211_get_mesh_config()
4871 nla_put_u16(msg, NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME, in nl80211_get_mesh_config()
4873 nla_put_u8(msg, NL80211_MESHCONF_HWMP_ROOTMODE, in nl80211_get_mesh_config()
4875 nla_put_u16(msg, NL80211_MESHCONF_HWMP_RANN_INTERVAL, in nl80211_get_mesh_config()
4877 nla_put_u8(msg, NL80211_MESHCONF_GATE_ANNOUNCEMENTS, in nl80211_get_mesh_config()
4879 nla_put_u8(msg, NL80211_MESHCONF_FORWARDING, in nl80211_get_mesh_config()
4881 nla_put_u32(msg, NL80211_MESHCONF_RSSI_THRESHOLD, in nl80211_get_mesh_config()
4883 nla_put_u32(msg, NL80211_MESHCONF_HT_OPMODE, in nl80211_get_mesh_config()
4885 nla_put_u32(msg, NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, in nl80211_get_mesh_config()
4887 nla_put_u16(msg, NL80211_MESHCONF_HWMP_ROOT_INTERVAL, in nl80211_get_mesh_config()
4889 nla_put_u16(msg, NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, in nl80211_get_mesh_config()
4891 nla_put_u32(msg, NL80211_MESHCONF_POWER_MODE, in nl80211_get_mesh_config()
4893 nla_put_u16(msg, NL80211_MESHCONF_AWAKE_WINDOW, in nl80211_get_mesh_config()
4895 nla_put_u32(msg, NL80211_MESHCONF_PLINK_TIMEOUT, in nl80211_get_mesh_config()
4898 nla_nest_end(msg, pinfoattr); in nl80211_get_mesh_config()
4899 genlmsg_end(msg, hdr); in nl80211_get_mesh_config()
4900 return genlmsg_reply(msg, info); in nl80211_get_mesh_config()
4903 genlmsg_cancel(msg, hdr); in nl80211_get_mesh_config()
4905 nlmsg_free(msg); in nl80211_get_mesh_config()
5180 struct sk_buff *msg; in nl80211_get_reg() local
5188 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_reg()
5189 if (!msg) in nl80211_get_reg()
5192 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_reg()
5198 nla_put_u32(msg, NL80211_ATTR_USER_REG_HINT_TYPE, in nl80211_get_reg()
5205 if (nla_put_string(msg, NL80211_ATTR_REG_ALPHA2, regdom->alpha2) || in nl80211_get_reg()
5207 nla_put_u8(msg, NL80211_ATTR_DFS_REGION, regdom->dfs_region))) in nl80211_get_reg()
5210 nl_reg_rules = nla_nest_start(msg, NL80211_ATTR_REG_RULES); in nl80211_get_reg()
5225 nl_reg_rule = nla_nest_start(msg, i); in nl80211_get_reg()
5234 if (nla_put_u32(msg, NL80211_ATTR_REG_RULE_FLAGS, in nl80211_get_reg()
5236 nla_put_u32(msg, NL80211_ATTR_FREQ_RANGE_START, in nl80211_get_reg()
5238 nla_put_u32(msg, NL80211_ATTR_FREQ_RANGE_END, in nl80211_get_reg()
5240 nla_put_u32(msg, NL80211_ATTR_FREQ_RANGE_MAX_BW, in nl80211_get_reg()
5242 nla_put_u32(msg, NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN, in nl80211_get_reg()
5244 nla_put_u32(msg, NL80211_ATTR_POWER_RULE_MAX_EIRP, in nl80211_get_reg()
5246 nla_put_u32(msg, NL80211_ATTR_DFS_CAC_TIME, in nl80211_get_reg()
5250 nla_nest_end(msg, nl_reg_rule); in nl80211_get_reg()
5254 nla_nest_end(msg, nl_reg_rules); in nl80211_get_reg()
5256 genlmsg_end(msg, hdr); in nl80211_get_reg()
5257 return genlmsg_reply(msg, info); in nl80211_get_reg()
5262 genlmsg_cancel(msg, hdr); in nl80211_get_reg()
5264 nlmsg_free(msg); in nl80211_get_reg()
6093 static int nl80211_send_bss(struct sk_buff *msg, struct netlink_callback *cb, in nl80211_send_bss() argument
6106 hdr = nl80211hdr_put(msg, NETLINK_CB(cb->skb).portid, seq, flags, in nl80211_send_bss()
6113 if (nla_put_u32(msg, NL80211_ATTR_GENERATION, rdev->bss_generation)) in nl80211_send_bss()
6116 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex)) in nl80211_send_bss()
6118 if (nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in nl80211_send_bss()
6121 bss = nla_nest_start(msg, NL80211_ATTR_BSS); in nl80211_send_bss()
6125 nla_put(msg, NL80211_BSS_BSSID, ETH_ALEN, res->bssid))) in nl80211_send_bss()
6131 nla_put_flag(msg, NL80211_BSS_PRESP_DATA)) in nl80211_send_bss()
6139 if (nla_put_u64(msg, NL80211_BSS_TSF, ies->tsf)) in nl80211_send_bss()
6141 if (ies->len && nla_put(msg, NL80211_BSS_INFORMATION_ELEMENTS, in nl80211_send_bss()
6149 if (nla_put_u64(msg, NL80211_BSS_BEACON_TSF, ies->tsf)) in nl80211_send_bss()
6151 if (ies->len && nla_put(msg, NL80211_BSS_BEACON_IES, in nl80211_send_bss()
6158 nla_put_u16(msg, NL80211_BSS_BEACON_INTERVAL, res->beacon_interval)) in nl80211_send_bss()
6160 if (nla_put_u16(msg, NL80211_BSS_CAPABILITY, res->capability) || in nl80211_send_bss()
6161 nla_put_u32(msg, NL80211_BSS_FREQUENCY, res->channel->center_freq) || in nl80211_send_bss()
6162 nla_put_u32(msg, NL80211_BSS_CHAN_WIDTH, res->scan_width) || in nl80211_send_bss()
6163 nla_put_u32(msg, NL80211_BSS_SEEN_MS_AGO, in nl80211_send_bss()
6169 if (nla_put_u32(msg, NL80211_BSS_SIGNAL_MBM, res->signal)) in nl80211_send_bss()
6173 if (nla_put_u8(msg, NL80211_BSS_SIGNAL_UNSPEC, res->signal)) in nl80211_send_bss()
6184 nla_put_u32(msg, NL80211_BSS_STATUS, in nl80211_send_bss()
6190 nla_put_u32(msg, NL80211_BSS_STATUS, in nl80211_send_bss()
6198 nla_nest_end(msg, bss); in nl80211_send_bss()
6200 return genlmsg_end(msg, hdr); in nl80211_send_bss()
6205 genlmsg_cancel(msg, hdr); in nl80211_send_bss()
6247 static int nl80211_send_survey(struct sk_buff *msg, u32 portid, u32 seq, in nl80211_send_survey() argument
6254 hdr = nl80211hdr_put(msg, portid, seq, flags, in nl80211_send_survey()
6259 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex)) in nl80211_send_survey()
6262 infoattr = nla_nest_start(msg, NL80211_ATTR_SURVEY_INFO); in nl80211_send_survey()
6266 if (nla_put_u32(msg, NL80211_SURVEY_INFO_FREQUENCY, in nl80211_send_survey()
6271 nla_put_u8(msg, NL80211_SURVEY_INFO_NOISE, survey->noise)) in nl80211_send_survey()
6274 nla_put_flag(msg, NL80211_SURVEY_INFO_IN_USE)) in nl80211_send_survey()
6277 nla_put_u64(msg, NL80211_SURVEY_INFO_CHANNEL_TIME, in nl80211_send_survey()
6281 nla_put_u64(msg, NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY, in nl80211_send_survey()
6285 nla_put_u64(msg, NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY, in nl80211_send_survey()
6289 nla_put_u64(msg, NL80211_SURVEY_INFO_CHANNEL_TIME_RX, in nl80211_send_survey()
6293 nla_put_u64(msg, NL80211_SURVEY_INFO_CHANNEL_TIME_TX, in nl80211_send_survey()
6297 nla_nest_end(msg, infoattr); in nl80211_send_survey()
6299 return genlmsg_end(msg, hdr); in nl80211_send_survey()
6302 genlmsg_cancel(msg, hdr); in nl80211_send_survey()
7508 struct sk_buff *msg; in nl80211_remain_on_channel() local
7536 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_remain_on_channel()
7537 if (!msg) in nl80211_remain_on_channel()
7540 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_remain_on_channel()
7553 if (nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie)) in nl80211_remain_on_channel()
7556 genlmsg_end(msg, hdr); in nl80211_remain_on_channel()
7558 return genlmsg_reply(msg, info); in nl80211_remain_on_channel()
7563 nlmsg_free(msg); in nl80211_remain_on_channel()
7862 struct sk_buff *msg = NULL; in nl80211_tx_mgmt() local
7947 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_tx_mgmt()
7948 if (!msg) in nl80211_tx_mgmt()
7951 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_tx_mgmt()
7964 if (msg) { in nl80211_tx_mgmt()
7965 if (nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie)) in nl80211_tx_mgmt()
7968 genlmsg_end(msg, hdr); in nl80211_tx_mgmt()
7969 return genlmsg_reply(msg, info); in nl80211_tx_mgmt()
7977 nlmsg_free(msg); in nl80211_tx_mgmt()
8050 struct sk_buff *msg; in nl80211_get_power_save() local
8059 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_power_save()
8060 if (!msg) in nl80211_get_power_save()
8063 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_power_save()
8075 if (nla_put_u32(msg, NL80211_ATTR_PS_STATE, ps_state)) in nl80211_get_power_save()
8078 genlmsg_end(msg, hdr); in nl80211_get_power_save()
8079 return genlmsg_reply(msg, info); in nl80211_get_power_save()
8084 nlmsg_free(msg); in nl80211_get_power_save()
8272 static int nl80211_send_wowlan_patterns(struct sk_buff *msg, in nl80211_send_wowlan_patterns() argument
8282 nl_pats = nla_nest_start(msg, NL80211_WOWLAN_TRIG_PKT_PATTERN); in nl80211_send_wowlan_patterns()
8287 nl_pat = nla_nest_start(msg, i + 1); in nl80211_send_wowlan_patterns()
8291 if (nla_put(msg, NL80211_PKTPAT_MASK, DIV_ROUND_UP(pat_len, 8), in nl80211_send_wowlan_patterns()
8293 nla_put(msg, NL80211_PKTPAT_PATTERN, pat_len, in nl80211_send_wowlan_patterns()
8295 nla_put_u32(msg, NL80211_PKTPAT_OFFSET, in nl80211_send_wowlan_patterns()
8298 nla_nest_end(msg, nl_pat); in nl80211_send_wowlan_patterns()
8300 nla_nest_end(msg, nl_pats); in nl80211_send_wowlan_patterns()
8305 static int nl80211_send_wowlan_tcp(struct sk_buff *msg, in nl80211_send_wowlan_tcp() argument
8313 nl_tcp = nla_nest_start(msg, NL80211_WOWLAN_TRIG_TCP_CONNECTION); in nl80211_send_wowlan_tcp()
8317 if (nla_put_be32(msg, NL80211_WOWLAN_TCP_SRC_IPV4, tcp->src) || in nl80211_send_wowlan_tcp()
8318 nla_put_be32(msg, NL80211_WOWLAN_TCP_DST_IPV4, tcp->dst) || in nl80211_send_wowlan_tcp()
8319 nla_put(msg, NL80211_WOWLAN_TCP_DST_MAC, ETH_ALEN, tcp->dst_mac) || in nl80211_send_wowlan_tcp()
8320 nla_put_u16(msg, NL80211_WOWLAN_TCP_SRC_PORT, tcp->src_port) || in nl80211_send_wowlan_tcp()
8321 nla_put_u16(msg, NL80211_WOWLAN_TCP_DST_PORT, tcp->dst_port) || in nl80211_send_wowlan_tcp()
8322 nla_put(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD, in nl80211_send_wowlan_tcp()
8324 nla_put_u32(msg, NL80211_WOWLAN_TCP_DATA_INTERVAL, in nl80211_send_wowlan_tcp()
8326 nla_put(msg, NL80211_WOWLAN_TCP_WAKE_PAYLOAD, in nl80211_send_wowlan_tcp()
8328 nla_put(msg, NL80211_WOWLAN_TCP_WAKE_MASK, in nl80211_send_wowlan_tcp()
8333 nla_put(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ, in nl80211_send_wowlan_tcp()
8338 nla_put(msg, NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN, in nl80211_send_wowlan_tcp()
8343 nla_nest_end(msg, nl_tcp); in nl80211_send_wowlan_tcp()
8351 struct sk_buff *msg; in nl80211_get_wowlan() local
8366 msg = nlmsg_new(size, GFP_KERNEL); in nl80211_get_wowlan()
8367 if (!msg) in nl80211_get_wowlan()
8370 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_wowlan()
8378 nl_wowlan = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS); in nl80211_get_wowlan()
8383 nla_put_flag(msg, NL80211_WOWLAN_TRIG_ANY)) || in nl80211_get_wowlan()
8385 nla_put_flag(msg, NL80211_WOWLAN_TRIG_DISCONNECT)) || in nl80211_get_wowlan()
8387 nla_put_flag(msg, NL80211_WOWLAN_TRIG_MAGIC_PKT)) || in nl80211_get_wowlan()
8389 nla_put_flag(msg, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE)) || in nl80211_get_wowlan()
8391 nla_put_flag(msg, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST)) || in nl80211_get_wowlan()
8393 nla_put_flag(msg, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE)) || in nl80211_get_wowlan()
8395 nla_put_flag(msg, NL80211_WOWLAN_TRIG_RFKILL_RELEASE))) in nl80211_get_wowlan()
8398 if (nl80211_send_wowlan_patterns(msg, rdev)) in nl80211_get_wowlan()
8401 if (nl80211_send_wowlan_tcp(msg, in nl80211_get_wowlan()
8405 nla_nest_end(msg, nl_wowlan); in nl80211_get_wowlan()
8408 genlmsg_end(msg, hdr); in nl80211_get_wowlan()
8409 return genlmsg_reply(msg, info); in nl80211_get_wowlan()
8412 nlmsg_free(msg); in nl80211_get_wowlan()
8731 static int nl80211_send_coalesce_rules(struct sk_buff *msg, in nl80211_send_coalesce_rules() argument
8741 nl_rules = nla_nest_start(msg, NL80211_ATTR_COALESCE_RULE); in nl80211_send_coalesce_rules()
8746 nl_rule = nla_nest_start(msg, i + 1); in nl80211_send_coalesce_rules()
8751 if (nla_put_u32(msg, NL80211_ATTR_COALESCE_RULE_DELAY, in nl80211_send_coalesce_rules()
8755 if (nla_put_u32(msg, NL80211_ATTR_COALESCE_RULE_CONDITION, in nl80211_send_coalesce_rules()
8759 nl_pats = nla_nest_start(msg, in nl80211_send_coalesce_rules()
8765 nl_pat = nla_nest_start(msg, j + 1); in nl80211_send_coalesce_rules()
8769 if (nla_put(msg, NL80211_PKTPAT_MASK, in nl80211_send_coalesce_rules()
8772 nla_put(msg, NL80211_PKTPAT_PATTERN, pat_len, in nl80211_send_coalesce_rules()
8774 nla_put_u32(msg, NL80211_PKTPAT_OFFSET, in nl80211_send_coalesce_rules()
8777 nla_nest_end(msg, nl_pat); in nl80211_send_coalesce_rules()
8779 nla_nest_end(msg, nl_pats); in nl80211_send_coalesce_rules()
8780 nla_nest_end(msg, nl_rule); in nl80211_send_coalesce_rules()
8782 nla_nest_end(msg, nl_rules); in nl80211_send_coalesce_rules()
8790 struct sk_buff *msg; in nl80211_get_coalesce() local
8796 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_coalesce()
8797 if (!msg) in nl80211_get_coalesce()
8800 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_coalesce()
8805 if (rdev->coalesce && nl80211_send_coalesce_rules(msg, rdev)) in nl80211_get_coalesce()
8808 genlmsg_end(msg, hdr); in nl80211_get_coalesce()
8809 return genlmsg_reply(msg, info); in nl80211_get_coalesce()
8812 nlmsg_free(msg); in nl80211_get_coalesce()
9066 struct sk_buff *msg; in nl80211_probe_client() local
9082 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_probe_client()
9083 if (!msg) in nl80211_probe_client()
9086 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_probe_client()
9099 if (nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie)) in nl80211_probe_client()
9102 genlmsg_end(msg, hdr); in nl80211_probe_client()
9104 return genlmsg_reply(msg, info); in nl80211_probe_client()
9109 nlmsg_free(msg); in nl80211_probe_client()
9195 struct sk_buff *msg; in nl80211_get_protocol_features() local
9197 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_get_protocol_features()
9198 if (!msg) in nl80211_get_protocol_features()
9201 hdr = nl80211hdr_put(msg, info->snd_portid, info->snd_seq, 0, in nl80211_get_protocol_features()
9206 if (nla_put_u32(msg, NL80211_ATTR_PROTOCOL_FEATURES, in nl80211_get_protocol_features()
9210 genlmsg_end(msg, hdr); in nl80211_get_protocol_features()
9211 return genlmsg_reply(msg, info); in nl80211_get_protocol_features()
9214 kfree_skb(msg); in nl80211_get_protocol_features()
10323 struct sk_buff *msg; in nl80211_notify_wiphy() local
10329 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_notify_wiphy()
10330 if (!msg) in nl80211_notify_wiphy()
10333 if (nl80211_send_wiphy(rdev, cmd, msg, 0, 0, 0, &state) < 0) { in nl80211_notify_wiphy()
10334 nlmsg_free(msg); in nl80211_notify_wiphy()
10338 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_notify_wiphy()
10342 static int nl80211_add_scan_req(struct sk_buff *msg, in nl80211_add_scan_req() argument
10352 nest = nla_nest_start(msg, NL80211_ATTR_SCAN_SSIDS); in nl80211_add_scan_req()
10356 if (nla_put(msg, i, req->ssids[i].ssid_len, req->ssids[i].ssid)) in nl80211_add_scan_req()
10359 nla_nest_end(msg, nest); in nl80211_add_scan_req()
10361 nest = nla_nest_start(msg, NL80211_ATTR_SCAN_FREQUENCIES); in nl80211_add_scan_req()
10365 if (nla_put_u32(msg, i, req->channels[i]->center_freq)) in nl80211_add_scan_req()
10368 nla_nest_end(msg, nest); in nl80211_add_scan_req()
10371 nla_put(msg, NL80211_ATTR_IE, req->ie_len, req->ie)) in nl80211_add_scan_req()
10375 nla_put_u32(msg, NL80211_ATTR_SCAN_FLAGS, req->flags)) in nl80211_add_scan_req()
10383 static int nl80211_send_scan_msg(struct sk_buff *msg, in nl80211_send_scan_msg() argument
10391 hdr = nl80211hdr_put(msg, portid, seq, flags, cmd); in nl80211_send_scan_msg()
10395 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_scan_msg()
10396 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in nl80211_send_scan_msg()
10398 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in nl80211_send_scan_msg()
10402 nl80211_add_scan_req(msg, rdev); in nl80211_send_scan_msg()
10404 return genlmsg_end(msg, hdr); in nl80211_send_scan_msg()
10407 genlmsg_cancel(msg, hdr); in nl80211_send_scan_msg()
10412 nl80211_send_sched_scan_msg(struct sk_buff *msg, in nl80211_send_sched_scan_msg() argument
10419 hdr = nl80211hdr_put(msg, portid, seq, flags, cmd); in nl80211_send_sched_scan_msg()
10423 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_sched_scan_msg()
10424 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex)) in nl80211_send_sched_scan_msg()
10427 return genlmsg_end(msg, hdr); in nl80211_send_sched_scan_msg()
10430 genlmsg_cancel(msg, hdr); in nl80211_send_sched_scan_msg()
10437 struct sk_buff *msg; in nl80211_send_scan_start() local
10439 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_scan_start()
10440 if (!msg) in nl80211_send_scan_start()
10443 if (nl80211_send_scan_msg(msg, rdev, wdev, 0, 0, 0, in nl80211_send_scan_start()
10445 nlmsg_free(msg); in nl80211_send_scan_start()
10449 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_scan_start()
10456 struct sk_buff *msg; in nl80211_build_scan_msg() local
10458 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_build_scan_msg()
10459 if (!msg) in nl80211_build_scan_msg()
10462 if (nl80211_send_scan_msg(msg, rdev, wdev, 0, 0, 0, in nl80211_build_scan_msg()
10465 nlmsg_free(msg); in nl80211_build_scan_msg()
10469 return msg; in nl80211_build_scan_msg()
10473 struct sk_buff *msg) in nl80211_send_scan_result() argument
10475 if (!msg) in nl80211_send_scan_result()
10478 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_scan_result()
10485 struct sk_buff *msg; in nl80211_send_sched_scan_results() local
10487 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_sched_scan_results()
10488 if (!msg) in nl80211_send_sched_scan_results()
10491 if (nl80211_send_sched_scan_msg(msg, rdev, netdev, 0, 0, 0, in nl80211_send_sched_scan_results()
10493 nlmsg_free(msg); in nl80211_send_sched_scan_results()
10497 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_sched_scan_results()
10504 struct sk_buff *msg; in nl80211_send_sched_scan() local
10506 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_sched_scan()
10507 if (!msg) in nl80211_send_sched_scan()
10510 if (nl80211_send_sched_scan_msg(msg, rdev, netdev, 0, 0, 0, cmd) < 0) { in nl80211_send_sched_scan()
10511 nlmsg_free(msg); in nl80211_send_sched_scan()
10515 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_sched_scan()
10525 struct sk_buff *msg; in nl80211_send_reg_change_event() local
10528 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_reg_change_event()
10529 if (!msg) in nl80211_send_reg_change_event()
10532 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_REG_CHANGE); in nl80211_send_reg_change_event()
10534 nlmsg_free(msg); in nl80211_send_reg_change_event()
10539 if (nla_put_u8(msg, NL80211_ATTR_REG_INITIATOR, request->initiator)) in nl80211_send_reg_change_event()
10543 if (nla_put_u8(msg, NL80211_ATTR_REG_TYPE, in nl80211_send_reg_change_event()
10547 if (nla_put_u8(msg, NL80211_ATTR_REG_TYPE, in nl80211_send_reg_change_event()
10552 if (nla_put_u8(msg, NL80211_ATTR_REG_TYPE, in nl80211_send_reg_change_event()
10556 if (nla_put_u8(msg, NL80211_ATTR_REG_TYPE, in nl80211_send_reg_change_event()
10558 nla_put_string(msg, NL80211_ATTR_REG_ALPHA2, in nl80211_send_reg_change_event()
10564 nla_put_u32(msg, NL80211_ATTR_WIPHY, request->wiphy_idx)) in nl80211_send_reg_change_event()
10567 genlmsg_end(msg, hdr); in nl80211_send_reg_change_event()
10570 genlmsg_multicast_allns(&nl80211_fam, msg, 0, in nl80211_send_reg_change_event()
10577 genlmsg_cancel(msg, hdr); in nl80211_send_reg_change_event()
10578 nlmsg_free(msg); in nl80211_send_reg_change_event()
10587 struct sk_buff *msg; in nl80211_send_mlme_event() local
10590 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_mlme_event()
10591 if (!msg) in nl80211_send_mlme_event()
10594 hdr = nl80211hdr_put(msg, 0, 0, 0, cmd); in nl80211_send_mlme_event()
10596 nlmsg_free(msg); in nl80211_send_mlme_event()
10600 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_mlme_event()
10601 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_mlme_event()
10602 nla_put(msg, NL80211_ATTR_FRAME, len, buf)) in nl80211_send_mlme_event()
10607 nla_nest_start(msg, NL80211_ATTR_STA_WME); in nl80211_send_mlme_event()
10611 if (nla_put_u8(msg, NL80211_STA_WME_UAPSD_QUEUES, in nl80211_send_mlme_event()
10615 nla_nest_end(msg, nla_wmm); in nl80211_send_mlme_event()
10618 genlmsg_end(msg, hdr); in nl80211_send_mlme_event()
10620 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_mlme_event()
10625 genlmsg_cancel(msg, hdr); in nl80211_send_mlme_event()
10626 nlmsg_free(msg); in nl80211_send_mlme_event()
10687 struct sk_buff *msg; in nl80211_send_mlme_timeout() local
10690 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_mlme_timeout()
10691 if (!msg) in nl80211_send_mlme_timeout()
10694 hdr = nl80211hdr_put(msg, 0, 0, 0, cmd); in nl80211_send_mlme_timeout()
10696 nlmsg_free(msg); in nl80211_send_mlme_timeout()
10700 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_mlme_timeout()
10701 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_mlme_timeout()
10702 nla_put_flag(msg, NL80211_ATTR_TIMED_OUT) || in nl80211_send_mlme_timeout()
10703 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in nl80211_send_mlme_timeout()
10706 genlmsg_end(msg, hdr); in nl80211_send_mlme_timeout()
10708 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_mlme_timeout()
10713 genlmsg_cancel(msg, hdr); in nl80211_send_mlme_timeout()
10714 nlmsg_free(msg); in nl80211_send_mlme_timeout()
10739 struct sk_buff *msg; in nl80211_send_connect_result() local
10742 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_connect_result()
10743 if (!msg) in nl80211_send_connect_result()
10746 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_CONNECT); in nl80211_send_connect_result()
10748 nlmsg_free(msg); in nl80211_send_connect_result()
10752 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_connect_result()
10753 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_connect_result()
10754 (bssid && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid)) || in nl80211_send_connect_result()
10755 nla_put_u16(msg, NL80211_ATTR_STATUS_CODE, status) || in nl80211_send_connect_result()
10757 nla_put(msg, NL80211_ATTR_REQ_IE, req_ie_len, req_ie)) || in nl80211_send_connect_result()
10759 nla_put(msg, NL80211_ATTR_RESP_IE, resp_ie_len, resp_ie))) in nl80211_send_connect_result()
10762 genlmsg_end(msg, hdr); in nl80211_send_connect_result()
10764 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_connect_result()
10769 genlmsg_cancel(msg, hdr); in nl80211_send_connect_result()
10770 nlmsg_free(msg); in nl80211_send_connect_result()
10779 struct sk_buff *msg; in nl80211_send_roamed() local
10782 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_roamed()
10783 if (!msg) in nl80211_send_roamed()
10786 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_ROAM); in nl80211_send_roamed()
10788 nlmsg_free(msg); in nl80211_send_roamed()
10792 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_roamed()
10793 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_roamed()
10794 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid) || in nl80211_send_roamed()
10796 nla_put(msg, NL80211_ATTR_REQ_IE, req_ie_len, req_ie)) || in nl80211_send_roamed()
10798 nla_put(msg, NL80211_ATTR_RESP_IE, resp_ie_len, resp_ie))) in nl80211_send_roamed()
10801 genlmsg_end(msg, hdr); in nl80211_send_roamed()
10803 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_roamed()
10808 genlmsg_cancel(msg, hdr); in nl80211_send_roamed()
10809 nlmsg_free(msg); in nl80211_send_roamed()
10817 struct sk_buff *msg; in nl80211_send_disconnected() local
10820 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_disconnected()
10821 if (!msg) in nl80211_send_disconnected()
10824 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_DISCONNECT); in nl80211_send_disconnected()
10826 nlmsg_free(msg); in nl80211_send_disconnected()
10830 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_disconnected()
10831 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_disconnected()
10833 nla_put_u16(msg, NL80211_ATTR_REASON_CODE, reason)) || in nl80211_send_disconnected()
10835 nla_put_flag(msg, NL80211_ATTR_DISCONNECTED_BY_AP)) || in nl80211_send_disconnected()
10836 (ie && nla_put(msg, NL80211_ATTR_IE, ie_len, ie))) in nl80211_send_disconnected()
10839 genlmsg_end(msg, hdr); in nl80211_send_disconnected()
10841 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_disconnected()
10846 genlmsg_cancel(msg, hdr); in nl80211_send_disconnected()
10847 nlmsg_free(msg); in nl80211_send_disconnected()
10855 struct sk_buff *msg; in nl80211_send_ibss_bssid() local
10858 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_ibss_bssid()
10859 if (!msg) in nl80211_send_ibss_bssid()
10862 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_JOIN_IBSS); in nl80211_send_ibss_bssid()
10864 nlmsg_free(msg); in nl80211_send_ibss_bssid()
10868 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_ibss_bssid()
10869 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_send_ibss_bssid()
10870 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid)) in nl80211_send_ibss_bssid()
10873 genlmsg_end(msg, hdr); in nl80211_send_ibss_bssid()
10875 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_ibss_bssid()
10880 genlmsg_cancel(msg, hdr); in nl80211_send_ibss_bssid()
10881 nlmsg_free(msg); in nl80211_send_ibss_bssid()
10889 struct sk_buff *msg; in cfg80211_notify_new_peer_candidate() local
10897 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_notify_new_peer_candidate()
10898 if (!msg) in cfg80211_notify_new_peer_candidate()
10901 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_NEW_PEER_CANDIDATE); in cfg80211_notify_new_peer_candidate()
10903 nlmsg_free(msg); in cfg80211_notify_new_peer_candidate()
10907 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_notify_new_peer_candidate()
10908 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_notify_new_peer_candidate()
10909 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_notify_new_peer_candidate()
10911 nla_put(msg, NL80211_ATTR_IE, ie_len , ie))) in cfg80211_notify_new_peer_candidate()
10914 genlmsg_end(msg, hdr); in cfg80211_notify_new_peer_candidate()
10916 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_notify_new_peer_candidate()
10921 genlmsg_cancel(msg, hdr); in cfg80211_notify_new_peer_candidate()
10922 nlmsg_free(msg); in cfg80211_notify_new_peer_candidate()
10931 struct sk_buff *msg; in nl80211_michael_mic_failure() local
10934 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_michael_mic_failure()
10935 if (!msg) in nl80211_michael_mic_failure()
10938 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_MICHAEL_MIC_FAILURE); in nl80211_michael_mic_failure()
10940 nlmsg_free(msg); in nl80211_michael_mic_failure()
10944 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_michael_mic_failure()
10945 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_michael_mic_failure()
10946 (addr && nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) || in nl80211_michael_mic_failure()
10947 nla_put_u32(msg, NL80211_ATTR_KEY_TYPE, key_type) || in nl80211_michael_mic_failure()
10949 nla_put_u8(msg, NL80211_ATTR_KEY_IDX, key_id)) || in nl80211_michael_mic_failure()
10950 (tsc && nla_put(msg, NL80211_ATTR_KEY_SEQ, 6, tsc))) in nl80211_michael_mic_failure()
10953 genlmsg_end(msg, hdr); in nl80211_michael_mic_failure()
10955 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_michael_mic_failure()
10960 genlmsg_cancel(msg, hdr); in nl80211_michael_mic_failure()
10961 nlmsg_free(msg); in nl80211_michael_mic_failure()
10968 struct sk_buff *msg; in nl80211_send_beacon_hint_event() local
10972 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); in nl80211_send_beacon_hint_event()
10973 if (!msg) in nl80211_send_beacon_hint_event()
10976 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_REG_BEACON_HINT); in nl80211_send_beacon_hint_event()
10978 nlmsg_free(msg); in nl80211_send_beacon_hint_event()
10986 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, get_wiphy_idx(wiphy))) in nl80211_send_beacon_hint_event()
10990 nl_freq = nla_nest_start(msg, NL80211_ATTR_FREQ_BEFORE); in nl80211_send_beacon_hint_event()
10993 if (nl80211_msg_put_channel(msg, channel_before, false)) in nl80211_send_beacon_hint_event()
10995 nla_nest_end(msg, nl_freq); in nl80211_send_beacon_hint_event()
10998 nl_freq = nla_nest_start(msg, NL80211_ATTR_FREQ_AFTER); in nl80211_send_beacon_hint_event()
11001 if (nl80211_msg_put_channel(msg, channel_after, false)) in nl80211_send_beacon_hint_event()
11003 nla_nest_end(msg, nl_freq); in nl80211_send_beacon_hint_event()
11005 genlmsg_end(msg, hdr); in nl80211_send_beacon_hint_event()
11008 genlmsg_multicast_allns(&nl80211_fam, msg, 0, in nl80211_send_beacon_hint_event()
11015 genlmsg_cancel(msg, hdr); in nl80211_send_beacon_hint_event()
11016 nlmsg_free(msg); in nl80211_send_beacon_hint_event()
11025 struct sk_buff *msg; in nl80211_send_remain_on_chan_event() local
11028 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_remain_on_chan_event()
11029 if (!msg) in nl80211_send_remain_on_chan_event()
11032 hdr = nl80211hdr_put(msg, 0, 0, 0, cmd); in nl80211_send_remain_on_chan_event()
11034 nlmsg_free(msg); in nl80211_send_remain_on_chan_event()
11038 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_remain_on_chan_event()
11039 (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in nl80211_send_remain_on_chan_event()
11041 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev)) || in nl80211_send_remain_on_chan_event()
11042 nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, chan->center_freq) || in nl80211_send_remain_on_chan_event()
11043 nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, in nl80211_send_remain_on_chan_event()
11045 nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie)) in nl80211_send_remain_on_chan_event()
11049 nla_put_u32(msg, NL80211_ATTR_DURATION, duration)) in nl80211_send_remain_on_chan_event()
11052 genlmsg_end(msg, hdr); in nl80211_send_remain_on_chan_event()
11054 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_send_remain_on_chan_event()
11059 genlmsg_cancel(msg, hdr); in nl80211_send_remain_on_chan_event()
11060 nlmsg_free(msg); in nl80211_send_remain_on_chan_event()
11095 struct sk_buff *msg; in cfg80211_new_sta() local
11099 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_new_sta()
11100 if (!msg) in cfg80211_new_sta()
11103 if (nl80211_send_station(msg, 0, 0, 0, in cfg80211_new_sta()
11105 nlmsg_free(msg); in cfg80211_new_sta()
11109 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_new_sta()
11118 struct sk_buff *msg; in cfg80211_del_sta() local
11123 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_del_sta()
11124 if (!msg) in cfg80211_del_sta()
11127 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_DEL_STATION); in cfg80211_del_sta()
11129 nlmsg_free(msg); in cfg80211_del_sta()
11133 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_del_sta()
11134 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr)) in cfg80211_del_sta()
11137 genlmsg_end(msg, hdr); in cfg80211_del_sta()
11139 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_del_sta()
11144 genlmsg_cancel(msg, hdr); in cfg80211_del_sta()
11145 nlmsg_free(msg); in cfg80211_del_sta()
11155 struct sk_buff *msg; in cfg80211_conn_failed() local
11158 msg = nlmsg_new(NLMSG_GOODSIZE, gfp); in cfg80211_conn_failed()
11159 if (!msg) in cfg80211_conn_failed()
11162 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_CONN_FAILED); in cfg80211_conn_failed()
11164 nlmsg_free(msg); in cfg80211_conn_failed()
11168 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_conn_failed()
11169 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, mac_addr) || in cfg80211_conn_failed()
11170 nla_put_u32(msg, NL80211_ATTR_CONN_FAILED_REASON, reason)) in cfg80211_conn_failed()
11173 genlmsg_end(msg, hdr); in cfg80211_conn_failed()
11175 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_conn_failed()
11180 genlmsg_cancel(msg, hdr); in cfg80211_conn_failed()
11181 nlmsg_free(msg); in cfg80211_conn_failed()
11190 struct sk_buff *msg; in __nl80211_unexpected_frame() local
11197 msg = nlmsg_new(100, gfp); in __nl80211_unexpected_frame()
11198 if (!msg) in __nl80211_unexpected_frame()
11201 hdr = nl80211hdr_put(msg, 0, 0, 0, cmd); in __nl80211_unexpected_frame()
11203 nlmsg_free(msg); in __nl80211_unexpected_frame()
11207 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in __nl80211_unexpected_frame()
11208 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in __nl80211_unexpected_frame()
11209 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr)) in __nl80211_unexpected_frame()
11212 genlmsg_end(msg, hdr); in __nl80211_unexpected_frame()
11213 genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid); in __nl80211_unexpected_frame()
11217 genlmsg_cancel(msg, hdr); in __nl80211_unexpected_frame()
11218 nlmsg_free(msg); in __nl80211_unexpected_frame()
11270 struct sk_buff *msg; in nl80211_send_mgmt() local
11273 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_send_mgmt()
11274 if (!msg) in nl80211_send_mgmt()
11277 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_FRAME); in nl80211_send_mgmt()
11279 nlmsg_free(msg); in nl80211_send_mgmt()
11283 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_mgmt()
11284 (netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in nl80211_send_mgmt()
11286 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev)) || in nl80211_send_mgmt()
11287 nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq) || in nl80211_send_mgmt()
11289 nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm)) || in nl80211_send_mgmt()
11290 nla_put(msg, NL80211_ATTR_FRAME, len, buf) || in nl80211_send_mgmt()
11292 nla_put_u32(msg, NL80211_ATTR_RXMGMT_FLAGS, flags))) in nl80211_send_mgmt()
11295 genlmsg_end(msg, hdr); in nl80211_send_mgmt()
11297 return genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid); in nl80211_send_mgmt()
11300 genlmsg_cancel(msg, hdr); in nl80211_send_mgmt()
11301 nlmsg_free(msg); in nl80211_send_mgmt()
11311 struct sk_buff *msg; in cfg80211_mgmt_tx_status() local
11316 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_mgmt_tx_status()
11317 if (!msg) in cfg80211_mgmt_tx_status()
11320 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_FRAME_TX_STATUS); in cfg80211_mgmt_tx_status()
11322 nlmsg_free(msg); in cfg80211_mgmt_tx_status()
11326 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_mgmt_tx_status()
11327 (netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in cfg80211_mgmt_tx_status()
11329 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev)) || in cfg80211_mgmt_tx_status()
11330 nla_put(msg, NL80211_ATTR_FRAME, len, buf) || in cfg80211_mgmt_tx_status()
11331 nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie) || in cfg80211_mgmt_tx_status()
11332 (ack && nla_put_flag(msg, NL80211_ATTR_ACK))) in cfg80211_mgmt_tx_status()
11335 genlmsg_end(msg, hdr); in cfg80211_mgmt_tx_status()
11337 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_mgmt_tx_status()
11342 genlmsg_cancel(msg, hdr); in cfg80211_mgmt_tx_status()
11343 nlmsg_free(msg); in cfg80211_mgmt_tx_status()
11354 struct sk_buff *msg; in cfg80211_cqm_rssi_notify() local
11360 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_cqm_rssi_notify()
11361 if (!msg) in cfg80211_cqm_rssi_notify()
11364 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_NOTIFY_CQM); in cfg80211_cqm_rssi_notify()
11366 nlmsg_free(msg); in cfg80211_cqm_rssi_notify()
11370 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_cqm_rssi_notify()
11371 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex)) in cfg80211_cqm_rssi_notify()
11374 pinfoattr = nla_nest_start(msg, NL80211_ATTR_CQM); in cfg80211_cqm_rssi_notify()
11378 if (nla_put_u32(msg, NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT, in cfg80211_cqm_rssi_notify()
11382 nla_nest_end(msg, pinfoattr); in cfg80211_cqm_rssi_notify()
11384 genlmsg_end(msg, hdr); in cfg80211_cqm_rssi_notify()
11386 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_cqm_rssi_notify()
11391 genlmsg_cancel(msg, hdr); in cfg80211_cqm_rssi_notify()
11392 nlmsg_free(msg); in cfg80211_cqm_rssi_notify()
11400 struct sk_buff *msg; in nl80211_gtk_rekey_notify() local
11404 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_gtk_rekey_notify()
11405 if (!msg) in nl80211_gtk_rekey_notify()
11408 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_SET_REKEY_OFFLOAD); in nl80211_gtk_rekey_notify()
11410 nlmsg_free(msg); in nl80211_gtk_rekey_notify()
11414 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_gtk_rekey_notify()
11415 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_gtk_rekey_notify()
11416 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, bssid)) in nl80211_gtk_rekey_notify()
11419 rekey_attr = nla_nest_start(msg, NL80211_ATTR_REKEY_DATA); in nl80211_gtk_rekey_notify()
11423 if (nla_put(msg, NL80211_REKEY_DATA_REPLAY_CTR, in nl80211_gtk_rekey_notify()
11427 nla_nest_end(msg, rekey_attr); in nl80211_gtk_rekey_notify()
11429 genlmsg_end(msg, hdr); in nl80211_gtk_rekey_notify()
11431 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_gtk_rekey_notify()
11436 genlmsg_cancel(msg, hdr); in nl80211_gtk_rekey_notify()
11437 nlmsg_free(msg); in nl80211_gtk_rekey_notify()
11457 struct sk_buff *msg; in nl80211_pmksa_candidate_notify() local
11461 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_pmksa_candidate_notify()
11462 if (!msg) in nl80211_pmksa_candidate_notify()
11465 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_PMKSA_CANDIDATE); in nl80211_pmksa_candidate_notify()
11467 nlmsg_free(msg); in nl80211_pmksa_candidate_notify()
11471 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_pmksa_candidate_notify()
11472 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex)) in nl80211_pmksa_candidate_notify()
11475 attr = nla_nest_start(msg, NL80211_ATTR_PMKSA_CANDIDATE); in nl80211_pmksa_candidate_notify()
11479 if (nla_put_u32(msg, NL80211_PMKSA_CANDIDATE_INDEX, index) || in nl80211_pmksa_candidate_notify()
11480 nla_put(msg, NL80211_PMKSA_CANDIDATE_BSSID, ETH_ALEN, bssid) || in nl80211_pmksa_candidate_notify()
11482 nla_put_flag(msg, NL80211_PMKSA_CANDIDATE_PREAUTH))) in nl80211_pmksa_candidate_notify()
11485 nla_nest_end(msg, attr); in nl80211_pmksa_candidate_notify()
11487 genlmsg_end(msg, hdr); in nl80211_pmksa_candidate_notify()
11489 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_pmksa_candidate_notify()
11494 genlmsg_cancel(msg, hdr); in nl80211_pmksa_candidate_notify()
11495 nlmsg_free(msg); in nl80211_pmksa_candidate_notify()
11515 struct sk_buff *msg; in nl80211_ch_switch_notify() local
11518 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_ch_switch_notify()
11519 if (!msg) in nl80211_ch_switch_notify()
11522 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_CH_SWITCH_NOTIFY); in nl80211_ch_switch_notify()
11524 nlmsg_free(msg); in nl80211_ch_switch_notify()
11528 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex)) in nl80211_ch_switch_notify()
11531 if (nl80211_send_chandef(msg, chandef)) in nl80211_ch_switch_notify()
11534 genlmsg_end(msg, hdr); in nl80211_ch_switch_notify()
11536 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_ch_switch_notify()
11541 genlmsg_cancel(msg, hdr); in nl80211_ch_switch_notify()
11542 nlmsg_free(msg); in nl80211_ch_switch_notify()
11575 struct sk_buff *msg; in cfg80211_cqm_txe_notify() local
11579 msg = nlmsg_new(NLMSG_GOODSIZE, gfp); in cfg80211_cqm_txe_notify()
11580 if (!msg) in cfg80211_cqm_txe_notify()
11583 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_NOTIFY_CQM); in cfg80211_cqm_txe_notify()
11585 nlmsg_free(msg); in cfg80211_cqm_txe_notify()
11589 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_cqm_txe_notify()
11590 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_cqm_txe_notify()
11591 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer)) in cfg80211_cqm_txe_notify()
11594 pinfoattr = nla_nest_start(msg, NL80211_ATTR_CQM); in cfg80211_cqm_txe_notify()
11598 if (nla_put_u32(msg, NL80211_ATTR_CQM_TXE_PKTS, num_packets)) in cfg80211_cqm_txe_notify()
11601 if (nla_put_u32(msg, NL80211_ATTR_CQM_TXE_RATE, rate)) in cfg80211_cqm_txe_notify()
11604 if (nla_put_u32(msg, NL80211_ATTR_CQM_TXE_INTVL, intvl)) in cfg80211_cqm_txe_notify()
11607 nla_nest_end(msg, pinfoattr); in cfg80211_cqm_txe_notify()
11609 genlmsg_end(msg, hdr); in cfg80211_cqm_txe_notify()
11611 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_cqm_txe_notify()
11616 genlmsg_cancel(msg, hdr); in cfg80211_cqm_txe_notify()
11617 nlmsg_free(msg); in cfg80211_cqm_txe_notify()
11627 struct sk_buff *msg; in nl80211_radar_notify() local
11630 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in nl80211_radar_notify()
11631 if (!msg) in nl80211_radar_notify()
11634 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_RADAR_DETECT); in nl80211_radar_notify()
11636 nlmsg_free(msg); in nl80211_radar_notify()
11640 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx)) in nl80211_radar_notify()
11647 if (nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in nl80211_radar_notify()
11648 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in nl80211_radar_notify()
11652 if (nla_put_u32(msg, NL80211_ATTR_RADAR_EVENT, event)) in nl80211_radar_notify()
11655 if (nl80211_send_chandef(msg, chandef)) in nl80211_radar_notify()
11658 genlmsg_end(msg, hdr); in nl80211_radar_notify()
11660 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in nl80211_radar_notify()
11665 genlmsg_cancel(msg, hdr); in nl80211_radar_notify()
11666 nlmsg_free(msg); in nl80211_radar_notify()
11675 struct sk_buff *msg; in cfg80211_cqm_pktloss_notify() local
11681 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_cqm_pktloss_notify()
11682 if (!msg) in cfg80211_cqm_pktloss_notify()
11685 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_NOTIFY_CQM); in cfg80211_cqm_pktloss_notify()
11687 nlmsg_free(msg); in cfg80211_cqm_pktloss_notify()
11691 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_cqm_pktloss_notify()
11692 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_cqm_pktloss_notify()
11693 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer)) in cfg80211_cqm_pktloss_notify()
11696 pinfoattr = nla_nest_start(msg, NL80211_ATTR_CQM); in cfg80211_cqm_pktloss_notify()
11700 if (nla_put_u32(msg, NL80211_ATTR_CQM_PKT_LOSS_EVENT, num_packets)) in cfg80211_cqm_pktloss_notify()
11703 nla_nest_end(msg, pinfoattr); in cfg80211_cqm_pktloss_notify()
11705 genlmsg_end(msg, hdr); in cfg80211_cqm_pktloss_notify()
11707 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_cqm_pktloss_notify()
11712 genlmsg_cancel(msg, hdr); in cfg80211_cqm_pktloss_notify()
11713 nlmsg_free(msg); in cfg80211_cqm_pktloss_notify()
11722 struct sk_buff *msg; in cfg80211_probe_status() local
11727 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_probe_status()
11729 if (!msg) in cfg80211_probe_status()
11732 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_PROBE_CLIENT); in cfg80211_probe_status()
11734 nlmsg_free(msg); in cfg80211_probe_status()
11738 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_probe_status()
11739 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_probe_status()
11740 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, addr) || in cfg80211_probe_status()
11741 nla_put_u64(msg, NL80211_ATTR_COOKIE, cookie) || in cfg80211_probe_status()
11742 (acked && nla_put_flag(msg, NL80211_ATTR_ACK))) in cfg80211_probe_status()
11745 genlmsg_end(msg, hdr); in cfg80211_probe_status()
11747 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_probe_status()
11752 genlmsg_cancel(msg, hdr); in cfg80211_probe_status()
11753 nlmsg_free(msg); in cfg80211_probe_status()
11762 struct sk_buff *msg; in cfg80211_report_obss_beacon() local
11770 msg = nlmsg_new(len + 100, GFP_ATOMIC); in cfg80211_report_obss_beacon()
11771 if (!msg) { in cfg80211_report_obss_beacon()
11776 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_FRAME); in cfg80211_report_obss_beacon()
11780 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_report_obss_beacon()
11782 nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, freq)) || in cfg80211_report_obss_beacon()
11784 nla_put_u32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm)) || in cfg80211_report_obss_beacon()
11785 nla_put(msg, NL80211_ATTR_FRAME, len, frame)) in cfg80211_report_obss_beacon()
11788 genlmsg_end(msg, hdr); in cfg80211_report_obss_beacon()
11790 genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, reg->nlportid); in cfg80211_report_obss_beacon()
11798 genlmsg_cancel(msg, hdr); in cfg80211_report_obss_beacon()
11799 nlmsg_free(msg); in cfg80211_report_obss_beacon()
11809 struct sk_buff *msg; in cfg80211_report_wowlan_wakeup() local
11818 msg = nlmsg_new(size, gfp); in cfg80211_report_wowlan_wakeup()
11819 if (!msg) in cfg80211_report_wowlan_wakeup()
11822 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_SET_WOWLAN); in cfg80211_report_wowlan_wakeup()
11826 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_report_wowlan_wakeup()
11827 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in cfg80211_report_wowlan_wakeup()
11830 if (wdev->netdev && nla_put_u32(msg, NL80211_ATTR_IFINDEX, in cfg80211_report_wowlan_wakeup()
11837 reasons = nla_nest_start(msg, NL80211_ATTR_WOWLAN_TRIGGERS); in cfg80211_report_wowlan_wakeup()
11842 nla_put_flag(msg, NL80211_WOWLAN_TRIG_DISCONNECT)) in cfg80211_report_wowlan_wakeup()
11845 nla_put_flag(msg, NL80211_WOWLAN_TRIG_MAGIC_PKT)) in cfg80211_report_wowlan_wakeup()
11848 nla_put_flag(msg, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE)) in cfg80211_report_wowlan_wakeup()
11851 nla_put_flag(msg, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST)) in cfg80211_report_wowlan_wakeup()
11854 nla_put_flag(msg, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE)) in cfg80211_report_wowlan_wakeup()
11857 nla_put_flag(msg, NL80211_WOWLAN_TRIG_RFKILL_RELEASE)) in cfg80211_report_wowlan_wakeup()
11861 nla_put_u32(msg, NL80211_WOWLAN_TRIG_PKT_PATTERN, in cfg80211_report_wowlan_wakeup()
11866 nla_put_flag(msg, NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH)) in cfg80211_report_wowlan_wakeup()
11870 nla_put_flag(msg, NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST)) in cfg80211_report_wowlan_wakeup()
11874 nla_put_flag(msg, in cfg80211_report_wowlan_wakeup()
11890 nla_put_u32(msg, len_attr, wakeup->packet_len)) in cfg80211_report_wowlan_wakeup()
11893 if (nla_put(msg, pkt_attr, wakeup->packet_present_len, in cfg80211_report_wowlan_wakeup()
11898 nla_nest_end(msg, reasons); in cfg80211_report_wowlan_wakeup()
11901 genlmsg_end(msg, hdr); in cfg80211_report_wowlan_wakeup()
11903 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_report_wowlan_wakeup()
11908 nlmsg_free(msg); in cfg80211_report_wowlan_wakeup()
11919 struct sk_buff *msg; in cfg80211_tdls_oper_request() local
11925 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_tdls_oper_request()
11926 if (!msg) in cfg80211_tdls_oper_request()
11929 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_TDLS_OPER); in cfg80211_tdls_oper_request()
11931 nlmsg_free(msg); in cfg80211_tdls_oper_request()
11935 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_tdls_oper_request()
11936 nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || in cfg80211_tdls_oper_request()
11937 nla_put_u8(msg, NL80211_ATTR_TDLS_OPERATION, oper) || in cfg80211_tdls_oper_request()
11938 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer) || in cfg80211_tdls_oper_request()
11940 nla_put_u16(msg, NL80211_ATTR_REASON_CODE, reason_code))) in cfg80211_tdls_oper_request()
11943 genlmsg_end(msg, hdr); in cfg80211_tdls_oper_request()
11945 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_tdls_oper_request()
11950 genlmsg_cancel(msg, hdr); in cfg80211_tdls_oper_request()
11951 nlmsg_free(msg); in cfg80211_tdls_oper_request()
12031 struct sk_buff *msg; in cfg80211_ft_event() local
12039 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in cfg80211_ft_event()
12040 if (!msg) in cfg80211_ft_event()
12043 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_FT_EVENT); in cfg80211_ft_event()
12047 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_ft_event()
12048 nla_put_u32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex) || in cfg80211_ft_event()
12049 nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, ft_event->target_ap)) in cfg80211_ft_event()
12053 nla_put(msg, NL80211_ATTR_IE, ft_event->ies_len, ft_event->ies)) in cfg80211_ft_event()
12056 nla_put(msg, NL80211_ATTR_IE_RIC, ft_event->ric_ies_len, in cfg80211_ft_event()
12060 genlmsg_end(msg, hdr); in cfg80211_ft_event()
12062 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(&rdev->wiphy), msg, 0, in cfg80211_ft_event()
12066 nlmsg_free(msg); in cfg80211_ft_event()
12073 struct sk_buff *msg; in cfg80211_crit_proto_stopped() local
12084 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); in cfg80211_crit_proto_stopped()
12085 if (!msg) in cfg80211_crit_proto_stopped()
12088 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_CRIT_PROTOCOL_STOP); in cfg80211_crit_proto_stopped()
12092 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in cfg80211_crit_proto_stopped()
12093 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in cfg80211_crit_proto_stopped()
12096 genlmsg_end(msg, hdr); in cfg80211_crit_proto_stopped()
12098 genlmsg_unicast(wiphy_net(&rdev->wiphy), msg, nlportid); in cfg80211_crit_proto_stopped()
12103 genlmsg_cancel(msg, hdr); in cfg80211_crit_proto_stopped()
12104 nlmsg_free(msg); in cfg80211_crit_proto_stopped()
12113 struct sk_buff *msg; in nl80211_send_ap_stopped() local
12116 msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); in nl80211_send_ap_stopped()
12117 if (!msg) in nl80211_send_ap_stopped()
12120 hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_STOP_AP); in nl80211_send_ap_stopped()
12124 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || in nl80211_send_ap_stopped()
12125 nla_put_u32(msg, NL80211_ATTR_IFINDEX, wdev->netdev->ifindex) || in nl80211_send_ap_stopped()
12126 nla_put_u64(msg, NL80211_ATTR_WDEV, wdev_id(wdev))) in nl80211_send_ap_stopped()
12129 genlmsg_end(msg, hdr); in nl80211_send_ap_stopped()
12131 genlmsg_multicast_netns(&nl80211_fam, wiphy_net(wiphy), msg, 0, in nl80211_send_ap_stopped()
12135 nlmsg_free(msg); in nl80211_send_ap_stopped()