Lines Matching refs:wil

267 	struct wil6210_priv *wil = vif_to_wil(vif);  in wil_cid_fill_sinfo()  local
276 struct wil_net_stats *stats = &wil->sta[cid].stats; in wil_cid_fill_sinfo()
281 rc = wmi_call(wil, WMI_NOTIFY_REQ_CMDID, vif->mid, &cmd, sizeof(cmd), in wil_cid_fill_sinfo()
286 wil_dbg_wmi(wil, "Link status for CID %d MID %d: {\n" in wil_cid_fill_sinfo()
303 sinfo->generation = wil->sinfo_gen; in wil_cid_fill_sinfo()
327 wil->fw_capabilities)) in wil_cid_fill_sinfo()
341 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_get_station() local
344 int cid = wil_find_cid(wil, vif->mid, mac); in wil_cfg80211_get_station()
346 wil_dbg_misc(wil, "get_station: %pM CID %d MID %d\n", mac, cid, in wil_cfg80211_get_station()
359 static int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx) in wil_find_cid_by_idx() argument
363 for (i = 0; i < ARRAY_SIZE(wil->sta); i++) { in wil_find_cid_by_idx()
364 if (wil->sta[i].status == wil_sta_unused) in wil_find_cid_by_idx()
366 if (wil->sta[i].mid != mid) in wil_find_cid_by_idx()
381 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_dump_station() local
383 int cid = wil_find_cid_by_idx(wil, vif->mid, idx); in wil_cfg80211_dump_station()
388 ether_addr_copy(mac, wil->sta[cid].addr); in wil_cfg80211_dump_station()
389 wil_dbg_misc(wil, "dump_station: %pM CID %d MID %d\n", mac, cid, in wil_cfg80211_dump_station()
400 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_start_p2p_device() local
402 wil_dbg_misc(wil, "start_p2p_device: entered\n"); in wil_cfg80211_start_p2p_device()
403 wil->p2p_dev_started = 1; in wil_cfg80211_start_p2p_device()
410 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_stop_p2p_device() local
412 if (!wil->p2p_dev_started) in wil_cfg80211_stop_p2p_device()
415 wil_dbg_misc(wil, "stop_p2p_device: entered\n"); in wil_cfg80211_stop_p2p_device()
416 mutex_lock(&wil->mutex); in wil_cfg80211_stop_p2p_device()
417 mutex_lock(&wil->vif_mutex); in wil_cfg80211_stop_p2p_device()
418 wil_p2p_stop_radio_operations(wil); in wil_cfg80211_stop_p2p_device()
419 wil->p2p_dev_started = 0; in wil_cfg80211_stop_p2p_device()
420 mutex_unlock(&wil->vif_mutex); in wil_cfg80211_stop_p2p_device()
421 mutex_unlock(&wil->mutex); in wil_cfg80211_stop_p2p_device()
424 static int wil_cfg80211_validate_add_iface(struct wil6210_priv *wil, in wil_cfg80211_validate_add_iface() argument
433 for (i = 0; i < wil->max_vifs; i++) { in wil_cfg80211_validate_add_iface()
434 if (wil->vifs[i]) { in wil_cfg80211_validate_add_iface()
435 wdev = vif_to_wdev(wil->vifs[i]); in wil_cfg80211_validate_add_iface()
440 return cfg80211_check_combinations(wil->wiphy, &params); in wil_cfg80211_validate_add_iface()
443 static int wil_cfg80211_validate_change_iface(struct wil6210_priv *wil, in wil_cfg80211_validate_change_iface() argument
454 for (i = 0; i < wil->max_vifs; i++) { in wil_cfg80211_validate_change_iface()
455 struct wil6210_vif *vif_pos = wil->vifs[i]; in wil_cfg80211_validate_change_iface()
466 ret = cfg80211_check_combinations(wil->wiphy, &params); in wil_cfg80211_validate_change_iface()
477 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_add_iface() local
478 struct net_device *ndev_main = wil->main_ndev, *ndev; in wil_cfg80211_add_iface()
483 wil_dbg_misc(wil, "add_iface, type %d\n", type); in wil_cfg80211_add_iface()
490 if (wil->p2p_wdev) { in wil_cfg80211_add_iface()
491 wil_err(wil, "P2P_DEVICE interface already created\n"); in wil_cfg80211_add_iface()
504 wil->p2p_wdev = p2p_wdev; in wil_cfg80211_add_iface()
509 if (!wil->wiphy->n_iface_combinations) { in wil_cfg80211_add_iface()
510 wil_err(wil, "virtual interfaces not supported\n"); in wil_cfg80211_add_iface()
514 rc = wil_cfg80211_validate_add_iface(wil, type); in wil_cfg80211_add_iface()
516 wil_err(wil, "iface validation failed, err=%d\n", rc); in wil_cfg80211_add_iface()
520 vif = wil_vif_alloc(wil, name, name_assign_type, type); in wil_cfg80211_add_iface()
536 rc = wil_vif_add(wil, vif); in wil_cfg80211_add_iface()
540 wil_info(wil, "added VIF, mid %d iftype %d MAC %pM\n", in wil_cfg80211_add_iface()
550 struct wil6210_priv *wil = vif_to_wil(vif); in wil_vif_prepare_stop() local
562 wil_info(wil, "failed to stop AP, status %d\n", in wil_vif_prepare_stop()
576 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_del_iface() local
577 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_cfg80211_del_iface()
580 wil_dbg_misc(wil, "del_iface\n"); in wil_cfg80211_del_iface()
583 if (wdev != wil->p2p_wdev) { in wil_cfg80211_del_iface()
584 wil_err(wil, "delete of incorrect interface 0x%p\n", in wil_cfg80211_del_iface()
590 wil_p2p_wdev_free(wil); in wil_cfg80211_del_iface()
595 wil_err(wil, "cannot remove the main interface\n"); in wil_cfg80211_del_iface()
603 wil_info(wil, "deleted VIF, mid %d iftype %d MAC %pM\n", in wil_cfg80211_del_iface()
606 wil_vif_remove(wil, vif->mid); in wil_cfg80211_del_iface()
616 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_change_iface() local
622 wil_dbg_misc(wil, "change_iface: type=%d\n", type); in wil_cfg80211_change_iface()
625 rc = wil_cfg80211_validate_change_iface(wil, vif, type); in wil_cfg80211_change_iface()
627 wil_err(wil, "iface validation failed, err=%d\n", rc); in wil_cfg80211_change_iface()
635 if (!wil_has_other_active_ifaces(wil, ndev, true, false) && in wil_cfg80211_change_iface()
636 netif_running(ndev) && !wil_is_recovery_blocked(wil)) { in wil_cfg80211_change_iface()
637 wil_dbg_misc(wil, "interface is up. resetting...\n"); in wil_cfg80211_change_iface()
638 mutex_lock(&wil->mutex); in wil_cfg80211_change_iface()
639 __wil_down(wil); in wil_cfg80211_change_iface()
640 rc = __wil_up(wil); in wil_cfg80211_change_iface()
641 mutex_unlock(&wil->mutex); in wil_cfg80211_change_iface()
656 wil->monitor_flags = params->flags; in wil_cfg80211_change_iface()
662 if (vif->mid != 0 && wil_has_active_ifaces(wil, true, false)) { in wil_cfg80211_change_iface()
665 rc = wmi_port_delete(wil, vif->mid); in wil_cfg80211_change_iface()
668 rc = wmi_port_allocate(wil, vif->mid, ndev->dev_addr, type); in wil_cfg80211_change_iface()
680 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_scan() local
682 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_cfg80211_scan()
690 wil_dbg_misc(wil, "scan: wdev=0x%p iftype=%d\n", wdev, wdev->iftype); in wil_cfg80211_scan()
704 if (test_bit(wil_status_dontscan, wil->status)) { in wil_cfg80211_scan()
705 wil_err(wil, "Can't scan now\n"); in wil_cfg80211_scan()
709 mutex_lock(&wil->mutex); in wil_cfg80211_scan()
711 mutex_lock(&wil->vif_mutex); in wil_cfg80211_scan()
713 wil_err(wil, "Already scanning\n"); in wil_cfg80211_scan()
714 mutex_unlock(&wil->vif_mutex); in wil_cfg80211_scan()
718 mutex_unlock(&wil->vif_mutex); in wil_cfg80211_scan()
721 if (!wil->p2p_dev_started) { in wil_cfg80211_scan()
722 wil_err(wil, "P2P search requested on stopped P2P device\n"); in wil_cfg80211_scan()
730 wil->radio_wdev = wdev; in wil_cfg80211_scan()
734 wil->radio_wdev = in wil_cfg80211_scan()
735 wil->main_ndev->ieee80211_ptr; in wil_cfg80211_scan()
744 wil_dbg_misc(wil, "Start scan_request 0x%p\n", request); in wil_cfg80211_scan()
745 wil_dbg_misc(wil, "SSID count: %d", request->n_ssids); in wil_cfg80211_scan()
748 wil_dbg_misc(wil, "SSID[%d]", i); in wil_cfg80211_scan()
761 wil_err(wil, "set SSID for scan request failed: %d\n", rc); in wil_cfg80211_scan()
776 wil_err(wil, in wil_cfg80211_scan()
783 wil_dbg_misc(wil, "Scan for ch %d : %d MHz\n", ch, in wil_cfg80211_scan()
791 wil_dbg_misc(wil, "Scan has no IE's\n"); in wil_cfg80211_scan()
798 if (wil->discovery_mode && cmd.cmd.scan_type == WMI_ACTIVE_SCAN) { in wil_cfg80211_scan()
800 wil_dbg_misc(wil, "active scan with discovery_mode=1\n"); in wil_cfg80211_scan()
804 wil->radio_wdev = wdev; in wil_cfg80211_scan()
805 rc = wmi_send(wil, WMI_START_SCAN_CMDID, vif->mid, in wil_cfg80211_scan()
813 wil->radio_wdev = wil->main_ndev->ieee80211_ptr; in wil_cfg80211_scan()
817 mutex_unlock(&wil->mutex); in wil_cfg80211_scan()
824 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_abort_scan() local
825 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_cfg80211_abort_scan()
827 wil_dbg_misc(wil, "wdev=0x%p iftype=%d\n", wdev, wdev->iftype); in wil_cfg80211_abort_scan()
829 mutex_lock(&wil->mutex); in wil_cfg80211_abort_scan()
830 mutex_lock(&wil->vif_mutex); in wil_cfg80211_abort_scan()
836 wil_dbg_misc(wil, "abort scan was called on the wrong iface\n"); in wil_cfg80211_abort_scan()
840 if (wdev == wil->p2p_wdev && wil->radio_wdev == wil->p2p_wdev) in wil_cfg80211_abort_scan()
841 wil_p2p_stop_radio_operations(wil); in wil_cfg80211_abort_scan()
846 mutex_unlock(&wil->vif_mutex); in wil_cfg80211_abort_scan()
847 mutex_unlock(&wil->mutex); in wil_cfg80211_abort_scan()
850 static void wil_print_crypto(struct wil6210_priv *wil, in wil_print_crypto() argument
855 wil_dbg_misc(wil, "WPA versions: 0x%08x cipher group 0x%08x\n", in wil_print_crypto()
857 wil_dbg_misc(wil, "Pairwise ciphers [%d] {\n", c->n_ciphers_pairwise); in wil_print_crypto()
860 wil_dbg_misc(wil, " [%d] = 0x%08x\n", i, in wil_print_crypto()
862 wil_dbg_misc(wil, "}\n"); in wil_print_crypto()
863 wil_dbg_misc(wil, "AKM suites [%d] {\n", c->n_akm_suites); in wil_print_crypto()
866 wil_dbg_misc(wil, " [%d] = 0x%08x\n", i, in wil_print_crypto()
868 wil_dbg_misc(wil, "}\n"); in wil_print_crypto()
869 wil_dbg_misc(wil, "Control port : %d, eth_type 0x%04x no_encrypt %d\n", in wil_print_crypto()
874 static void wil_print_connect_params(struct wil6210_priv *wil, in wil_print_connect_params() argument
877 wil_info(wil, "Connecting to:\n"); in wil_print_connect_params()
879 wil_info(wil, " Channel: %d freq %d\n", in wil_print_connect_params()
883 wil_info(wil, " BSSID: %pM\n", sme->bssid); in wil_print_connect_params()
887 wil_info(wil, " Privacy: %s\n", sme->privacy ? "secure" : "open"); in wil_print_connect_params()
888 wil_info(wil, " PBSS: %d\n", sme->pbss); in wil_print_connect_params()
889 wil_print_crypto(wil, &sme->crypto); in wil_print_connect_params()
896 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_connect() local
906 wil_dbg_misc(wil, "connect, mid=%d\n", vif->mid); in wil_cfg80211_connect()
907 wil_print_connect_params(wil, sme); in wil_cfg80211_connect()
914 wil_err(wil, "IE too large (%td bytes)\n", sme->ie_len); in wil_cfg80211_connect()
922 wil_info(wil, "WSC connection\n"); in wil_cfg80211_connect()
931 wil_err(wil, "Unable to find BSS\n"); in wil_cfg80211_connect()
937 wil_err(wil, "No SSID\n"); in wil_cfg80211_connect()
949 wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(PTK) failed\n"); in wil_cfg80211_connect()
955 wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(GTK) failed\n"); in wil_cfg80211_connect()
978 wil_err(wil, "Unsupported BSS type, capability= 0x%04x\n", in wil_cfg80211_connect()
1004 wil_err(wil, "BSS at unknown frequency %dMhz\n", in wil_cfg80211_connect()
1016 rc = wmi_send(wil, WMI_CONNECT_CMDID, vif->mid, &conn, sizeof(conn)); in wil_cfg80211_connect()
1019 if (!wil_has_other_active_ifaces(wil, ndev, false, true)) in wil_cfg80211_connect()
1020 wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); in wil_cfg80211_connect()
1040 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_disconnect() local
1043 wil_dbg_misc(wil, "disconnect: reason=%d, mid=%d\n", in wil_cfg80211_disconnect()
1048 wil_err(wil, "Disconnect was called while disconnected\n"); in wil_cfg80211_disconnect()
1053 rc = wmi_call(wil, WMI_DISCONNECT_CMDID, vif->mid, NULL, 0, in wil_cfg80211_disconnect()
1057 wil_err(wil, "disconnect error %d\n", rc); in wil_cfg80211_disconnect()
1064 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_set_wiphy_params() local
1074 rc = wmi_set_mgmt_retry(wil, wiphy->retry_short); in wil_cfg80211_set_wiphy_params()
1088 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_mgmt_tx() local
1089 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_cfg80211_mgmt_tx()
1093 wil_dbg_misc(wil, "mgmt_tx: channel %d offchan %d, wait %d\n", in wil_cfg80211_mgmt_tx()
1104 wil_err(wil, "invalid channel\n"); in wil_cfg80211_mgmt_tx()
1109 wil_dbg_misc(wil, in wil_cfg80211_mgmt_tx()
1116 wil_dbg_misc(wil, in wil_cfg80211_mgmt_tx()
1123 wil_err(wil, in wil_cfg80211_mgmt_tx()
1144 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_set_channel() local
1146 wil->monitor_chandef = *chandef; in wil_cfg80211_set_channel()
1154 struct wil6210_priv *wil = wdev_to_wil(wdev); in wil_detect_key_usage() local
1171 wil_err(wil, "Can't determine GTK type\n"); in wil_detect_key_usage()
1176 wil_dbg_misc(wil, "detect_key_usage: -> %s\n", key_usage_str[rc]); in wil_detect_key_usage()
1182 wil_find_sta_by_key_usage(struct wil6210_priv *wil, u8 mid, in wil_find_sta_by_key_usage() argument
1192 cid = wil_find_cid(wil, mid, mac_addr); in wil_find_sta_by_key_usage()
1194 cid = wil_find_cid_by_idx(wil, mid, 0); in wil_find_sta_by_key_usage()
1196 wil_err(wil, "No CID for %pM %s\n", mac_addr, in wil_find_sta_by_key_usage()
1201 return &wil->sta[cid]; in wil_find_sta_by_key_usage()
1272 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_add_key() local
1275 struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid, in wil_cfg80211_add_key()
1280 wil_err(wil, "NULL params\n"); in wil_cfg80211_add_key()
1284 wil_dbg_misc(wil, "add_key: %pM %s[%d] PN %*phN\n", in wil_cfg80211_add_key()
1289 wil_err(wil, "Not connected, %pM %s[%d] PN %*phN\n", in wil_cfg80211_add_key()
1298 wil_err(wil, in wil_cfg80211_add_key()
1320 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_del_key() local
1323 struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid, in wil_cfg80211_del_key()
1327 wil_dbg_misc(wil, "del_key: %pM %s[%d]\n", mac_addr, in wil_cfg80211_del_key()
1331 wil_info(wil, "Not connected, %pM %s[%d]\n", in wil_cfg80211_del_key()
1346 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_set_default_key() local
1348 wil_dbg_misc(wil, "set_default_key: entered\n"); in wil_cfg80211_set_default_key()
1358 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_remain_on_channel() local
1361 wil_dbg_misc(wil, in wil_remain_on_channel()
1365 rc = wil_p2p_listen(wil, wdev, duration, chan, cookie); in wil_remain_on_channel()
1373 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cancel_remain_on_channel() local
1374 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_cancel_remain_on_channel()
1376 wil_dbg_misc(wil, "cancel_remain_on_channel\n"); in wil_cancel_remain_on_channel()
1523 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in _wil_cfg80211_start_ap() local
1533 wil_dbg_misc(wil, "start_ap: mid=%d, is_go=%d\n", vif->mid, is_go); in _wil_cfg80211_start_ap()
1535 wil_err(wil, "P2P GO must be in PBSS\n"); in _wil_cfg80211_start_ap()
1539 wil_set_recovery_state(wil, fw_recovery_idle); in _wil_cfg80211_start_ap()
1541 mutex_lock(&wil->mutex); in _wil_cfg80211_start_ap()
1543 if (!wil_has_other_active_ifaces(wil, ndev, true, false)) { in _wil_cfg80211_start_ap()
1544 __wil_down(wil); in _wil_cfg80211_start_ap()
1545 rc = __wil_up(wil); in _wil_cfg80211_start_ap()
1564 if (!wil_has_other_active_ifaces(wil, ndev, false, true)) in _wil_cfg80211_start_ap()
1565 wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); in _wil_cfg80211_start_ap()
1581 if (!wil_has_other_active_ifaces(wil, ndev, false, true)) in _wil_cfg80211_start_ap()
1582 wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); in _wil_cfg80211_start_ap()
1584 mutex_unlock(&wil->mutex); in _wil_cfg80211_start_ap()
1592 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_change_beacon() local
1597 wil_dbg_misc(wil, "change_beacon, mid=%d\n", vif->mid); in wil_cfg80211_change_beacon()
1609 wil_dbg_misc(wil, "privacy changed %d=>%d. Restarting AP\n", in wil_cfg80211_change_beacon()
1630 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_start_ap() local
1636 wil_dbg_misc(wil, "start_ap\n"); in wil_cfg80211_start_ap()
1639 wil_err(wil, "AP: No channel???\n"); in wil_cfg80211_start_ap()
1657 wil_err(wil, "AP: Invalid hidden SSID %d\n", info->hidden_ssid); in wil_cfg80211_start_ap()
1660 wil_dbg_misc(wil, "AP on Channel %d %d MHz, %s\n", channel->hw_value, in wil_cfg80211_start_ap()
1662 wil_dbg_misc(wil, "Privacy: %d auth_type %d\n", in wil_cfg80211_start_ap()
1664 wil_dbg_misc(wil, "Hidden SSID mode: %d\n", in wil_cfg80211_start_ap()
1666 wil_dbg_misc(wil, "BI %d DTIM %d\n", info->beacon_interval, in wil_cfg80211_start_ap()
1668 wil_dbg_misc(wil, "PBSS %d\n", info->pbss); in wil_cfg80211_start_ap()
1672 wil_print_crypto(wil, crypto); in wil_cfg80211_start_ap()
1685 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_stop_ap() local
1689 wil_dbg_misc(wil, "stop_ap, mid=%d\n", vif->mid); in wil_cfg80211_stop_ap()
1692 last = !wil_has_other_active_ifaces(wil, ndev, false, true); in wil_cfg80211_stop_ap()
1694 wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); in wil_cfg80211_stop_ap()
1695 wil_set_recovery_state(wil, fw_recovery_idle); in wil_cfg80211_stop_ap()
1696 set_bit(wil_status_resetting, wil->status); in wil_cfg80211_stop_ap()
1699 mutex_lock(&wil->mutex); in wil_cfg80211_stop_ap()
1704 __wil_down(wil); in wil_cfg80211_stop_ap()
1708 mutex_unlock(&wil->mutex); in wil_cfg80211_stop_ap()
1719 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_add_station() local
1721 wil_dbg_misc(wil, "add station %pM aid %d mid %d\n", in wil_cfg80211_add_station()
1725 wil_err(wil, "not supported with AP SME enabled\n"); in wil_cfg80211_add_station()
1730 wil_err(wil, "invalid aid\n"); in wil_cfg80211_add_station()
1742 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_del_station() local
1744 wil_dbg_misc(wil, "del_station: %pM, reason=%d mid=%d\n", in wil_cfg80211_del_station()
1747 mutex_lock(&wil->mutex); in wil_cfg80211_del_station()
1749 mutex_unlock(&wil->mutex); in wil_cfg80211_del_station()
1760 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_change_station() local
1765 wil_dbg_misc(wil, "change station %pM mask 0x%x set 0x%x mid %d\n", in wil_cfg80211_change_station()
1770 wil_dbg_misc(wil, "not supported with AP SME enabled\n"); in wil_cfg80211_change_station()
1777 cid = wil_find_cid(wil, vif->mid, mac); in wil_cfg80211_change_station()
1779 wil_err(wil, "station not found\n"); in wil_cfg80211_change_station()
1783 for (i = 0; i < ARRAY_SIZE(wil->ring2cid_tid); i++) in wil_cfg80211_change_station()
1784 if (wil->ring2cid_tid[i][0] == cid) { in wil_cfg80211_change_station()
1785 txdata = &wil->ring_tx_data[i]; in wil_cfg80211_change_station()
1790 wil_err(wil, "ring data not found\n"); in wil_cfg80211_change_station()
1796 wil_dbg_misc(wil, "cid %d ring %d authorize %d\n", cid, i, in wil_cfg80211_change_station()
1803 static void wil_probe_client_handle(struct wil6210_priv *wil, in wil_probe_client_handle() argument
1808 struct wil_sta_info *sta = &wil->sta[req->cid]; in wil_probe_client_handle()
1838 struct wil6210_priv *wil = vif_to_wil(vif); in wil_probe_client_worker() local
1845 wil_probe_client_handle(wil, vif, req); in wil_probe_client_worker()
1853 struct wil6210_priv *wil = vif_to_wil(vif); in wil_probe_client_flush() local
1855 wil_dbg_misc(wil, "probe_client_flush\n"); in wil_probe_client_flush()
1871 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_probe_client() local
1874 int cid = wil_find_cid(wil, vif->mid, peer); in wil_cfg80211_probe_client()
1876 wil_dbg_misc(wil, "probe_client: %pM => CID %d MID %d\n", in wil_cfg80211_probe_client()
1894 queue_work(wil->wq_service, &vif->probe_client_worker); in wil_cfg80211_probe_client()
1902 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_change_bss() local
1906 wil_dbg_misc(wil, "change_bss: ap_isolate MID %d, %d => %d\n", in wil_cfg80211_change_bss()
1918 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_set_power_mgmt() local
1921 wil_dbg_misc(wil, "enabled=%d, timeout=%d\n", in wil_cfg80211_set_power_mgmt()
1929 return wil_ps_update(wil, ps_profile); in wil_cfg80211_set_power_mgmt()
1935 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_suspend() local
1940 if (test_bit(wil_status_suspended, wil->status)) { in wil_cfg80211_suspend()
1941 wil_dbg_pm(wil, "trying to suspend while suspended\n"); in wil_cfg80211_suspend()
1945 rc = wil_can_suspend(wil, false); in wil_cfg80211_suspend()
1949 wil_dbg_pm(wil, "suspending\n"); in wil_cfg80211_suspend()
1951 mutex_lock(&wil->mutex); in wil_cfg80211_suspend()
1952 mutex_lock(&wil->vif_mutex); in wil_cfg80211_suspend()
1953 wil_p2p_stop_radio_operations(wil); in wil_cfg80211_suspend()
1954 wil_abort_scan_all_vifs(wil, true); in wil_cfg80211_suspend()
1955 mutex_unlock(&wil->vif_mutex); in wil_cfg80211_suspend()
1956 mutex_unlock(&wil->mutex); in wil_cfg80211_suspend()
1964 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_resume() local
1966 wil_dbg_pm(wil, "resuming\n"); in wil_cfg80211_resume()
1976 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_sched_scan_start() local
1983 wil_dbg_misc(wil, in wil_cfg80211_sched_scan_start()
1987 wil_dbg_misc(wil, "SSID[%d]:", i); in wil_cfg80211_sched_scan_start()
1992 wil_dbg_misc(wil, "channels:"); in wil_cfg80211_sched_scan_start()
1994 wil_dbg_misc(wil, " %d%s", request->channels[i]->hw_value, in wil_cfg80211_sched_scan_start()
1996 wil_dbg_misc(wil, "n_match_sets %d, min_rssi_thold %d, delay %d\n", in wil_cfg80211_sched_scan_start()
2002 wil_dbg_misc(wil, "MATCHSET[%d]: rssi_thold %d\n", in wil_cfg80211_sched_scan_start()
2008 wil_dbg_misc(wil, "n_scan_plans %d\n", request->n_scan_plans); in wil_cfg80211_sched_scan_start()
2012 wil_dbg_misc(wil, "SCAN PLAN[%d]: interval %d iterations %d\n", in wil_cfg80211_sched_scan_start()
2020 return wmi_start_sched_scan(wil, request); in wil_cfg80211_sched_scan_start()
2027 struct wil6210_priv *wil = wiphy_to_wil(wiphy); in wil_cfg80211_sched_scan_stop() local
2034 rc = wmi_stop_sched_scan(wil); in wil_cfg80211_sched_scan_stop()
2038 wil_dbg_misc(wil, "sched scan stopped (%d)\n", rc); in wil_cfg80211_sched_scan_stop()
2123 struct wil6210_priv *wil, const struct wil_fw_record_concurrency *conc) in wil_cfg80211_iface_combinations_from_fw() argument
2125 struct wiphy *wiphy = wil_to_wiphy(wil); in wil_cfg80211_iface_combinations_from_fw()
2135 wil_dbg_misc(wil, "iface_combinations already set, skipping\n"); in wil_cfg80211_iface_combinations_from_fw()
2163 wil_dbg_misc(wil, in wil_cfg80211_iface_combinations_from_fw()
2172 wil_dbg_misc(wil, in wil_cfg80211_iface_combinations_from_fw()
2182 wil_dbg_misc(wil, "multiple VIFs supported, n_mids %d\n", conc->n_mids); in wil_cfg80211_iface_combinations_from_fw()
2183 wil->max_vifs = conc->n_mids + 1; /* including main interface */ in wil_cfg80211_iface_combinations_from_fw()
2184 if (wil->max_vifs > WIL_MAX_VIFS) { in wil_cfg80211_iface_combinations_from_fw()
2185 wil_info(wil, "limited number of VIFs supported(%d, FW %d)\n", in wil_cfg80211_iface_combinations_from_fw()
2186 WIL_MAX_VIFS, wil->max_vifs); in wil_cfg80211_iface_combinations_from_fw()
2187 wil->max_vifs = WIL_MAX_VIFS; in wil_cfg80211_iface_combinations_from_fw()
2197 struct wil6210_priv *wil; in wil_cfg80211_init() local
2213 wil = wiphy_to_wil(wiphy); in wil_cfg80211_init()
2214 wil->wiphy = wiphy; in wil_cfg80211_init()
2218 cfg80211_chandef_create(&wil->monitor_chandef, ch, NL80211_CHAN_NO_HT); in wil_cfg80211_init()
2220 return wil; in wil_cfg80211_init()
2223 void wil_cfg80211_deinit(struct wil6210_priv *wil) in wil_cfg80211_deinit() argument
2225 struct wiphy *wiphy = wil_to_wiphy(wil); in wil_cfg80211_deinit()
2227 dev_dbg(wil_to_dev(wil), "%s()\n", __func__); in wil_cfg80211_deinit()
2239 void wil_p2p_wdev_free(struct wil6210_priv *wil) in wil_p2p_wdev_free() argument
2243 mutex_lock(&wil->vif_mutex); in wil_p2p_wdev_free()
2244 p2p_wdev = wil->p2p_wdev; in wil_p2p_wdev_free()
2245 wil->p2p_wdev = NULL; in wil_p2p_wdev_free()
2246 wil->radio_wdev = wil->main_ndev->ieee80211_ptr; in wil_p2p_wdev_free()
2247 mutex_unlock(&wil->vif_mutex); in wil_p2p_wdev_free()
2274 struct wil6210_priv *wil = wdev_to_wil(wdev); in wil_rf_sector_get_cfg() local
2275 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_rf_sector_get_cfg()
2293 if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) in wil_rf_sector_get_cfg()
2299 wil_err(wil, "Invalid rf sector ATTR\n"); in wil_rf_sector_get_cfg()
2306 wil_err(wil, "Invalid rf sector spec\n"); in wil_rf_sector_get_cfg()
2313 wil_err(wil, "Invalid sector index %d\n", sector_index); in wil_rf_sector_get_cfg()
2319 wil_err(wil, "Invalid sector type %d\n", sector_type); in wil_rf_sector_get_cfg()
2326 wil_err(wil, "Invalid rf module mask 0x%x\n", rf_modules_vec); in wil_rf_sector_get_cfg()
2333 rc = wmi_call(wil, WMI_GET_RF_SECTOR_PARAMS_CMDID, vif->mid, in wil_rf_sector_get_cfg()
2340 wil_err(wil, "get rf sector cfg failed with status %d\n", in wil_rf_sector_get_cfg()
2395 struct wil6210_priv *wil = wdev_to_wil(wdev); in wil_rf_sector_set_cfg() local
2396 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_rf_sector_set_cfg()
2413 if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) in wil_rf_sector_set_cfg()
2419 wil_err(wil, "Invalid rf sector ATTR\n"); in wil_rf_sector_set_cfg()
2426 wil_err(wil, "Invalid rf sector spec\n"); in wil_rf_sector_set_cfg()
2433 wil_err(wil, "Invalid sector index %d\n", sector_index); in wil_rf_sector_set_cfg()
2439 wil_err(wil, "Invalid sector type %d\n", sector_type); in wil_rf_sector_set_cfg()
2453 wil_err(wil, "invalid sector cfg\n"); in wil_rf_sector_set_cfg()
2464 wil_err(wil, "missing cfg params\n"); in wil_rf_sector_set_cfg()
2471 wil_err(wil, "invalid RF module index %d\n", in wil_rf_sector_set_cfg()
2492 rc = wmi_call(wil, WMI_SET_RF_SECTOR_PARAMS_CMDID, vif->mid, in wil_rf_sector_set_cfg()
2505 struct wil6210_priv *wil = wdev_to_wil(wdev); in wil_rf_sector_get_selected() local
2506 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_rf_sector_get_selected()
2520 if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) in wil_rf_sector_get_selected()
2526 wil_err(wil, "Invalid rf sector ATTR\n"); in wil_rf_sector_get_selected()
2531 wil_err(wil, "Invalid rf sector spec\n"); in wil_rf_sector_get_selected()
2536 wil_err(wil, "Invalid sector type %d\n", sector_type); in wil_rf_sector_get_selected()
2542 cid = wil_find_cid(wil, vif->mid, mac_addr); in wil_rf_sector_get_selected()
2544 wil_err(wil, "invalid MAC address %pM\n", mac_addr); in wil_rf_sector_get_selected()
2549 wil_err(wil, "must specify MAC address when connected\n"); in wil_rf_sector_get_selected()
2557 rc = wmi_call(wil, WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID, vif->mid, in wil_rf_sector_get_selected()
2565 wil_err(wil, "get rf selected sector cfg failed with status %d\n", in wil_rf_sector_get_selected()
2589 static int wil_rf_sector_wmi_set_selected(struct wil6210_priv *wil, in wil_rf_sector_wmi_set_selected() argument
2606 rc = wmi_call(wil, WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID, mid, in wil_rf_sector_wmi_set_selected()
2620 struct wil6210_priv *wil = wdev_to_wil(wdev); in wil_rf_sector_set_selected() local
2621 struct wil6210_vif *vif = wdev_to_vif(wil, wdev); in wil_rf_sector_set_selected()
2628 if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) in wil_rf_sector_set_selected()
2634 wil_err(wil, "Invalid rf sector ATTR\n"); in wil_rf_sector_set_selected()
2640 wil_err(wil, "Invalid rf sector spec\n"); in wil_rf_sector_set_selected()
2648 wil_err(wil, "Invalid sector index %d\n", sector_index); in wil_rf_sector_set_selected()
2654 wil_err(wil, "Invalid sector type %d\n", sector_type); in wil_rf_sector_set_selected()
2661 cid = wil_find_cid(wil, vif->mid, mac_addr); in wil_rf_sector_set_selected()
2663 wil_err(wil, "invalid MAC address %pM\n", in wil_rf_sector_set_selected()
2669 wil_err(wil, "broadcast MAC valid only with unlocking\n"); in wil_rf_sector_set_selected()
2676 wil_err(wil, "must specify MAC address when connected\n"); in wil_rf_sector_set_selected()
2683 rc = wil_rf_sector_wmi_set_selected(wil, vif->mid, sector_index, in wil_rf_sector_set_selected()
2688 wil, vif->mid, WMI_INVALID_RF_SECTOR_INDEX, in wil_rf_sector_set_selected()
2692 if (wil->sta[i].mid != vif->mid) in wil_rf_sector_set_selected()
2695 wil, vif->mid, in wil_rf_sector_set_selected()
2703 wil_err(wil, "unlock cid %d failed with status %d\n", in wil_rf_sector_set_selected()