Lines Matching defs:hwsim
2074 struct mac80211_hwsim_data *hwsim = hw->priv;
2076 if (idx < 0 || idx >= ARRAY_SIZE(hwsim->survey_data))
2079 mutex_lock(&hwsim->mutex);
2080 survey->channel = hwsim->survey_data[idx].channel;
2082 mutex_unlock(&hwsim->mutex);
2097 jiffies_to_msecs(hwsim->survey_data[idx].end -
2098 hwsim->survey_data[idx].start);
2101 mutex_unlock(&hwsim->mutex);
2139 struct mac80211_hwsim_data *hwsim = hw->priv;
2157 return hwsim_fops_ps_write(hwsim, ps);
2163 if (nla_put_u32(skb, HWSIM_TM_ATTR_PS, hwsim->ps))
2219 struct mac80211_hwsim_data *hwsim =
2221 struct cfg80211_scan_request *req = hwsim->hw_scan_request;
2224 mutex_lock(&hwsim->mutex);
2225 if (hwsim->scan_chan_idx >= req->n_channels) {
2230 wiphy_dbg(hwsim->hw->wiphy, "hw scan complete\n");
2231 ieee80211_scan_completed(hwsim->hw, &info);
2232 hwsim->hw_scan_request = NULL;
2233 hwsim->hw_scan_vif = NULL;
2234 hwsim->tmp_chan = NULL;
2235 mutex_unlock(&hwsim->mutex);
2236 mac80211_hwsim_config_mac_nl(hwsim->hw, hwsim->scan_addr,
2241 wiphy_dbg(hwsim->hw->wiphy, "hw scan %d MHz\n",
2242 req->channels[hwsim->scan_chan_idx]->center_freq);
2244 hwsim->tmp_chan = req->channels[hwsim->scan_chan_idx];
2245 if (hwsim->tmp_chan->flags & (IEEE80211_CHAN_NO_IR |
2256 probe = ieee80211_probereq_get(hwsim->hw,
2257 hwsim->scan_addr,
2272 if (!ieee80211_tx_prepare_skb(hwsim->hw,
2273 hwsim->hw_scan_vif,
2275 hwsim->tmp_chan->band,
2283 mac80211_hwsim_tx_frame(hwsim->hw, probe,
2284 hwsim->tmp_chan);
2289 ieee80211_queue_delayed_work(hwsim->hw, &hwsim->hw_scan,
2291 hwsim->survey_data[hwsim->scan_chan_idx].channel = hwsim->tmp_chan;
2292 hwsim->survey_data[hwsim->scan_chan_idx].start = jiffies;
2293 hwsim->survey_data[hwsim->scan_chan_idx].end =
2295 hwsim->scan_chan_idx++;
2296 mutex_unlock(&hwsim->mutex);
2303 struct mac80211_hwsim_data *hwsim = hw->priv;
2306 mutex_lock(&hwsim->mutex);
2307 if (WARN_ON(hwsim->tmp_chan || hwsim->hw_scan_request)) {
2308 mutex_unlock(&hwsim->mutex);
2311 hwsim->hw_scan_request = req;
2312 hwsim->hw_scan_vif = vif;
2313 hwsim->scan_chan_idx = 0;
2315 get_random_mask_addr(hwsim->scan_addr,
2319 memcpy(hwsim->scan_addr, vif->addr, ETH_ALEN);
2320 memset(hwsim->survey_data, 0, sizeof(hwsim->survey_data));
2321 mutex_unlock(&hwsim->mutex);
2323 mac80211_hwsim_config_mac_nl(hw, hwsim->scan_addr, true);
2324 wiphy_dbg(hw->wiphy, "hwsim hw_scan request\n");
2326 ieee80211_queue_delayed_work(hwsim->hw, &hwsim->hw_scan, 0);
2334 struct mac80211_hwsim_data *hwsim = hw->priv;
2339 wiphy_dbg(hw->wiphy, "hwsim cancel_hw_scan\n");
2341 cancel_delayed_work_sync(&hwsim->hw_scan);
2343 mutex_lock(&hwsim->mutex);
2344 ieee80211_scan_completed(hwsim->hw, &info);
2345 hwsim->tmp_chan = NULL;
2346 hwsim->hw_scan_request = NULL;
2347 hwsim->hw_scan_vif = NULL;
2348 mutex_unlock(&hwsim->mutex);
2355 struct mac80211_hwsim_data *hwsim = hw->priv;
2357 mutex_lock(&hwsim->mutex);
2359 if (hwsim->scanning) {
2360 pr_debug("two hwsim sw_scans detected!\n");
2364 pr_debug("hwsim sw_scan request, prepping stuff\n");
2366 memcpy(hwsim->scan_addr, mac_addr, ETH_ALEN);
2367 mac80211_hwsim_config_mac_nl(hw, hwsim->scan_addr, true);
2368 hwsim->scanning = true;
2369 memset(hwsim->survey_data, 0, sizeof(hwsim->survey_data));
2372 mutex_unlock(&hwsim->mutex);
2378 struct mac80211_hwsim_data *hwsim = hw->priv;
2380 mutex_lock(&hwsim->mutex);
2382 pr_debug("hwsim sw_scan_complete\n");
2383 hwsim->scanning = false;
2384 mac80211_hwsim_config_mac_nl(hw, hwsim->scan_addr, false);
2385 eth_zero_addr(hwsim->scan_addr);
2387 mutex_unlock(&hwsim->mutex);
2392 struct mac80211_hwsim_data *hwsim =
2395 mutex_lock(&hwsim->mutex);
2397 wiphy_dbg(hwsim->hw->wiphy, "hwsim ROC begins\n");
2398 hwsim->tmp_chan = hwsim->roc_chan;
2399 ieee80211_ready_on_channel(hwsim->hw);
2401 ieee80211_queue_delayed_work(hwsim->hw, &hwsim->roc_done,
2402 msecs_to_jiffies(hwsim->roc_duration));
2404 mutex_unlock(&hwsim->mutex);
2409 struct mac80211_hwsim_data *hwsim =
2412 mutex_lock(&hwsim->mutex);
2413 ieee80211_remain_on_channel_expired(hwsim->hw);
2414 hwsim->tmp_chan = NULL;
2415 mutex_unlock(&hwsim->mutex);
2417 wiphy_dbg(hwsim->hw->wiphy, "hwsim ROC expired\n");
2426 struct mac80211_hwsim_data *hwsim = hw->priv;
2428 mutex_lock(&hwsim->mutex);
2429 if (WARN_ON(hwsim->tmp_chan || hwsim->hw_scan_request)) {
2430 mutex_unlock(&hwsim->mutex);
2434 hwsim->roc_chan = chan;
2435 hwsim->roc_duration = duration;
2436 mutex_unlock(&hwsim->mutex);
2438 wiphy_dbg(hw->wiphy, "hwsim ROC (%d MHz, %d ms)\n",
2440 ieee80211_queue_delayed_work(hw, &hwsim->roc_start, HZ/50);
2448 struct mac80211_hwsim_data *hwsim = hw->priv;
2450 cancel_delayed_work_sync(&hwsim->roc_start);
2451 cancel_delayed_work_sync(&hwsim->roc_done);
2453 mutex_lock(&hwsim->mutex);
2454 hwsim->tmp_chan = NULL;
2455 mutex_unlock(&hwsim->mutex);
2457 wiphy_dbg(hw->wiphy, "hwsim ROC canceled\n");
2465 struct mac80211_hwsim_data *hwsim = hw->priv;
2467 mutex_lock(&hwsim->mutex);
2468 hwsim->chanctx = ctx;
2469 mutex_unlock(&hwsim->mutex);
2481 struct mac80211_hwsim_data *hwsim = hw->priv;
2483 mutex_lock(&hwsim->mutex);
2484 hwsim->chanctx = NULL;
2485 mutex_unlock(&hwsim->mutex);
2498 struct mac80211_hwsim_data *hwsim = hw->priv;
2500 mutex_lock(&hwsim->mutex);
2501 hwsim->chanctx = ctx;
2502 mutex_unlock(&hwsim->mutex);
3017 data->dev = device_create(hwsim_class, NULL, 0, hw, "hwsim%d", idx);
3315 data->debugfs = debugfs_create_dir("hwsim", hw->wiphy->debugfsdir);
4227 pr_err_ratelimited("hwsim: genlmsg_parse returned %d\n", err);
4241 pr_err_ratelimited("hwsim: invalid cmd: %d\n", gnlh->cmd);
4547 hwsim_mon = alloc_netdev(0, "hwsim%d", NET_NAME_UNKNOWN,