Lines Matching defs:data

14  * - RX filtering based on filter configuration (data->rx_filter)
555 const void *data, int data_len)
562 err = nla_parse_deprecated(tb, QCA_WLAN_VENDOR_ATTR_MAX, data,
580 /* skb_put() or nla_put() will fill up data within
584 /* Add vendor data */
596 /* skb_put() or nla_put() will fill up data within
913 static int hwsim_tx_virtio(struct mac80211_hwsim_data *data,
942 extern int hwsim_tx_virtio(struct mac80211_hwsim_data *data,
988 struct mac80211_hwsim_data *data = dat;
996 wiphy_dbg(data->hw->wiphy,
1012 mac80211_hwsim_tx_frame(data->hw, skb,
1017 static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac,
1028 wiphy_dbg(data->hw->wiphy,
1029 "%s: send data::nullfunc to %pM ps=%d\n",
1050 mac80211_hwsim_tx_frame(data->hw, skb,
1059 struct mac80211_hwsim_data *data = dat;
1060 hwsim_send_nullfunc(data, mac, vif, 1);
1066 struct mac80211_hwsim_data *data = dat;
1067 hwsim_send_nullfunc(data, mac, vif, 0);
1072 struct mac80211_hwsim_data *data = dat;
1073 *val = data->ps;
1079 struct mac80211_hwsim_data *data = dat;
1087 if (data->ps != PS_ENABLED)
1091 data->hw, IEEE80211_IFACE_ITER_NORMAL,
1092 hwsim_send_ps_poll, data);
1096 old_ps = data->ps;
1097 data->ps = val;
1102 data->hw, IEEE80211_IFACE_ITER_NORMAL,
1103 hwsim_send_nullfunc_ps, data);
1106 data->hw, IEEE80211_IFACE_ITER_NORMAL,
1107 hwsim_send_nullfunc_no_ps, data);
1119 struct mac80211_hwsim_data *data = dat;
1121 ieee80211_radar_detected(data->hw);
1131 struct mac80211_hwsim_data *data = dat;
1132 *val = data->group;
1138 struct mac80211_hwsim_data *data = dat;
1139 data->group = val;
1149 struct mac80211_hwsim_data *data = dat;
1150 *val = data->rx_rssi;
1156 struct mac80211_hwsim_data *data = dat;
1162 data->rx_rssi = rssi;
1183 static __le64 __mac80211_hwsim_get_tsf(struct mac80211_hwsim_data *data)
1186 return cpu_to_le64(now + data->tsf_offset);
1192 struct mac80211_hwsim_data *data = hw->priv;
1193 return le64_to_cpu(__mac80211_hwsim_get_tsf(data));
1199 struct mac80211_hwsim_data *data = hw->priv;
1202 u32 bcn_int = data->link_data[0].beacon_int;
1207 data->tsf_offset += delta;
1208 data->bcn_delta = do_div(delta, bcn_int);
1210 data->tsf_offset -= delta;
1211 data->bcn_delta = -(s64)do_div(delta, bcn_int);
1219 struct mac80211_hwsim_data *data = hw->priv;
1246 hdr->rt_tsft = __mac80211_hwsim_get_tsf(data);
1314 static void mac80211_hwsim_addr_iter(void *data, u8 *mac,
1318 struct mac80211_hwsim_addr_match_data *md = data;
1340 static bool mac80211_hwsim_addr_match(struct mac80211_hwsim_data *data,
1347 if (data->scanning && memcmp(addr, data->scan_addr, ETH_ALEN) == 0)
1352 ieee80211_iterate_active_interfaces_atomic(data->hw,
1360 static bool hwsim_ps_rx_ok(struct mac80211_hwsim_data *data,
1363 switch (data->ps) {
1375 if (data->ps_poll_pending &&
1376 mac80211_hwsim_addr_match(data, skb->data + 4)) {
1377 data->ps_poll_pending = false;
1386 static int hwsim_unicast_netgroup(struct mac80211_hwsim_data *data,
1395 if (data->netgroup == hwsim_net_get_netgroup(net)) {
1412 struct mac80211_hwsim_data *data = hw->priv;
1413 u32 _portid = READ_ONCE(data->wmediumd);
1435 ETH_ALEN, data->addresses[1].addr))
1444 hwsim_tx_virtio(data, skb);
1446 hwsim_unicast_netgroup(data, skb, _portid);
1488 struct mac80211_hwsim_data *data = hw->priv;
1489 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) my_skb->data;
1498 if (data->ps != PS_DISABLED)
1501 if (skb_queue_len(&data->pending) >= MAX_QUEUE) {
1503 while (skb_queue_len(&data->pending) >= WARN_QUEUE) {
1504 ieee80211_free_txskb(hw, skb_dequeue(&data->pending));
1505 data->tx_dropped++;
1521 ETH_ALEN, data->addresses[1].addr))
1524 /* We get the skb->data */
1525 if (nla_put(skb, HWSIM_ATTR_FRAME, my_skb->len, my_skb->data))
1565 cookie = atomic_inc_return(&data->pending_cookie);
1573 if (hwsim_tx_virtio(data, skb))
1576 if (hwsim_unicast_netgroup(data, skb, dst_portid))
1581 skb_queue_tail(&data->pending, my_skb);
1582 data->tx_pkts++;
1583 data->tx_bytes += my_skb->len;
1591 data->tx_failed++;
1611 struct tx_iter_data *data = _data;
1626 if (!hwsim_chans_compat(data->channel, chanctx->def.chan))
1629 data->receive = true;
1676 memcpy(rtap->content.data, vendor_data, sizeof(vendor_data));
1682 static void mac80211_hwsim_rx(struct mac80211_hwsim_data *data,
1686 struct ieee80211_hdr *hdr = (void *)skb->data;
1696 sta = ieee80211_find_sta_by_link_addrs(data->hw, hdr->addr2,
1713 data->rx_pkts++;
1714 data->rx_bytes += skb->len;
1715 ieee80211_rx_irqsafe(data->hw, skb);
1722 struct mac80211_hwsim_data *data = hw->priv, *data2;
1724 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
1756 rx_status.signal = data->rx_rssi;
1760 if (data->ps != PS_DISABLED)
1780 now = data->abs_bcn_ts;
1794 if (data == data2)
1801 if (!(data->group & data2->group))
1804 if (data->netgroup != data2->netgroup)
1832 memcpy(page_address(page), skb->data, skb->len);
1853 mac80211_hwsim_select_tx_link(struct mac80211_hwsim_data *data,
1906 struct mac80211_hwsim_data *data = hw->priv;
1908 struct ieee80211_hdr *hdr = (void *)skb->data;
1921 if (!data->use_chanctx) {
1922 channel = data->channel;
1923 confbw = data->bw;
1925 channel = data->tmp_chan;
1939 bss_conf = mac80211_hwsim_select_tx_link(data, vif, sta,
1988 if (data->idle && !data->tmp_chan) {
2006 /* initialize to data->bw for 5/10 MHz handling */
2007 enum nl80211_chan_width bw = data->bw;
2032 mgmt = (struct ieee80211_mgmt *)skb->data;
2038 cpu_to_le64(ts + data->tsf_offset +
2045 _portid = READ_ONCE(data->wmediumd);
2051 data->tx_pkts++;
2052 data->tx_bytes += skb->len;
2072 struct mac80211_hwsim_data *data = hw->priv;
2074 data->started = true;
2081 struct mac80211_hwsim_data *data = hw->priv;
2084 data->started = false;
2086 for (i = 0; i < ARRAY_SIZE(data->link_data); i++)
2087 hrtimer_cancel(&data->link_data[i].beacon_timer);
2089 while (!skb_queue_empty(&data->pending))
2090 ieee80211_free_txskb(hw, skb_dequeue(&data->pending));
2154 struct mac80211_hwsim_data *data = hw->priv;
2155 u32 _portid = READ_ONCE(data->wmediumd);
2169 data->tx_pkts++;
2170 data->tx_bytes += skb->len;
2176 struct mac80211_hwsim_data *data,
2197 mgmt = (struct ieee80211_mgmt *) skb->data;
2199 data->abs_bcn_ts = mac80211_hwsim_get_tsf_raw();
2203 ext->u.s1g_beacon.timestamp = cpu_to_le32(data->abs_bcn_ts +
2204 data->tsf_offset +
2208 mgmt->u.beacon.timestamp = cpu_to_le64(data->abs_bcn_ts +
2209 data->tsf_offset +
2224 struct mac80211_hwsim_data *data =
2227 struct ieee80211_hw *hw = data->hw;
2254 __mac80211_hwsim_beacon_tx(link_conf, data, hw, vif,
2264 __mac80211_hwsim_beacon_tx(link_conf, data, hw, vif, skb);
2281 struct mac80211_hwsim_data *data =
2284 struct ieee80211_hw *hw = data->hw;
2287 if (!data->started)
2295 if (data->bcn_delta) {
2296 bcn_int -= data->bcn_delta;
2297 data->bcn_delta = 0;
2322 struct mac80211_hwsim_data *data = hw->priv;
2351 data->idle = !!(conf->flags & IEEE80211_CONF_IDLE);
2353 WARN_ON(conf->chandef.chan && data->use_chanctx);
2355 mutex_lock(&data->mutex);
2356 if (data->scanning && conf->chandef.chan) {
2357 for (idx = 0; idx < ARRAY_SIZE(data->survey_data); idx++) {
2358 if (data->survey_data[idx].channel == data->channel) {
2359 data->survey_data[idx].start =
2360 data->survey_data[idx].next_start;
2361 data->survey_data[idx].end = jiffies;
2366 data->channel = conf->chandef.chan;
2367 data->bw = conf->chandef.width;
2369 for (idx = 0; idx < ARRAY_SIZE(data->survey_data); idx++) {
2370 if (data->survey_data[idx].channel &&
2371 data->survey_data[idx].channel != data->channel)
2373 data->survey_data[idx].channel = data->channel;
2374 data->survey_data[idx].next_start = jiffies;
2378 data->channel = conf->chandef.chan;
2379 data->bw = conf->chandef.width;
2381 mutex_unlock(&data->mutex);
2383 for (idx = 0; idx < ARRAY_SIZE(data->link_data); idx++) {
2385 &data->link_data[idx];
2387 if (!data->started || !link_data->beacon_int) {
2408 struct mac80211_hwsim_data *data = hw->priv;
2412 data->rx_filter = 0;
2414 data->rx_filter |= FIF_ALLMULTI;
2416 data->rx_filter |= FIF_MCAST_ACTION;
2418 *total_flags = data->rx_filter;
2421 static void mac80211_hwsim_bcn_en_iter(void *data, u8 *mac,
2424 unsigned int *count = data;
2456 struct mac80211_hwsim_data *data = hw->priv;
2458 struct mac80211_hwsim_link_data *link_data = &data->link_data[link_id];
2475 if (data->started &&
2491 data->hw, IEEE80211_IFACE_ITER_NORMAL,
2536 struct mac80211_hwsim_data *data = hw->priv;
2563 if (!data->use_chanctx) {
2564 confbw = data->bw;
2581 hwsim_get_chanwidth(data->bw), data->bw);
2749 void *data, int len)
2756 err = nla_parse_deprecated(tb, HWSIM_TM_ATTR_MAX, data, len,
2876 mgmt = (struct ieee80211_mgmt *) probe->data;
3144 struct ieee80211_hdr *hdr = (void *)skb->data;
3170 u32 sset, u8 *data)
3173 memcpy(data, mac80211_hwsim_gstrings_stats,
3187 struct ethtool_stats *stats, u64 *data)
3192 data[i++] = ar->tx_pkts;
3193 data[i++] = ar->tx_bytes;
3194 data[i++] = ar->rx_pkts;
3195 data[i++] = ar->rx_bytes;
3196 data[i++] = ar->tx_dropped;
3197 data[i++] = ar->tx_failed;
3198 data[i++] = ar->ps;
3199 data[i++] = ar->group;
3323 struct nlattr *peer, *chandef, *req, *data;
3351 data = nla_nest_start(msg, NL80211_PMSR_REQ_ATTR_DATA);
3352 if (!data)
3359 nla_nest_end(msg, data);
3401 struct mac80211_hwsim_data *data;
3408 data = hw->priv;
3409 _portid = READ_ONCE(data->wmediumd);
3413 mutex_lock(&data->mutex);
3415 if (data->pmsr_request) {
3430 ETH_ALEN, data->addresses[1].addr)) {
3449 hwsim_tx_virtio(data, skb);
3451 hwsim_unicast_netgroup(data, skb, _portid);
3453 data->pmsr_request = request;
3454 data->pmsr_request_wdev = ieee80211_vif_to_wdev(vif);
3460 mutex_unlock(&data->mutex);
3468 struct mac80211_hwsim_data *data;
3475 data = hw->priv;
3476 _portid = READ_ONCE(data->wmediumd);
3480 mutex_lock(&data->mutex);
3482 if (data->pmsr_request != request) {
3495 if (nla_put(skb, HWSIM_ATTR_ADDR_TRANSMITTER, ETH_ALEN, data->addresses[1].addr))
3514 hwsim_tx_virtio(data, skb);
3516 hwsim_unicast_netgroup(data, skb, _portid);
3522 mutex_unlock(&data->mutex);
3764 struct mac80211_hwsim_data *data;
3775 data = get_hwsim_data_ref_from_addr(src);
3776 if (!data)
3779 mutex_lock(&data->mutex);
3780 if (!data->pmsr_request) {
3804 cfg80211_pmsr_report(data->pmsr_request_wdev,
3805 data->pmsr_request, &result, GFP_KERNEL);
3808 cfg80211_pmsr_complete(data->pmsr_request_wdev, data->pmsr_request, GFP_KERNEL);
3812 data->pmsr_request = NULL;
3813 data->pmsr_request_wdev = NULL;
3815 mutex_unlock(&data->mutex);
3982 void *data;
3988 data = genlmsg_put(mcast_skb, 0, 0, &hwsim_genl_family, 0,
3990 if (!data)
3996 genlmsg_end(mcast_skb, data);
4950 struct mac80211_hwsim_data *data;
4969 hw = ieee80211_alloc_hw_nm(sizeof(*data), ops, param->hwname);
4985 data = hw->priv;
4986 data->hw = hw;
4988 data->dev = device_create(hwsim_class, NULL, 0, hw, "hwsim%d", idx);
4989 if (IS_ERR(data->dev)) {
4992 PTR_ERR(data->dev));
4996 data->dev->driver = &mac80211_hwsim_driver.driver;
4997 err = device_bind_driver(data->dev);
5004 skb_queue_head_init(&data->pending);
5006 SET_IEEE80211_DEV(hw, data->dev);
5012 memcpy(data->addresses[0].addr, addr, ETH_ALEN);
5014 memcpy(data->addresses[1].addr, addr, ETH_ALEN);
5015 data->addresses[1].addr[0] |= 0x40;
5017 hw->wiphy->addresses = data->addresses;
5020 memcpy(data->addresses[0].addr, param->perm_addr, ETH_ALEN);
5022 memcpy(data->addresses[1].addr, param->perm_addr, ETH_ALEN);
5024 hw->wiphy->addresses = data->addresses;
5027 data->channels = param->channels;
5028 data->use_chanctx = param->use_chanctx;
5029 data->idx = idx;
5030 data->destroy_on_close = param->destroy_on_close;
5032 data->portid = info->snd_portid;
5036 data->if_limits[n_limits].max = 1;
5037 data->if_limits[n_limits].types = BIT(NL80211_IFTYPE_ADHOC);
5042 data->if_limits[n_limits].max = 2048;
5048 data->if_limits[n_limits].types =
5054 data->if_limits[n_limits].max = 1;
5055 data->if_limits[n_limits].types =
5060 if (data->use_chanctx) {
5064 data->if_combination.radar_detect_widths = 0;
5065 data->if_combination.num_different_channels = data->channels;
5067 data->if_combination.num_different_channels = 1;
5068 data->if_combination.radar_detect_widths =
5083 data->if_combination.max_interfaces = 0;
5085 data->if_combination.max_interfaces +=
5086 data->if_limits[i].max;
5088 data->if_combination.n_limits = n_limits;
5089 data->if_combination.limits = data->if_limits;
5096 if (data->if_combination.max_interfaces > 1) {
5097 hw->wiphy->iface_combinations = &data->if_combination;
5102 memcpy(data->ciphers, param->ciphers,
5104 hw->wiphy->cipher_suites = data->ciphers;
5111 data->rx_rssi = DEFAULT_RX_RSSI;
5113 INIT_DELAYED_WORK(&data->roc_start, hw_roc_start);
5114 INIT_DELAYED_WORK(&data->roc_done, hw_roc_done);
5115 INIT_DELAYED_WORK(&data->hw_scan, hw_scan_work);
5175 memcpy(data->channels_2ghz, hwsim_channels_2ghz,
5177 memcpy(data->channels_5ghz, hwsim_channels_5ghz,
5179 memcpy(data->channels_6ghz, hwsim_channels_6ghz,
5181 memcpy(data->channels_s1g, hwsim_channels_s1g,
5183 memcpy(data->rates, hwsim_rates, sizeof(hwsim_rates));
5186 struct ieee80211_supported_band *sband = &data->bands[band];
5192 sband->channels = data->channels_2ghz;
5194 sband->bitrates = data->rates;
5198 sband->channels = data->channels_5ghz;
5200 sband->bitrates = data->rates + 4;
5226 sband->channels = data->channels_6ghz;
5228 sband->bitrates = data->rates + 4;
5234 sband->channels = data->channels_s1g;
5263 data->group = 1;
5264 mutex_init(&data->mutex);
5266 data->netgroup = hwsim_net_get_netgroup(net);
5267 data->wmediumd = hwsim_net_get_wmediumd(net);
5282 data->regd = param->regd;
5294 for (i = 0; i < ARRAY_SIZE(data->link_data); i++) {
5295 hrtimer_init(&data->link_data[i].beacon_timer, CLOCK_MONOTONIC,
5297 data->link_data[i].beacon_timer.function =
5299 data->link_data[i].link_id = i;
5312 data->alpha2[0] = param->reg_alpha2[0];
5313 data->alpha2[1] = param->reg_alpha2[1];
5317 data->debugfs = debugfs_create_dir("hwsim", hw->wiphy->debugfsdir);
5318 debugfs_create_file("ps", 0666, data->debugfs, data, &hwsim_fops_ps);
5319 debugfs_create_file("group", 0666, data->debugfs, data,
5321 debugfs_create_file("rx_rssi", 0666, data->debugfs, data,
5323 if (!data->use_chanctx)
5325 data->debugfs,
5326 data, &hwsim_simulate_radar);
5329 data->pmsr_capa = *param->pmsr_capa;
5330 hw->wiphy->pmsr_capa = &data->pmsr_capa;
5334 err = rhashtable_insert_fast(&hwsim_radios_rht, &data->rht,
5346 list_add_tail(&data->list, &hwsim_radios);
5355 debugfs_remove_recursive(data->debugfs);
5356 ieee80211_unregister_hw(data->hw);
5358 device_release_driver(data->dev);
5360 device_unregister(data->dev);
5371 void *data;
5378 data = genlmsg_put(skb, 0, 0, &hwsim_genl_family, 0,
5380 if (!data)
5392 genlmsg_end(skb, data);
5402 static void mac80211_hwsim_del_radio(struct mac80211_hwsim_data *data,
5406 hwsim_mcast_del_radio(data->idx, hwname, info);
5407 debugfs_remove_recursive(data->debugfs);
5408 ieee80211_unregister_hw(data->hw);
5409 device_release_driver(data->dev);
5410 device_unregister(data->dev);
5411 ieee80211_free_hw(data->hw);
5415 struct mac80211_hwsim_data *data,
5431 if (data->alpha2[0] && data->alpha2[1])
5432 param.reg_alpha2 = data->alpha2;
5434 param.reg_strict = !!(data->hw->wiphy->regulatory_flags &
5436 param.p2p_device = !!(data->hw->wiphy->interface_modes &
5438 param.use_chanctx = data->use_chanctx;
5439 param.regd = data->regd;
5440 param.channels = data->channels;
5441 param.hwname = wiphy_name(data->hw->wiphy);
5442 param.pmsr_capa = &data->pmsr_capa;
5444 res = append_radio_msg(skb, data->idx, &param);
5458 struct mac80211_hwsim_data *data;
5461 while ((data = list_first_entry_or_null(&hwsim_radios,
5464 list_del(&data->list);
5466 mac80211_hwsim_del_radio(data, wiphy_name(data->hw->wiphy),
5496 struct mac80211_hwsim_data *data;
5501 list_for_each_entry(data, &hwsim_radios, list) {
5502 if (data->netgroup == hwsim_net_get_netgroup(net))
5503 data->wmediumd = portid;
5589 hdr = (struct ieee80211_hdr *) skb->data;
5637 /* Copy the data */
5705 hdr = (void *)skb->data;
5725 struct mac80211_hwsim_data *data;
5729 list_for_each_entry(data, &hwsim_radios, list)
5730 chans = max(chans, data->channels);
5993 struct mac80211_hwsim_data *data;
6009 list_for_each_entry(data, &hwsim_radios, list) {
6011 if (data->idx != idx)
6015 strcmp(hwname, wiphy_name(data->hw->wiphy)))
6019 if (!net_eq(wiphy_net(data->hw->wiphy), genl_info_net(info)))
6022 list_del(&data->list);
6023 rhashtable_remove_fast(&hwsim_radios_rht, &data->rht,
6027 mac80211_hwsim_del_radio(data, wiphy_name(data->hw->wiphy),
6040 struct mac80211_hwsim_data *data;
6049 list_for_each_entry(data, &hwsim_radios, list) {
6050 if (data->idx != idx)
6053 if (!net_eq(wiphy_net(data->hw->wiphy), genl_info_net(info)))
6062 res = mac80211_hwsim_get_radio(skb, data, info->snd_portid,
6083 struct mac80211_hwsim_data *data = NULL;
6093 list_for_each_entry(data, &hwsim_radios, list) {
6094 if (data->idx <= last_idx)
6097 if (!net_eq(wiphy_net(data->hw->wiphy), sock_net(skb->sk)))
6100 res = mac80211_hwsim_get_radio(skb, data,
6107 last_idx = data->idx;
6264 struct mac80211_hwsim_data *data, *tmp;
6268 list_for_each_entry_safe(data, tmp, &hwsim_radios, list) {
6269 if (!net_eq(wiphy_net(data->hw->wiphy), net))
6273 if (data->netgroup == hwsim_net_get_netgroup(&init_net))
6276 list_move(&data->list, &list);
6277 rhashtable_remove_fast(&hwsim_radios_rht, &data->rht,
6283 list_for_each_entry_safe(data, tmp, &list, list) {
6284 list_del(&data->list);
6285 mac80211_hwsim_del_radio(data,
6286 wiphy_name(data->hw->wiphy),
6379 skb->data = skb->head;