wil 116 drivers/net/wireless/ath/wil6210/cfg80211.c static int wil_num_supported_channels(struct wil6210_priv *wil) wil 120 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_CHANNEL_4, wil->fw_capabilities)) wil 126 drivers/net/wireless/ath/wil6210/cfg80211.c void update_supported_bands(struct wil6210_priv *wil) wil 128 drivers/net/wireless/ath/wil6210/cfg80211.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 130 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "update supported bands"); wil 133 drivers/net/wireless/ath/wil6210/cfg80211.c wil_num_supported_channels(wil); wil 135 drivers/net/wireless/ath/wil6210/cfg80211.c if (test_bit(WMI_FW_CAPABILITY_CHANNEL_BONDING, wil->fw_capabilities)) { wil 444 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = vif_to_wil(vif); wil 453 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil_net_stats *stats = &wil->sta[cid].stats; wil 459 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_NOTIFY_REQ_CMDID, vif->mid, &cmd, sizeof(cmd), wil 465 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_wmi(wil, "Link status for CID %d MID %d: {\n" wil 484 drivers/net/wireless/ath/wil6210/cfg80211.c sinfo->generation = wil->sinfo_gen; wil 495 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->use_enhanced_dma_hw && reply.evt.tx_mode != WMI_TX_MODE_DMG) wil 515 drivers/net/wireless/ath/wil6210/cfg80211.c wil->fw_capabilities)) wil 529 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 532 drivers/net/wireless/ath/wil6210/cfg80211.c int cid = wil_find_cid(wil, vif->mid, mac); wil 534 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "get_station: %pM CID %d MID %d\n", mac, cid, wil 536 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_cid_valid(wil, cid)) wil 547 drivers/net/wireless/ath/wil6210/cfg80211.c int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx) wil 551 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 552 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->sta[i].status == wil_sta_unused) wil 554 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->sta[i].mid != mid) wil 569 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 571 drivers/net/wireless/ath/wil6210/cfg80211.c int cid = wil_find_cid_by_idx(wil, vif->mid, idx); wil 573 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_cid_valid(wil, cid)) wil 576 drivers/net/wireless/ath/wil6210/cfg80211.c ether_addr_copy(mac, wil->sta[cid].addr); wil 577 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "dump_station: %pM CID %d MID %d\n", mac, cid, wil 588 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 590 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "start_p2p_device: entered\n"); wil 591 drivers/net/wireless/ath/wil6210/cfg80211.c wil->p2p_dev_started = 1; wil 598 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 600 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil->p2p_dev_started) wil 603 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "stop_p2p_device: entered\n"); wil 604 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 605 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->vif_mutex); wil 606 drivers/net/wireless/ath/wil6210/cfg80211.c wil_p2p_stop_radio_operations(wil); wil 607 drivers/net/wireless/ath/wil6210/cfg80211.c wil->p2p_dev_started = 0; wil 608 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 609 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 612 drivers/net/wireless/ath/wil6210/cfg80211.c static int wil_cfg80211_validate_add_iface(struct wil6210_priv *wil, wil 621 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 622 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->vifs[i]) { wil 623 drivers/net/wireless/ath/wil6210/cfg80211.c wdev = vif_to_wdev(wil->vifs[i]); wil 628 drivers/net/wireless/ath/wil6210/cfg80211.c return cfg80211_check_combinations(wil->wiphy, ¶ms); wil 631 drivers/net/wireless/ath/wil6210/cfg80211.c static int wil_cfg80211_validate_change_iface(struct wil6210_priv *wil, wil 642 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 643 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif_pos = wil->vifs[i]; wil 654 drivers/net/wireless/ath/wil6210/cfg80211.c ret = cfg80211_check_combinations(wil->wiphy, ¶ms); wil 665 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 666 drivers/net/wireless/ath/wil6210/cfg80211.c struct net_device *ndev_main = wil->main_ndev, *ndev; wil 671 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "add_iface, type %d\n", type); wil 678 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->p2p_wdev) { wil 679 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "P2P_DEVICE interface already created\n"); wil 692 drivers/net/wireless/ath/wil6210/cfg80211.c wil->p2p_wdev = p2p_wdev; wil 697 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil->wiphy->n_iface_combinations) { wil 698 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "virtual interfaces not supported\n"); wil 702 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_cfg80211_validate_add_iface(wil, type); wil 704 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "iface validation failed, err=%d\n", rc); wil 708 drivers/net/wireless/ath/wil6210/cfg80211.c vif = wil_vif_alloc(wil, name, name_assign_type, type); wil 724 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_vif_add(wil, vif); wil 728 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "added VIF, mid %d iftype %d MAC %pM\n", wil 738 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = vif_to_wil(vif); wil 750 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "failed to stop AP, status %d\n", wil 764 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 765 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 768 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "del_iface\n"); wil 771 drivers/net/wireless/ath/wil6210/cfg80211.c if (wdev != wil->p2p_wdev) { wil 772 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "delete of incorrect interface 0x%p\n", wil 778 drivers/net/wireless/ath/wil6210/cfg80211.c wil_p2p_wdev_free(wil); wil 783 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "cannot remove the main interface\n"); wil 791 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "deleted VIF, mid %d iftype %d MAC %pM\n", wil 794 drivers/net/wireless/ath/wil6210/cfg80211.c wil_vif_remove(wil, vif->mid); wil 814 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 820 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "change_iface: type=%d\n", type); wil 823 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_cfg80211_validate_change_iface(wil, vif, type); wil 825 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "iface validation failed, err=%d\n", rc); wil 833 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_has_other_active_ifaces(wil, ndev, true, false) && wil 834 drivers/net/wireless/ath/wil6210/cfg80211.c netif_running(ndev) && !wil_is_recovery_blocked(wil) && wil 836 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "interface is up. resetting...\n"); wil 837 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 838 drivers/net/wireless/ath/wil6210/cfg80211.c __wil_down(wil); wil 839 drivers/net/wireless/ath/wil6210/cfg80211.c rc = __wil_up(wil); wil 840 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 855 drivers/net/wireless/ath/wil6210/cfg80211.c wil->monitor_flags = params->flags; wil 861 drivers/net/wireless/ath/wil6210/cfg80211.c if (vif->mid != 0 && wil_has_active_ifaces(wil, true, false)) { wil 864 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_port_delete(wil, vif->mid); wil 867 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_port_allocate(wil, vif->mid, ndev->dev_addr, type); wil 879 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 881 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 889 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "scan: wdev=0x%p iftype=%d\n", wdev, wdev->iftype); wil 903 drivers/net/wireless/ath/wil6210/cfg80211.c if (test_bit(wil_status_dontscan, wil->status)) { wil 904 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Can't scan now\n"); wil 908 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 910 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->vif_mutex); wil 912 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Already scanning\n"); wil 913 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 917 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 920 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil->p2p_dev_started) { wil 921 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "P2P search requested on stopped P2P device\n"); wil 929 drivers/net/wireless/ath/wil6210/cfg80211.c wil->radio_wdev = wdev; wil 933 drivers/net/wireless/ath/wil6210/cfg80211.c wil->radio_wdev = wil 934 drivers/net/wireless/ath/wil6210/cfg80211.c wil->main_ndev->ieee80211_ptr; wil 943 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Start scan_request 0x%p\n", request); wil 944 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "SSID count: %d", request->n_ssids); wil 947 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "SSID[%d]", i); wil 960 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "set SSID for scan request failed: %d\n", rc); wil 975 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, wil 982 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Scan for ch %d : %d MHz\n", ch, wil 990 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Scan has no IE's\n"); wil 997 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->discovery_mode && cmd.cmd.scan_type == WMI_ACTIVE_SCAN) { wil 999 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "active scan with discovery_mode=1\n"); wil 1003 drivers/net/wireless/ath/wil6210/cfg80211.c wil->radio_wdev = wdev; wil 1004 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_send(wil, WMI_START_SCAN_CMDID, vif->mid, wil 1012 drivers/net/wireless/ath/wil6210/cfg80211.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 1016 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 1023 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1024 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 1026 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "wdev=0x%p iftype=%d\n", wdev, wdev->iftype); wil 1028 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 1029 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->vif_mutex); wil 1035 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "abort scan was called on the wrong iface\n"); wil 1039 drivers/net/wireless/ath/wil6210/cfg80211.c if (wdev == wil->p2p_wdev && wil->radio_wdev == wil->p2p_wdev) wil 1040 drivers/net/wireless/ath/wil6210/cfg80211.c wil_p2p_stop_radio_operations(wil); wil 1045 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 1046 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 1049 drivers/net/wireless/ath/wil6210/cfg80211.c static void wil_print_crypto(struct wil6210_priv *wil, wil 1054 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "WPA versions: 0x%08x cipher group 0x%08x\n", wil 1056 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Pairwise ciphers [%d] {\n", c->n_ciphers_pairwise); wil 1059 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, " [%d] = 0x%08x\n", i, wil 1061 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "}\n"); wil 1062 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "AKM suites [%d] {\n", c->n_akm_suites); wil 1065 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, " [%d] = 0x%08x\n", i, wil 1067 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "}\n"); wil 1068 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Control port : %d, eth_type 0x%04x no_encrypt %d\n", wil 1093 drivers/net/wireless/ath/wil6210/cfg80211.c static void wil_print_connect_params(struct wil6210_priv *wil, wil 1096 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "Connecting to:\n"); wil 1098 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " Channel: %d freq %d\n", wil 1102 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " BSSID: %pM\n", sme->bssid); wil 1107 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " Previous BSSID=%pM\n", sme->prev_bssid); wil 1108 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " Auth Type: %s\n", wil 1110 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " Privacy: %s\n", sme->privacy ? "secure" : "open"); wil 1111 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, " PBSS: %d\n", sme->pbss); wil 1112 drivers/net/wireless/ath/wil6210/cfg80211.c wil_print_crypto(wil, &sme->crypto); wil 1119 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1124 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_FT_ROAMING, wil->fw_capabilities)) { wil 1125 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: FW does not support FT roaming\n"); wil 1130 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: prev_bssid was not set\n"); wil 1135 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: can not roam to same AP\n"); wil 1140 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: roam while not connected\n"); wil 1145 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: privacy mismatch, current (%d) roam (%d)\n", wil 1151 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: roam is not valid for PBSS\n"); wil 1159 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "FT: roaming\n"); wil 1162 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_send(wil, WMI_FT_AUTH_CMDID, vif->mid, wil 1173 drivers/net/wireless/ath/wil6210/cfg80211.c static int wil_get_wmi_edmg_channel(struct wil6210_priv *wil, u8 edmg_bw_config, wil 1189 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Unsupported edmg channel bitmap 0x%x\n", wil 1194 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Unsupported EDMG BW configuration %d\n", wil 1204 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1216 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "connect, mid=%d\n", vif->mid); wil 1217 drivers/net/wireless/ath/wil6210/cfg80211.c wil_print_connect_params(wil, sme); wil 1231 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "IE too large (%td bytes)\n", sme->ie_len); wil 1239 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "WSC connection\n"); wil 1241 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "No WSC with FT roam\n"); wil 1253 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Unable to find BSS\n"); wil 1259 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "No SSID\n"); wil 1278 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Unsupported BSS type, capability= 0x%04x\n", wil 1286 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "BSS at unknown frequency %dMhz\n", wil 1294 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: Unsupported BSS type, capability= 0x%04x\n", wil 1310 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(PTK) failed\n"); wil 1316 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(GTK) failed\n"); wil 1345 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_get_wmi_edmg_channel(wil, sme->edmg.bw_config, wil 1355 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_send(wil, WMI_CONNECT_CMDID, vif->mid, &conn, sizeof(conn)); wil 1358 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_has_other_active_ifaces(wil, ndev, false, true)) wil 1359 drivers/net/wireless/ath/wil6210/cfg80211.c wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); wil 1379 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1382 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "disconnect: reason=%d, mid=%d\n", wil 1387 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Disconnect was called while disconnected\n"); wil 1392 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_DISCONNECT_CMDID, vif->mid, NULL, 0, wil 1396 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "disconnect error %d\n", rc); wil 1403 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1413 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_set_mgmt_retry(wil, wiphy->retry_short); wil 1427 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1428 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 1432 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "mgmt_tx: channel %d offchan %d, wait %d\n", wil 1443 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid channel\n"); wil 1448 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 1455 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 1462 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, wil 1488 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1490 drivers/net/wireless/ath/wil6210/cfg80211.c wil->monitor_chandef = *chandef; wil 1498 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wdev_to_wil(wdev); wil 1515 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Can't determine GTK type\n"); wil 1520 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "detect_key_usage: -> %s\n", key_usage_str[rc]); wil 1526 drivers/net/wireless/ath/wil6210/cfg80211.c wil_find_sta_by_key_usage(struct wil6210_priv *wil, u8 mid, wil 1536 drivers/net/wireless/ath/wil6210/cfg80211.c cid = wil_find_cid(wil, mid, mac_addr); wil 1538 drivers/net/wireless/ath/wil6210/cfg80211.c cid = wil_find_cid_by_idx(wil, mid, 0); wil 1540 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "No CID for %pM %s\n", mac_addr, wil 1545 drivers/net/wireless/ath/wil6210/cfg80211.c return &wil->sta[cid]; wil 1617 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1620 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid, wil 1625 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "NULL params\n"); wil 1629 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "add_key: %pM %s[%d] PN %*phN\n", wil 1638 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Not connected, %pM %s[%d] PN %*phN\n", wil 1649 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, wil 1657 drivers/net/wireless/ath/wil6210/cfg80211.c spin_lock_bh(&wil->eap_lock); wil 1663 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Store EAPOL key\n"); wil 1665 drivers/net/wireless/ath/wil6210/cfg80211.c spin_unlock_bh(&wil->eap_lock); wil 1692 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1695 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil_sta_info *cs = wil_find_sta_by_key_usage(wil, vif->mid, wil 1699 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "del_key: %pM %s[%d]\n", mac_addr, wil 1703 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "Not connected, %pM %s[%d]\n", wil 1718 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1720 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "set_default_key: entered\n"); wil 1730 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1733 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 1737 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_p2p_listen(wil, wdev, duration, chan, cookie); wil 1745 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1746 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 1748 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "cancel_remain_on_channel\n"); wil 1926 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 1939 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "start_ap: mid=%d, is_go=%d\n", vif->mid, is_go); wil 1941 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "P2P GO must be in PBSS\n"); wil 1945 drivers/net/wireless/ath/wil6210/cfg80211.c wil_set_recovery_state(wil, fw_recovery_idle); wil 1959 drivers/net/wireless/ath/wil6210/cfg80211.c wil->fw_capabilities)) { wil 1960 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FW does not support FT roaming\n"); wil 1966 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 1968 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_has_other_active_ifaces(wil, ndev, true, false)) { wil 1969 drivers/net/wireless/ath/wil6210/cfg80211.c __wil_down(wil); wil 1970 drivers/net/wireless/ath/wil6210/cfg80211.c rc = __wil_up(wil); wil 1993 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_has_other_active_ifaces(wil, ndev, false, true)) wil 1994 drivers/net/wireless/ath/wil6210/cfg80211.c wil6210_bus_request(wil, WIL_MAX_BUS_REQUEST_KBPS); wil 2011 drivers/net/wireless/ath/wil6210/cfg80211.c if (!wil_has_other_active_ifaces(wil, ndev, false, true)) wil 2012 drivers/net/wireless/ath/wil6210/cfg80211.c wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); wil 2014 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 2018 drivers/net/wireless/ath/wil6210/cfg80211.c void wil_cfg80211_ap_recovery(struct wil6210_priv *wil) wil 2021 drivers/net/wireless/ath/wil6210/cfg80211.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 2023 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 2024 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wil->vifs[i]; wil 2040 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, wil 2053 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "vif %d recovery failed (%d)\n", i, rc); wil 2066 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "vif %d recovery add key failed (%d)\n", wil 2075 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2081 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "change_beacon, mid=%d\n", vif->mid); wil 2094 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "privacy changed %d=>%d. Restarting AP\n", wil 2116 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2123 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "start_ap\n"); wil 2125 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_get_wmi_edmg_channel(wil, info->chandef.edmg.bw_config, wil 2132 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "AP: No channel???\n"); wil 2150 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "AP: Invalid hidden SSID %d\n", info->hidden_ssid); wil 2153 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "AP on Channel %d %d MHz, %s\n", channel->hw_value, wil 2155 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Privacy: %d auth_type %d\n", wil 2157 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "Hidden SSID mode: %d\n", wil 2159 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "BI %d DTIM %d\n", info->beacon_interval, wil 2161 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "PBSS %d\n", info->pbss); wil 2165 drivers/net/wireless/ath/wil6210/cfg80211.c wil_print_crypto(wil, crypto); wil 2179 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2183 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "stop_ap, mid=%d\n", vif->mid); wil 2186 drivers/net/wireless/ath/wil6210/cfg80211.c last = !wil_has_other_active_ifaces(wil, ndev, false, true); wil 2188 drivers/net/wireless/ath/wil6210/cfg80211.c wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); wil 2189 drivers/net/wireless/ath/wil6210/cfg80211.c wil_set_recovery_state(wil, fw_recovery_idle); wil 2190 drivers/net/wireless/ath/wil6210/cfg80211.c set_bit(wil_status_resetting, wil->status); wil 2193 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 2205 drivers/net/wireless/ath/wil6210/cfg80211.c __wil_down(wil); wil 2209 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 2220 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2222 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "add station %pM aid %d mid %d mask 0x%x set 0x%x\n", wil 2227 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "not supported with AP SME enabled\n"); wil 2232 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid aid\n"); wil 2244 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2246 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "del_station: %pM, reason=%d mid=%d\n", wil 2249 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 2251 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 2262 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2267 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "change station %pM mask 0x%x set 0x%x mid %d\n", wil 2272 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "not supported with AP SME enabled\n"); wil 2279 drivers/net/wireless/ath/wil6210/cfg80211.c cid = wil_find_cid(wil, vif->mid, mac); wil 2281 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "station not found\n"); wil 2285 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < ARRAY_SIZE(wil->ring2cid_tid); i++) wil 2286 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->ring2cid_tid[i][0] == cid) { wil 2287 drivers/net/wireless/ath/wil6210/cfg80211.c txdata = &wil->ring_tx_data[i]; wil 2292 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "ring data not found\n"); wil 2298 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "cid %d ring %d authorize %d\n", cid, i, wil 2305 drivers/net/wireless/ath/wil6210/cfg80211.c static void wil_probe_client_handle(struct wil6210_priv *wil, wil 2310 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil_sta_info *sta = &wil->sta[req->cid]; wil 2340 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2347 drivers/net/wireless/ath/wil6210/cfg80211.c wil_probe_client_handle(wil, vif, req); wil 2355 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2357 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "probe_client_flush\n"); wil 2373 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2376 drivers/net/wireless/ath/wil6210/cfg80211.c int cid = wil_find_cid(wil, vif->mid, peer); wil 2378 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "probe_client: %pM => CID %d MID %d\n", wil 2396 drivers/net/wireless/ath/wil6210/cfg80211.c queue_work(wil->wq_service, &vif->probe_client_worker); wil 2404 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2408 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "change_bss: ap_isolate MID %d, %d => %d\n", wil 2420 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2423 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "enabled=%d, timeout=%d\n", wil 2431 drivers/net/wireless/ath/wil6210/cfg80211.c return wil_ps_update(wil, ps_profile); wil 2437 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2442 drivers/net/wireless/ath/wil6210/cfg80211.c if (test_bit(wil_status_suspended, wil->status)) { wil 2443 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_pm(wil, "trying to suspend while suspended\n"); wil 2447 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_can_suspend(wil, false); wil 2451 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_pm(wil, "suspending\n"); wil 2453 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->mutex); wil 2454 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->vif_mutex); wil 2455 drivers/net/wireless/ath/wil6210/cfg80211.c wil_p2p_stop_radio_operations(wil); wil 2456 drivers/net/wireless/ath/wil6210/cfg80211.c wil_abort_scan_all_vifs(wil, true); wil 2457 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 2458 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->mutex); wil 2466 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2468 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_pm(wil, "resuming\n"); wil 2478 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2485 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 2489 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "SSID[%d]:", i); wil 2494 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "channels:"); wil 2496 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, " %d%s", request->channels[i]->hw_value, wil 2498 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "n_match_sets %d, min_rssi_thold %d, delay %d\n", wil 2504 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "MATCHSET[%d]: rssi_thold %d\n", wil 2510 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "n_scan_plans %d\n", request->n_scan_plans); wil 2514 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "SCAN PLAN[%d]: interval %d iterations %d\n", wil 2522 drivers/net/wireless/ath/wil6210/cfg80211.c return wmi_start_sched_scan(wil, request); wil 2529 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2536 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_stop_sched_scan(wil); wil 2540 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "sched scan stopped (%d)\n", rc); wil 2549 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wiphy_to_wil(wiphy); wil 2555 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "update ft ies, mid=%d\n", vif->mid); wil 2559 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_FT_ROAMING, wil->fw_capabilities)) { wil 2560 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FW does not support FT roaming\n"); wil 2578 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: bss is NULL\n"); wil 2585 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_send(wil, WMI_FT_REASSOC_CMDID, vif->mid, wil 2588 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "FT: reassoc failed (%d)\n", rc); wil 2674 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil, const struct wil_fw_record_concurrency *conc) wil 2676 drivers/net/wireless/ath/wil6210/cfg80211.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 2686 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "iface_combinations already set, skipping\n"); wil 2714 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 2723 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, wil 2733 drivers/net/wireless/ath/wil6210/cfg80211.c wil_dbg_misc(wil, "multiple VIFs supported, n_mids %d\n", conc->n_mids); wil 2734 drivers/net/wireless/ath/wil6210/cfg80211.c wil->max_vifs = conc->n_mids + 1; /* including main interface */ wil 2735 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->max_vifs > WIL_MAX_VIFS) { wil 2736 drivers/net/wireless/ath/wil6210/cfg80211.c wil_info(wil, "limited number of VIFs supported(%d, FW %d)\n", wil 2737 drivers/net/wireless/ath/wil6210/cfg80211.c WIL_MAX_VIFS, wil->max_vifs); wil 2738 drivers/net/wireless/ath/wil6210/cfg80211.c wil->max_vifs = WIL_MAX_VIFS; wil 2748 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil; wil 2764 drivers/net/wireless/ath/wil6210/cfg80211.c wil = wiphy_to_wil(wiphy); wil 2765 drivers/net/wireless/ath/wil6210/cfg80211.c wil->wiphy = wiphy; wil 2769 drivers/net/wireless/ath/wil6210/cfg80211.c cfg80211_chandef_create(&wil->monitor_chandef, ch, NL80211_CHAN_NO_HT); wil 2771 drivers/net/wireless/ath/wil6210/cfg80211.c return wil; wil 2774 drivers/net/wireless/ath/wil6210/cfg80211.c void wil_cfg80211_deinit(struct wil6210_priv *wil) wil 2776 drivers/net/wireless/ath/wil6210/cfg80211.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 2778 drivers/net/wireless/ath/wil6210/cfg80211.c dev_dbg(wil_to_dev(wil), "%s()\n", __func__); wil 2790 drivers/net/wireless/ath/wil6210/cfg80211.c void wil_p2p_wdev_free(struct wil6210_priv *wil) wil 2794 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_lock(&wil->vif_mutex); wil 2795 drivers/net/wireless/ath/wil6210/cfg80211.c p2p_wdev = wil->p2p_wdev; wil 2796 drivers/net/wireless/ath/wil6210/cfg80211.c wil->p2p_wdev = NULL; wil 2797 drivers/net/wireless/ath/wil6210/cfg80211.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 2798 drivers/net/wireless/ath/wil6210/cfg80211.c mutex_unlock(&wil->vif_mutex); wil 2825 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wdev_to_wil(wdev); wil 2826 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 2844 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) wil 2850 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector ATTR\n"); wil 2857 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector spec\n"); wil 2864 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector index %d\n", sector_index); wil 2870 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector type %d\n", sector_type); wil 2877 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf module mask 0x%x\n", rf_modules_vec); wil 2884 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_GET_RF_SECTOR_PARAMS_CMDID, vif->mid, wil 2891 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "get rf sector cfg failed with status %d\n", wil 2946 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wdev_to_wil(wdev); wil 2947 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 2964 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) wil 2970 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector ATTR\n"); wil 2977 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector spec\n"); wil 2984 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector index %d\n", sector_index); wil 2990 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector type %d\n", sector_type); wil 3006 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid sector cfg\n"); wil 3017 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "missing cfg params\n"); wil 3024 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid RF module index %d\n", wil 3045 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_SET_RF_SECTOR_PARAMS_CMDID, vif->mid, wil 3058 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wdev_to_wil(wdev); wil 3059 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 3073 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) wil 3079 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector ATTR\n"); wil 3084 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector spec\n"); wil 3089 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector type %d\n", sector_type); wil 3095 drivers/net/wireless/ath/wil6210/cfg80211.c cid = wil_find_cid(wil, vif->mid, mac_addr); wil 3097 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid MAC address %pM\n", mac_addr); wil 3102 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "must specify MAC address when connected\n"); wil 3110 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_GET_SELECTED_RF_SECTOR_INDEX_CMDID, vif->mid, wil 3118 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "get rf selected sector cfg failed with status %d\n", wil 3142 drivers/net/wireless/ath/wil6210/cfg80211.c static int wil_rf_sector_wmi_set_selected(struct wil6210_priv *wil, wil 3159 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wmi_call(wil, WMI_SET_SELECTED_RF_SECTOR_INDEX_CMDID, mid, wil 3173 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_priv *wil = wdev_to_wil(wdev); wil 3174 drivers/net/wireless/ath/wil6210/cfg80211.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 3181 drivers/net/wireless/ath/wil6210/cfg80211.c if (!test_bit(WMI_FW_CAPABILITY_RF_SECTORS, wil->fw_capabilities)) wil 3187 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector ATTR\n"); wil 3193 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid rf sector spec\n"); wil 3201 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector index %d\n", sector_index); wil 3207 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "Invalid sector type %d\n", sector_type); wil 3214 drivers/net/wireless/ath/wil6210/cfg80211.c cid = wil_find_cid(wil, vif->mid, mac_addr); wil 3216 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "invalid MAC address %pM\n", wil 3222 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "broadcast MAC valid only with unlocking\n"); wil 3229 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "must specify MAC address when connected\n"); wil 3236 drivers/net/wireless/ath/wil6210/cfg80211.c rc = wil_rf_sector_wmi_set_selected(wil, vif->mid, sector_index, wil 3241 drivers/net/wireless/ath/wil6210/cfg80211.c wil, vif->mid, WMI_INVALID_RF_SECTOR_INDEX, wil 3244 drivers/net/wireless/ath/wil6210/cfg80211.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 3245 drivers/net/wireless/ath/wil6210/cfg80211.c if (wil->sta[i].mid != vif->mid) wil 3248 drivers/net/wireless/ath/wil6210/cfg80211.c wil, vif->mid, wil 3256 drivers/net/wireless/ath/wil6210/cfg80211.c wil_err(wil, "unlock cid %d failed with status %d\n", wil 21 drivers/net/wireless/ath/wil6210/debug.c void __wil_err(struct wil6210_priv *wil, const char *fmt, ...) wil 29 drivers/net/wireless/ath/wil6210/debug.c netdev_err(wil->main_ndev, "%pV", &vaf); wil 34 drivers/net/wireless/ath/wil6210/debug.c void __wil_err_ratelimited(struct wil6210_priv *wil, const char *fmt, ...) wil 45 drivers/net/wireless/ath/wil6210/debug.c netdev_err(wil->main_ndev, "%pV", &vaf); wil 50 drivers/net/wireless/ath/wil6210/debug.c void wil_dbg_ratelimited(const struct wil6210_priv *wil, const char *fmt, ...) wil 61 drivers/net/wireless/ath/wil6210/debug.c netdev_dbg(wil->main_ndev, "%pV", &vaf); wil 66 drivers/net/wireless/ath/wil6210/debug.c void __wil_info(struct wil6210_priv *wil, const char *fmt, ...) wil 74 drivers/net/wireless/ath/wil6210/debug.c netdev_info(wil->main_ndev, "%pV", &vaf); wil 79 drivers/net/wireless/ath/wil6210/debug.c void wil_dbg_trace(struct wil6210_priv *wil, const char *fmt, ...) wil 53 drivers/net/wireless/ath/wil6210/debugfs.c static void wil_print_desc_edma(struct seq_file *s, struct wil6210_priv *wil, wil 66 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->rx_buff_mgmt.buff_arr && wil 67 drivers/net/wireless/ath/wil6210/debugfs.c wil_val_in_range(buff_id, 0, wil->rx_buff_mgmt.size)) wil 68 drivers/net/wireless/ath/wil6210/debugfs.c has_skb = wil->rx_buff_mgmt.buff_arr[buff_id].skb; wil 85 drivers/net/wireless/ath/wil6210/debugfs.c static void wil_print_ring(struct seq_file *s, struct wil6210_priv *wil, wil 96 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw && ring->is_rx) wil 101 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw) { wil 103 drivers/net/wireless/ath/wil6210/debugfs.c WIL_RX_DESC_RING_ID : ring - wil->ring_tx; wil 108 drivers/net/wireless/ath/wil6210/debugfs.c x = wmi_addr(wil, RGF_DMA_SCM_SUBQ_CONS + 4 * (ring_id / 2)); wil 115 drivers/net/wireless/ath/wil6210/debugfs.c x = wmi_addr(wil, ring->hwtail); wil 129 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw) { wil 130 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_desc_edma(s, wil, ring, _s, _h, i); wil 146 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 148 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_ring(s, wil, "rx", &wil->ring_rx, 'S', '_'); wil 150 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < ARRAY_SIZE(wil->ring_tx); i++) { wil 151 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_ring *ring = &wil->ring_tx[i]; wil 152 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[i]; wil 155 drivers/net/wireless/ath/wil6210/debugfs.c int cid = wil->ring2cid_tid[i][0]; wil 156 drivers/net/wireless/ath/wil6210/debugfs.c int tid = wil->ring2cid_tid[i][1]; wil 181 drivers/net/wireless/ath/wil6210/debugfs.c if (cid < wil->max_assoc_sta) wil 184 drivers/net/wireless/ath/wil6210/debugfs.c wil->sta[cid].addr, cid, tid, wil 196 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_ring(s, wil, name, ring, '_', 'H'); wil 204 drivers/net/wireless/ath/wil6210/debugfs.c static void wil_print_sring(struct seq_file *s, struct wil6210_priv *wil, wil 208 drivers/net/wireless/ath/wil6210/debugfs.c int sring_idx = sring - wil->srings; wil 218 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw) { wil 223 drivers/net/wireless/ath/wil6210/debugfs.c x = wmi_addr(wil, RGF_DMA_SCM_COMPQ_PROD + 4 * (sring_idx / 2)); wil 230 drivers/net/wireless/ath/wil6210/debugfs.c x = wmi_addr(wil, sring->hwtail); wil 264 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 268 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->srings[i].va) wil 269 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_sring(s, wil, &wil->srings[i]); wil 284 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 289 drivers/net/wireless/ath/wil6210/debugfs.c wil_halp_vote(wil); wil 291 drivers/net/wireless/ath/wil6210/debugfs.c if (wil_mem_access_lock(wil)) { wil 292 drivers/net/wireless/ath/wil6210/debugfs.c wil_halp_unvote(wil); wil 317 drivers/net/wireless/ath/wil6210/debugfs.c if (!wmi_addr(wil, r.base) || wil 318 drivers/net/wireless/ath/wil6210/debugfs.c !wmi_addr(wil, r.tail) || wil 319 drivers/net/wireless/ath/wil6210/debugfs.c !wmi_addr(wil, r.head)) { wil 328 drivers/net/wireless/ath/wil6210/debugfs.c void __iomem *x = wil->csr + HOSTADDR(r.base) + delta; wil 337 drivers/net/wireless/ath/wil6210/debugfs.c if (0 == wmi_read_hdr(wil, d.addr, &hdr)) { wil 345 drivers/net/wireless/ath/wil6210/debugfs.c void __iomem *src = wmi_buffer(wil, d.addr) + wil 361 drivers/net/wireless/ath/wil6210/debugfs.c wil_mem_access_unlock(wil); wil 362 drivers/net/wireless/ath/wil6210/debugfs.c wil_halp_unvote(wil); wil 367 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 370 drivers/net/wireless/ath/wil6210/debugfs.c ret = wil_pm_runtime_get(wil); wil 374 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_mbox_ring(s, "tx", wil->csr + HOST_MBOX + wil 376 drivers/net/wireless/ath/wil6210/debugfs.c wil_print_mbox_ring(s, "rx", wil->csr + HOST_MBOX + wil 379 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 389 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = d->wil; wil 392 drivers/net/wireless/ath/wil6210/debugfs.c ret = wil_pm_runtime_get(wil); wil 400 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 409 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = d->wil; wil 412 drivers/net/wireless/ath/wil6210/debugfs.c ret = wil_pm_runtime_get(wil); wil 418 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 428 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil) wil 430 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_debugfs_iomem_data *data = &wil->dbg_data.data_arr[ wil 431 drivers/net/wireless/ath/wil6210/debugfs.c wil->dbg_data.iomem_data_count]; wil 433 drivers/net/wireless/ath/wil6210/debugfs.c data->wil = wil; wil 437 drivers/net/wireless/ath/wil6210/debugfs.c wil->dbg_data.iomem_data_count++; wil 464 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_init_offset(struct wil6210_priv *wil, wil 488 drivers/net/wireless/ath/wil6210/debugfs.c wil); wil 509 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_create_ISR(struct wil6210_priv *wil, wil 515 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr + off, wil 526 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_create_pseudo_ISR(struct wil6210_priv *wil, wil 531 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr, wil 574 drivers/net/wireless/ath/wil6210/debugfs.c static int wil6210_debugfs_create_ITR_CNT(struct wil6210_priv *wil, wil 584 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr, wil 587 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, dtx, (void * __force)wil->csr, wil 590 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, drx, (void * __force)wil->csr, wil 597 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 601 drivers/net/wireless/ath/wil6210/debugfs.c ret = wil_pm_runtime_get(wil); wil 605 drivers/net/wireless/ath/wil6210/debugfs.c ret = wil_mem_access_lock(wil); wil 607 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 611 drivers/net/wireless/ath/wil6210/debugfs.c a = wmi_buffer(wil, cpu_to_le32(mem_addr)); wil 618 drivers/net/wireless/ath/wil6210/debugfs.c wil_mem_access_unlock(wil); wil 619 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 630 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = wil_blob->wil; wil 657 drivers/net/wireless/ath/wil6210/debugfs.c rc = wil_pm_runtime_get(wil); wil 663 drivers/net/wireless/ath/wil6210/debugfs.c rc = wil_mem_access_lock(wil); wil 666 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 675 drivers/net/wireless/ath/wil6210/debugfs.c wil_mem_access_unlock(wil); wil 676 drivers/net/wireless/ath/wil6210/debugfs.c wil_pm_runtime_put(wil); wil 707 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 722 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid channel %ld\n", channel); wil 728 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_set_channel(wil, (int)channel); wil 733 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_rxon(wil, on); wil 749 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 755 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid argument\n"); wil 761 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "%s RBUFCAP, descriptors threshold - %d\n", wil 764 drivers/net/wireless/ath/wil6210/debugfs.c if (!wil->ring_rx.va || val > wil->ring_rx.size) { wil 765 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid descriptors threshold, %d\n", val); wil 769 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_rbufcap_cfg(wil, val < 0 ? 0 : 1, val < 0 ? 0 : val); wil 771 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "RBUFCAP config failed: %d\n", rc); wil 791 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 820 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "BACK: invalid ring id %d\n", p1); wil 823 drivers/net/wireless/ath/wil6210/debugfs.c txdata = &wil->ring_tx_data[p1]; wil 826 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "BACK: add require at least 2 params\n"); wil 831 drivers/net/wireless/ath/wil6210/debugfs.c wmi_addba(wil, txdata->mid, p1, p2, p3); wil 835 drivers/net/wireless/ath/wil6210/debugfs.c wmi_delba_tx(wil, txdata->mid, p1, p2); wil 841 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, wil 845 drivers/net/wireless/ath/wil6210/debugfs.c if (p1 < 0 || p1 >= wil->max_assoc_sta) { wil 846 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "BACK: invalid CID %d\n", p1); wil 851 drivers/net/wireless/ath/wil6210/debugfs.c sta = &wil->sta[p1]; wil 852 drivers/net/wireless/ath/wil6210/debugfs.c wmi_delba_rx(wil, sta->mid, p1, p2, p3); wil 854 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "BACK: Unrecognized command \"%s\"\n", cmd); wil 888 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 911 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "pmccfg: no params given\n"); wil 917 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "pmccfg: alloc requires 2 params\n"); wil 920 drivers/net/wireless/ath/wil6210/debugfs.c wil_pmc_alloc(wil, num_descs, desc_size); wil 923 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "pmccfg: free does not have any params\n"); wil 926 drivers/net/wireless/ath/wil6210/debugfs.c wil_pmc_free(wil, true); wil 928 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "pmccfg: Unrecognized command \"%s\"\n", cmd); wil 938 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 945 drivers/net/wireless/ath/wil6210/debugfs.c wil_pmc_last_cmd_status(wil), help); wil 980 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 981 drivers/net/wireless/ath/wil6210/debugfs.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 982 drivers/net/wireless/ath/wil6210/debugfs.c struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; wil 1002 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "-> %d\n", rc); wil 1018 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 1019 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 1042 drivers/net/wireless/ath/wil6210/debugfs.c rc1 = wmi_send(wil, cmdid, vif->mid, cmd, cmdlen); wil 1045 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "0x%04x[%d] -> %d\n", cmdid, cmdlen, rc1); wil 1081 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1090 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw) { wil 1106 drivers/net/wireless/ath/wil6210/debugfs.c ring = tx ? &wil->ring_tx[ring_idx] : &wil->ring_rx; wil 1133 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->use_enhanced_dma_hw) { wil 1136 drivers/net/wireless/ath/wil6210/debugfs.c } else if (wil->rx_buff_mgmt.buff_arr) { wil 1143 drivers/net/wireless/ath/wil6210/debugfs.c wil->rx_buff_mgmt.size)) wil 1146 drivers/net/wireless/ath/wil6210/debugfs.c skb = wil->rx_buff_mgmt.buff_arr[buff_id].skb; wil 1176 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1188 drivers/net/wireless/ath/wil6210/debugfs.c sring = &wil->srings[sring_idx]; wil 1209 drivers/net/wireless/ath/wil6210/debugfs.c if (!tx && !wil->use_compressed_rx_status) wil 1237 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1238 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_rx_buff_mgmt *rbm = &wil->rx_buff_mgmt; wil 1294 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1295 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 1306 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1310 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_call(wil, WMI_NOTIFY_REQ_CMDID, vif->mid, wil 1363 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1367 drivers/net/wireless/ath/wil6210/debugfs.c wil->fw_capabilities)) { wil 1370 drivers/net/wireless/ath/wil6210/debugfs.c wil_dbg_misc(wil, wil 1372 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_get_all_temperatures(wil, &sense_all_evt); wil 1389 drivers/net/wireless/ath/wil6210/debugfs.c wil_dbg_misc(wil, wil 1391 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_get_temperature(wil, &t_m, &t_r); wil 1406 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1407 drivers/net/wireless/ath/wil6210/debugfs.c struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; wil 1419 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1427 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1428 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_sta_info *p = &wil->sta[i]; wil 1451 drivers/net/wireless/ath/wil6210/debugfs.c vif = (mid < GET_MAX_VIFS(wil)) ? wil->vifs[mid] : NULL; wil 1474 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1475 drivers/net/wireless/ath/wil6210/debugfs.c struct net_device *ndev = wil->main_ndev; wil 1477 drivers/net/wireless/ath/wil6210/debugfs.c int rx = atomic_xchg(&wil->isr_count_rx, 0); wil 1478 drivers/net/wireless/ath/wil6210/debugfs.c int tx = atomic_xchg(&wil->isr_count_tx, 0); wil 1516 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 1523 drivers/net/wireless/ath/wil6210/debugfs.c sstate[wil->recovery_state]); wil 1535 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 1540 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->recovery_state != fw_recovery_pending) { wil 1541 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "No recovery pending\n"); wil 1546 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Offset [%d]\n", (int)*ppos); wil 1551 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Input too long, len = %d\n", (int)count); wil 1561 drivers/net/wireless/ath/wil6210/debugfs.c wil_set_recovery_state(wil, fw_recovery_running); wil 1563 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Bad recovery command \"%s\"\n", buf); wil 1626 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1629 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1630 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_sta_info *p = &wil->sta[i]; wil 1649 drivers/net/wireless/ath/wil6210/debugfs.c if (mid < GET_MAX_VIFS(wil)) { wil 1650 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_vif *vif = wil->vifs[mid]; wil 1709 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1714 drivers/net/wireless/ath/wil6210/debugfs.c mutex_lock(&wil->vif_mutex); wil 1715 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1716 drivers/net/wireless/ath/wil6210/debugfs.c vif = wil->vifs[i]; wil 1726 drivers/net/wireless/ath/wil6210/debugfs.c mutex_unlock(&wil->vif_mutex); wil 1735 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1738 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1739 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_sta_info *p = &wil->sta[i]; wil 1799 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1805 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid argument\n"); wil 1812 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid resolution %d\n", val); wil 1817 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->tx_latency == enable) wil 1820 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "%s TX latency measurements (resolution %dusec)\n", wil 1826 drivers/net/wireless/ath/wil6210/debugfs.c wil->tx_latency_res = val; wil 1827 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1828 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_sta_info *sta = &wil->sta[i]; wil 1839 drivers/net/wireless/ath/wil6210/debugfs.c wil->tx_latency = enable; wil 1880 drivers/net/wireless/ath/wil6210/debugfs.c static void wil_link_stats_print_global(struct wil6210_priv *wil, wil 1902 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1912 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1913 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->sta[i].status == wil_sta_unused) wil 1915 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->sta[i].mid != vif->mid) wil 1918 drivers/net/wireless/ath/wil6210/debugfs.c stats = &wil->sta[i].fw_stats_basic; wil 1925 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1929 drivers/net/wireless/ath/wil6210/debugfs.c rc = mutex_lock_interruptible(&wil->vif_mutex); wil 1936 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1937 drivers/net/wireless/ath/wil6210/debugfs.c vif = wil->vifs[i]; wil 1948 drivers/net/wireless/ath/wil6210/debugfs.c mutex_unlock(&wil->vif_mutex); wil 1962 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 1985 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "request link statistics, cid %d interval %d\n", wil 1988 drivers/net/wireless/ath/wil6210/debugfs.c rc = mutex_lock_interruptible(&wil->vif_mutex); wil 1992 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1993 drivers/net/wireless/ath/wil6210/debugfs.c vif = wil->vifs[i]; wil 2000 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "link statistics failed for mid %d\n", i); wil 2002 drivers/net/wireless/ath/wil6210/debugfs.c mutex_unlock(&wil->vif_mutex); wil 2018 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2020 drivers/net/wireless/ath/wil6210/debugfs.c if (!wil->fw_stats_global.ready) wil 2023 drivers/net/wireless/ath/wil6210/debugfs.c seq_printf(s, "TSF %lld\n", wil->fw_stats_global.tsf); wil 2024 drivers/net/wireless/ath/wil6210/debugfs.c wil_link_stats_print_global(wil, s, &wil->fw_stats_global.stats); wil 2041 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2043 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2048 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid argument\n"); wil 2052 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "request global link stats, interval %d\n", interval); wil 2056 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "global link stats failed %d\n", rc); wil 2089 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 2095 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid argument\n"); wil 2099 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "%s led %d\n", val ? "Enabling" : "Disabling", led_id); wil 2100 drivers/net/wireless/ath/wil6210/debugfs.c rc = wmi_led_cfg(wil, val); wil 2102 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "%s led %d failed\n", wil 2184 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2187 drivers/net/wireless/ath/wil6210/debugfs.c wil->fw_capabilities); wil 2208 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2210 drivers/net/wireless/ath/wil6210/debugfs.c if (wil->fw_version[0]) wil 2211 drivers/net/wireless/ath/wil6210/debugfs.c seq_printf(s, "%s\n", wil->fw_version); wil 2236 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 2238 drivers/net/wireless/ath/wil6210/debugfs.c memset(&wil->suspend_stats, 0, sizeof(wil->suspend_stats)); wil 2247 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = file->private_data; wil 2265 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_on.successful_suspends, wil 2266 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_on.failed_suspends, wil 2267 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_on.successful_resumes, wil 2268 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_on.failed_resumes, wil 2269 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.rejected_by_device, wil 2270 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_off.successful_suspends, wil 2271 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_off.failed_suspends, wil 2272 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_off.successful_resumes, wil 2273 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.r_off.failed_resumes, wil 2274 drivers/net/wireless/ath/wil6210/debugfs.c wil->suspend_stats.rejected_by_host); wil 2297 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2303 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "Invalid argument\n"); wil 2307 drivers/net/wireless/ath/wil6210/debugfs.c if (wil_has_active_ifaces(wil, true, false)) { wil 2308 drivers/net/wireless/ath/wil6210/debugfs.c wil_err(wil, "cannot change edma config after iface is up\n"); wil 2312 drivers/net/wireless/ath/wil6210/debugfs.c wil_info(wil, "%sable compressed_rx_status\n", wil 2315 drivers/net/wireless/ath/wil6210/debugfs.c wil->use_compressed_rx_status = compressed_rx_status; wil 2323 drivers/net/wireless/ath/wil6210/debugfs.c struct wil6210_priv *wil = s->private; wil 2325 drivers/net/wireless/ath/wil6210/debugfs.c seq_printf(s, "%d\n", wil->use_compressed_rx_status); wil 2346 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_init_blobs(struct wil6210_priv *wil, wil 2353 drivers/net/wireless/ath/wil6210/debugfs.c struct wil_blob_wrapper *wil_blob = &wil->blobs[i]; wil 2360 drivers/net/wireless/ath/wil6210/debugfs.c wil_blob->wil = wil; wil 2361 drivers/net/wireless/ath/wil6210/debugfs.c blob->data = (void * __force)wil->csr + HOSTADDR(map->host); wil 2408 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_init_files(struct wil6210_priv *wil, wil 2415 drivers/net/wireless/ath/wil6210/debugfs.c wil, dbg_files[i].fops); wil 2429 drivers/net/wireless/ath/wil6210/debugfs.c static void wil6210_debugfs_init_isr(struct wil6210_priv *wil, wil 2435 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_create_ISR(wil, dbg_icr[i].name, dbg, wil 2487 drivers/net/wireless/ath/wil6210/debugfs.c int wil6210_debugfs_init(struct wil6210_priv *wil) wil 2489 drivers/net/wireless/ath/wil6210/debugfs.c struct dentry *dbg = wil->debug = debugfs_create_dir(WIL_NAME, wil 2490 drivers/net/wireless/ath/wil6210/debugfs.c wil_to_wiphy(wil)->debugfsdir); wil 2494 drivers/net/wireless/ath/wil6210/debugfs.c wil->dbg_data.data_arr = kcalloc(dbg_off_count, wil 2497 drivers/net/wireless/ath/wil6210/debugfs.c if (!wil->dbg_data.data_arr) { wil 2499 drivers/net/wireless/ath/wil6210/debugfs.c wil->debug = NULL; wil 2503 drivers/net/wireless/ath/wil6210/debugfs.c wil->dbg_data.iomem_data_count = 0; wil 2505 drivers/net/wireless/ath/wil6210/debugfs.c wil_pmc_init(wil); wil 2507 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_files(wil, dbg); wil 2508 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_isr(wil, dbg); wil 2509 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_blobs(wil, dbg); wil 2510 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, dbg, wil, dbg_wil_off); wil 2511 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, dbg, (void * __force)wil->csr, wil 2513 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_init_offset(wil, dbg, NULL, dbg_statics); wil 2515 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_create_pseudo_ISR(wil, dbg); wil 2517 drivers/net/wireless/ath/wil6210/debugfs.c wil6210_debugfs_create_ITR_CNT(wil, dbg); wil 2522 drivers/net/wireless/ath/wil6210/debugfs.c void wil6210_debugfs_remove(struct wil6210_priv *wil) wil 2526 drivers/net/wireless/ath/wil6210/debugfs.c debugfs_remove_recursive(wil->debug); wil 2527 drivers/net/wireless/ath/wil6210/debugfs.c wil->debug = NULL; wil 2529 drivers/net/wireless/ath/wil6210/debugfs.c kfree(wil->dbg_data.data_arr); wil 2530 drivers/net/wireless/ath/wil6210/debugfs.c for (i = 0; i < wil->max_assoc_sta; i++) wil 2531 drivers/net/wireless/ath/wil6210/debugfs.c kfree(wil->sta[i].tx_latency_bins); wil 2536 drivers/net/wireless/ath/wil6210/debugfs.c wil_pmc_free(wil, false); wil 27 drivers/net/wireless/ath/wil6210/ethtool.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 29 drivers/net/wireless/ath/wil6210/ethtool.c mutex_lock(&wil->mutex); wil 31 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "ethtoolops_begin\n"); wil 38 drivers/net/wireless/ath/wil6210/ethtool.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 40 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "ethtoolops_complete\n"); wil 42 drivers/net/wireless/ath/wil6210/ethtool.c mutex_unlock(&wil->mutex); wil 48 drivers/net/wireless/ath/wil6210/ethtool.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 53 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "ethtoolops_get_coalesce\n"); wil 55 drivers/net/wireless/ath/wil6210/ethtool.c ret = wil_pm_runtime_get(wil); wil 59 drivers/net/wireless/ath/wil6210/ethtool.c tx_itr_en = wil_r(wil, RGF_DMA_ITR_TX_CNT_CTL); wil 61 drivers/net/wireless/ath/wil6210/ethtool.c tx_itr_val = wil_r(wil, RGF_DMA_ITR_TX_CNT_TRSH); wil 63 drivers/net/wireless/ath/wil6210/ethtool.c rx_itr_en = wil_r(wil, RGF_DMA_ITR_RX_CNT_CTL); wil 65 drivers/net/wireless/ath/wil6210/ethtool.c rx_itr_val = wil_r(wil, RGF_DMA_ITR_RX_CNT_TRSH); wil 67 drivers/net/wireless/ath/wil6210/ethtool.c wil_pm_runtime_put(wil); wil 77 drivers/net/wireless/ath/wil6210/ethtool.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 81 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "ethtoolops_set_coalesce: rx %d usec, tx %d usec\n", wil 85 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "No IRQ coalescing in monitor mode\n"); wil 97 drivers/net/wireless/ath/wil6210/ethtool.c wil->tx_max_burst_duration = cp->tx_coalesce_usecs; wil 98 drivers/net/wireless/ath/wil6210/ethtool.c wil->rx_max_burst_duration = cp->rx_coalesce_usecs; wil 100 drivers/net/wireless/ath/wil6210/ethtool.c ret = wil_pm_runtime_get(wil); wil 104 drivers/net/wireless/ath/wil6210/ethtool.c wil->txrx_ops.configure_interrupt_moderation(wil); wil 106 drivers/net/wireless/ath/wil6210/ethtool.c wil_pm_runtime_put(wil); wil 111 drivers/net/wireless/ath/wil6210/ethtool.c wil_dbg_misc(wil, "Unsupported coalescing params. Raw command:\n"); wil 22 drivers/net/wireless/ath/wil6210/fw_inc.c #define wil_err_fw(wil, fmt, arg...) wil_err(wil, "ERR[ FW ]" fmt, ##arg) wil 23 drivers/net/wireless/ath/wil6210/fw_inc.c #define wil_dbg_fw(wil, fmt, arg...) wil_dbg(wil, "DBG[ FW ]" fmt, ##arg) wil 30 drivers/net/wireless/ath/wil6210/fw_inc.c static bool wil_fw_addr_check(struct wil6210_priv *wil, wil 34 drivers/net/wireless/ath/wil6210/fw_inc.c *ioaddr = wmi_buffer_block(wil, val, size); wil 36 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "bad %s: 0x%08x\n", msg, le32_to_cpu(val)); wil 50 drivers/net/wireless/ath/wil6210/fw_inc.c static int wil_fw_verify(struct wil6210_priv *wil, const u8 *data, size_t size) wil 59 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "image size not aligned: %zu\n", size); wil 64 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "file too short: %zu bytes\n", size); wil 70 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "no file header\n"); wil 78 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "data length not aligned: %lu\n", (ulong)dlen); wil 82 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "file truncated at %zu/%lu\n", wil 87 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "data length too short: %lu\n", (ulong)dlen); wil 93 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "bad header signature: 0x%08x\n", wil 100 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unsupported header version: %d\n", wil 116 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "checksum mismatch:" wil 125 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_ignore_section(struct wil6210_priv *wil, const void *data, wil 132 drivers/net/wireless/ath/wil6210/fw_inc.c fw_handle_capabilities(struct wil6210_priv *wil, const void *data, wil 139 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "capabilities record too short: %zu\n", size); wil 146 drivers/net/wireless/ath/wil6210/fw_inc.c bitmap_zero(wil->fw_capabilities, WMI_FW_CAPABILITY_MAX); wil 147 drivers/net/wireless/ath/wil6210/fw_inc.c memcpy(wil->fw_capabilities, rec->capabilities, wil 148 drivers/net/wireless/ath/wil6210/fw_inc.c min_t(size_t, sizeof(wil->fw_capabilities), capa_size)); wil 155 drivers/net/wireless/ath/wil6210/fw_inc.c fw_handle_brd_file(struct wil6210_priv *wil, const void *data, wil 162 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err(wil, "board record too short, size %zu\n", size); wil 170 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err(wil, "brd info entries are missing\n"); wil 174 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info = kcalloc(max_num_ent, sizeof(struct wil_brd_info), wil 176 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil->brd_info) wil 180 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info[i].file_addr = wil 182 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info[i].file_max_size = wil 185 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil->brd_info[i].file_addr) wil 188 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, wil 190 drivers/net/wireless/ath/wil6210/fw_inc.c i, wil->brd_info[i].file_addr, wil 191 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info[i].file_max_size); wil 194 drivers/net/wireless/ath/wil6210/fw_inc.c wil->num_of_brd_entries = i; wil 195 drivers/net/wireless/ath/wil6210/fw_inc.c if (wil->num_of_brd_entries == 0) { wil 196 drivers/net/wireless/ath/wil6210/fw_inc.c kfree(wil->brd_info); wil 197 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info = NULL; wil 198 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, wil 202 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "num of brd info entries %d\n", wil 203 drivers/net/wireless/ath/wil6210/fw_inc.c wil->num_of_brd_entries); wil 210 drivers/net/wireless/ath/wil6210/fw_inc.c fw_handle_concurrency(struct wil6210_priv *wil, const void *data, wil 220 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "concurrency record too short: %zu\n", size); wil 241 drivers/net/wireless/ath/wil6210/fw_inc.c return wil_cfg80211_iface_combinations_from_fw(wil, rec); wil 243 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "concurrency record truncated\n"); wil 248 drivers/net/wireless/ath/wil6210/fw_inc.c fw_handle_comment(struct wil6210_priv *wil, const void *data, wil 262 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "magic is WIL_FW_CAPABILITIES_MAGIC\n"); wil 263 drivers/net/wireless/ath/wil6210/fw_inc.c rc = fw_handle_capabilities(wil, data, size); wil 266 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "magic is WIL_BRD_FILE_MAGIC\n"); wil 267 drivers/net/wireless/ath/wil6210/fw_inc.c rc = fw_handle_brd_file(wil, data, size); wil 270 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "magic is WIL_FW_CONCURRENCY_MAGIC\n"); wil 271 drivers/net/wireless/ath/wil6210/fw_inc.c rc = fw_handle_concurrency(wil, data, size); wil 281 drivers/net/wireless/ath/wil6210/fw_inc.c static int __fw_handle_data(struct wil6210_priv *wil, const void *data, wil 289 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "data record too short: %zu\n", size); wil 293 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &dst, addr, s, "address")) wil 295 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "write [0x%08x] <== %zu bytes\n", le32_to_cpu(addr), s); wil 302 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_data(struct wil6210_priv *wil, const void *data, wil 307 drivers/net/wireless/ath/wil6210/fw_inc.c return __fw_handle_data(wil, data, size, d->addr); wil 310 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_fill(struct wil6210_priv *wil, const void *data, wil 319 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "bad size for fill record: %zu\n", size); wil 324 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "fill size too short: %zu\n", s); wil 329 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "fill size not aligned: %zu\n", s); wil 333 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &dst, d->addr, s, "address")) wil 337 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "fill [0x%08x] <== 0x%08x, %zu bytes\n", wil 345 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_file_header(struct wil6210_priv *wil, const void *data, wil 351 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "file header length incorrect: %zu\n", size); wil 355 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "new file, ver. %d, %i bytes\n", wil 362 drivers/net/wireless/ath/wil6210/fw_inc.c memcpy(wil->fw_version, wil 365 drivers/net/wireless/ath/wil6210/fw_inc.c sizeof(wil->fw_version) - 1)); wil 370 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_direct_write(struct wil6210_priv *wil, const void *data, wil 378 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "record size not aligned on %zu: %zu\n", wil 390 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &dst, block[i].addr, 0, "address")) wil 395 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "write [0x%08x] <== 0x%08x " wil 405 drivers/net/wireless/ath/wil6210/fw_inc.c static int gw_write(struct wil6210_priv *wil, void __iomem *gwa_addr, wil 419 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "gw timeout\n"); wil 427 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_gateway_data(struct wil6210_priv *wil, const void *data, wil 440 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "gateway record too short: %zu\n", size); wil 445 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "gateway record data size" wil 454 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "gw write record [%3d] blocks, cmd 0x%08x\n", wil 457 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &gwa_addr, d->gateway_addr_addr, 0, wil 459 drivers/net/wireless/ath/wil6210/fw_inc.c !wil_fw_addr_check(wil, &gwa_val, d->gateway_value_addr, 0, wil 461 drivers/net/wireless/ath/wil6210/fw_inc.c !wil_fw_addr_check(wil, &gwa_cmd, d->gateway_cmd_addr, 0, wil 463 drivers/net/wireless/ath/wil6210/fw_inc.c !wil_fw_addr_check(wil, &gwa_ctl, d->gateway_ctrl_address, 0, wil 467 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "gw addresses: addr 0x%08x val 0x%08x" wil 479 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, " gw write[%3d] [0x%08x] <== 0x%08x\n", wil 483 drivers/net/wireless/ath/wil6210/fw_inc.c rc = gw_write(wil, gwa_addr, gwa_cmd, gwa_ctl, gw_cmd, a); wil 491 drivers/net/wireless/ath/wil6210/fw_inc.c static int fw_handle_gateway_data4(struct wil6210_priv *wil, const void *data, wil 504 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "gateway4 record too short: %zu\n", size); wil 509 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "gateway4 record data size" wil 518 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "gw4 write record [%3d] blocks, cmd 0x%08x\n", wil 521 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &gwa_addr, d->gateway_addr_addr, 0, wil 525 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &gwa_val[k], wil 529 drivers/net/wireless/ath/wil6210/fw_inc.c if (!wil_fw_addr_check(wil, &gwa_cmd, d->gateway_cmd_addr, 0, wil 531 drivers/net/wireless/ath/wil6210/fw_inc.c !wil_fw_addr_check(wil, &gwa_ctl, d->gateway_ctrl_address, 0, wil 535 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "gw4 addresses: addr 0x%08x cmd 0x%08x ctl 0x%08x\n", wil 551 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, " gw4 write[%3d] [0x%08x] <==\n", i, a); wil 557 drivers/net/wireless/ath/wil6210/fw_inc.c rc = gw_write(wil, gwa_addr, gwa_cmd, gwa_ctl, gw_cmd, a); wil 567 drivers/net/wireless/ath/wil6210/fw_inc.c int (*load_handler)(struct wil6210_priv *wil, const void *data, wil 569 drivers/net/wireless/ath/wil6210/fw_inc.c int (*parse_handler)(struct wil6210_priv *wil, const void *data, wil 585 drivers/net/wireless/ath/wil6210/fw_inc.c static int wil_fw_handle_record(struct wil6210_priv *wil, int type, wil 594 drivers/net/wireless/ath/wil6210/fw_inc.c wil, data, size) : wil 596 drivers/net/wireless/ath/wil6210/fw_inc.c wil, data, size); wil 598 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unknown record type: %d\n", type); wil 610 drivers/net/wireless/ath/wil6210/fw_inc.c static int wil_fw_process(struct wil6210_priv *wil, const void *data, wil 625 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unaligned record size: %zu\n", wil 629 drivers/net/wireless/ath/wil6210/fw_inc.c rc = wil_fw_handle_record(wil, le16_to_cpu(hdr->type), wil 635 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unprocessed bytes: %zu\n", size); wil 637 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "Stop at offset %ld" wil 657 drivers/net/wireless/ath/wil6210/fw_inc.c int wil_request_firmware(struct wil6210_priv *wil, const char *name, wil 665 drivers/net/wireless/ath/wil6210/fw_inc.c rc = request_firmware(&fw, name, wil_to_dev(wil)); wil 667 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "Failed to load firmware %s rc %d\n", name, rc); wil 670 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "Loading <%s>, %zu bytes\n", name, fw->size); wil 673 drivers/net/wireless/ath/wil6210/fw_inc.c wil->num_of_brd_entries = 0; wil 674 drivers/net/wireless/ath/wil6210/fw_inc.c kfree(wil->brd_info); wil 675 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info = NULL; wil 678 drivers/net/wireless/ath/wil6210/fw_inc.c rc1 = wil_fw_verify(wil, d, sz); wil 683 drivers/net/wireless/ath/wil6210/fw_inc.c rc = wil_fw_process(wil, d, rc1, load); wil 691 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "Loading <%s> failed, rc %d\n", name, rc); wil 700 drivers/net/wireless/ath/wil6210/fw_inc.c static int wil_brd_process(struct wil6210_priv *wil, const void *data, wil 726 drivers/net/wireless/ath/wil6210/fw_inc.c if (i >= wil->num_of_brd_entries) { wil 727 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, wil 729 drivers/net/wireless/ath/wil6210/fw_inc.c i, wil->num_of_brd_entries); wil 735 drivers/net/wireless/ath/wil6210/fw_inc.c if (wil->brd_info[i].file_max_size && wil 736 drivers/net/wireless/ath/wil6210/fw_inc.c hdr_sz > wil->brd_info[i].file_max_size) wil 741 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unaligned record size: %zu\n", wil 747 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, wil 753 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "data record too short: %zu\n", hdr_sz); wil 757 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, wil 759 drivers/net/wireless/ath/wil6210/fw_inc.c i, wil->brd_info[i].file_addr, wil 760 drivers/net/wireless/ath/wil6210/fw_inc.c wil->brd_info[i].file_max_size); wil 762 drivers/net/wireless/ath/wil6210/fw_inc.c rc = __fw_handle_data(wil, &hdr[1], hdr_sz, wil 763 drivers/net/wireless/ath/wil6210/fw_inc.c cpu_to_le32(wil->brd_info[i].file_addr)); wil 769 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "unprocessed bytes: %zu\n", size); wil 771 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, wil 792 drivers/net/wireless/ath/wil6210/fw_inc.c int wil_request_board(struct wil6210_priv *wil, const char *name) wil 797 drivers/net/wireless/ath/wil6210/fw_inc.c rc = request_firmware(&brd, name, wil_to_dev(wil)); wil 799 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "Failed to load brd %s\n", name); wil 802 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "Loading <%s>, %zu bytes\n", name, brd->size); wil 805 drivers/net/wireless/ath/wil6210/fw_inc.c dlen = wil_fw_verify(wil, brd->data, brd->size); wil 812 drivers/net/wireless/ath/wil6210/fw_inc.c rc = wil_brd_process(wil, brd->data, dlen); wil 817 drivers/net/wireless/ath/wil6210/fw_inc.c wil_err_fw(wil, "Loading <%s> failed, rc %d\n", name, rc); wil 829 drivers/net/wireless/ath/wil6210/fw_inc.c bool wil_fw_verify_file_exists(struct wil6210_priv *wil, const char *name) wil 834 drivers/net/wireless/ath/wil6210/fw_inc.c rc = request_firmware(&fw, name, wil_to_dev(wil)); wil 838 drivers/net/wireless/ath/wil6210/fw_inc.c wil_dbg_fw(wil, "<%s> not available: %d\n", name, rc); wil 86 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_tx(struct wil6210_priv *wil) wil 88 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_TX_ICR + offsetof(struct RGF_ICR, IMS), wil 92 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_tx_edma(struct wil6210_priv *wil) wil 94 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_TX_ICR + offsetof(struct RGF_ICR, IMS), wil 98 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_rx(struct wil6210_priv *wil) wil 100 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_RX_ICR + offsetof(struct RGF_ICR, IMS), wil 104 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_rx_edma(struct wil6210_priv *wil) wil 106 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_RX_ICR + offsetof(struct RGF_ICR, IMS), wil 110 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_misc(struct wil6210_priv *wil, bool mask_halp) wil 112 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "mask_irq_misc: mask_halp(%s)\n", wil 115 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, IMS), wil 119 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_mask_halp(struct wil6210_priv *wil) wil 121 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "mask_halp\n"); wil 123 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, IMS), wil 127 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_mask_irq_pseudo(struct wil6210_priv *wil) wil 129 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "mask_irq_pseudo\n"); wil 131 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_PSEUDO_CAUSE_MASK_SW, WIL6210_IRQ_DISABLE); wil 133 drivers/net/wireless/ath/wil6210/interrupt.c clear_bit(wil_status_irqen, wil->status); wil 136 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_unmask_irq_tx(struct wil6210_priv *wil) wil 138 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_TX_ICR + offsetof(struct RGF_ICR, IMC), wil 142 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_unmask_irq_tx_edma(struct wil6210_priv *wil) wil 144 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_TX_ICR + offsetof(struct RGF_ICR, IMC), wil 148 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_unmask_irq_rx(struct wil6210_priv *wil) wil 150 drivers/net/wireless/ath/wil6210/interrupt.c bool unmask_rx_htrsh = atomic_read(&wil->connected_vifs) > 0; wil 152 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_RX_ICR + offsetof(struct RGF_ICR, IMC), wil 156 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_unmask_irq_rx_edma(struct wil6210_priv *wil) wil 158 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_RX_ICR + offsetof(struct RGF_ICR, IMC), wil 162 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_unmask_irq_misc(struct wil6210_priv *wil, bool unmask_halp) wil 164 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "unmask_irq_misc: unmask_halp(%s)\n", wil 167 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, IMC), wil 171 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_unmask_halp(struct wil6210_priv *wil) wil 173 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "unmask_halp\n"); wil 175 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, IMC), wil 179 drivers/net/wireless/ath/wil6210/interrupt.c static void wil6210_unmask_irq_pseudo(struct wil6210_priv *wil) wil 181 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "unmask_irq_pseudo\n"); wil 183 drivers/net/wireless/ath/wil6210/interrupt.c set_bit(wil_status_irqen, wil->status); wil 185 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_PSEUDO_CAUSE_MASK_SW, WIL6210_IRQ_PSEUDO_MASK); wil 188 drivers/net/wireless/ath/wil6210/interrupt.c void wil_mask_irq(struct wil6210_priv *wil) wil 190 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "mask_irq\n"); wil 192 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_tx(wil); wil 193 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_tx_edma(wil); wil 194 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_rx(wil); wil 195 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_rx_edma(wil); wil 196 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_misc(wil, true); wil 197 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_pseudo(wil); wil 200 drivers/net/wireless/ath/wil6210/interrupt.c void wil_unmask_irq(struct wil6210_priv *wil) wil 202 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "unmask_irq\n"); wil 204 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_RX_ICR + offsetof(struct RGF_ICR, ICC), wil 206 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_TX_ICR + offsetof(struct RGF_ICR, ICC), wil 208 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, ICC), wil 210 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_TX_ICR + offsetof(struct RGF_ICR, ICC), wil 212 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_GEN_RX_ICR + offsetof(struct RGF_ICR, ICC), wil 215 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_pseudo(wil); wil 216 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->use_enhanced_dma_hw) { wil 217 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx_edma(wil); wil 218 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx_edma(wil); wil 220 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx(wil); wil 221 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx(wil); wil 223 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_misc(wil, true); wil 226 drivers/net/wireless/ath/wil6210/interrupt.c void wil_configure_interrupt_moderation_edma(struct wil6210_priv *wil) wil 230 drivers/net/wireless/ath/wil6210/interrupt.c wil_s(wil, RGF_INT_GEN_IDLE_TIME_LIMIT, WIL_EDMA_IDLE_TIME_LIMIT_USEC); wil 232 drivers/net/wireless/ath/wil6210/interrupt.c wil_s(wil, RGF_INT_GEN_TIME_UNIT_LIMIT, WIL_EDMA_TIME_UNIT_CLK_CYCLES); wil 235 drivers/net/wireless/ath/wil6210/interrupt.c moderation = wil->rx_max_burst_duration | wil 237 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_CTRL_INT_GEN_CFG_0, moderation); wil 238 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_INT_CTRL_INT_GEN_CFG_1, moderation); wil 243 drivers/net/wireless/ath/wil6210/interrupt.c wil_c(wil, RGF_INT_COUNT_ON_SPECIAL_EVT, 0x1FE); wil 244 drivers/net/wireless/ath/wil6210/interrupt.c wil_s(wil, RGF_INT_COUNT_ON_SPECIAL_EVT, 0x1); wil 247 drivers/net/wireless/ath/wil6210/interrupt.c void wil_configure_interrupt_moderation(struct wil6210_priv *wil) wil 249 drivers/net/wireless/ath/wil6210/interrupt.c struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; wil 251 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "configure_interrupt_moderation\n"); wil 260 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_CNT_CTL, BIT_DMA_ITR_TX_CNT_CTL_CLR); wil 261 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_CNT_TRSH, wil->tx_max_burst_duration); wil 262 drivers/net/wireless/ath/wil6210/interrupt.c wil_info(wil, "set ITR_TX_CNT_TRSH = %d usec\n", wil 263 drivers/net/wireless/ath/wil6210/interrupt.c wil->tx_max_burst_duration); wil 265 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_CNT_CTL, wil 269 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_IDL_CNT_CTL, BIT_DMA_ITR_TX_IDL_CNT_CTL_CLR); wil 270 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_IDL_CNT_TRSH, wil->tx_interframe_timeout); wil 271 drivers/net/wireless/ath/wil6210/interrupt.c wil_info(wil, "set ITR_TX_IDL_CNT_TRSH = %d usec\n", wil 272 drivers/net/wireless/ath/wil6210/interrupt.c wil->tx_interframe_timeout); wil 274 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_TX_IDL_CNT_CTL, BIT_DMA_ITR_TX_IDL_CNT_CTL_EN | wil 278 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_CNT_CTL, BIT_DMA_ITR_RX_CNT_CTL_CLR); wil 279 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_CNT_TRSH, wil->rx_max_burst_duration); wil 280 drivers/net/wireless/ath/wil6210/interrupt.c wil_info(wil, "set ITR_RX_CNT_TRSH = %d usec\n", wil 281 drivers/net/wireless/ath/wil6210/interrupt.c wil->rx_max_burst_duration); wil 283 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_CNT_CTL, wil 287 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_IDL_CNT_CTL, BIT_DMA_ITR_RX_IDL_CNT_CTL_CLR); wil 288 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_IDL_CNT_TRSH, wil->rx_interframe_timeout); wil 289 drivers/net/wireless/ath/wil6210/interrupt.c wil_info(wil, "set ITR_RX_IDL_CNT_TRSH = %d usec\n", wil 290 drivers/net/wireless/ath/wil6210/interrupt.c wil->rx_interframe_timeout); wil 292 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_ITR_RX_IDL_CNT_CTL, BIT_DMA_ITR_RX_IDL_CNT_CTL_EN | wil 298 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 302 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_rx(wil); wil 304 drivers/net/wireless/ath/wil6210/interrupt.c isr = wil_ioread32_and_clear(wil->csr + wil 309 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "ISR RX 0x%08x\n", isr); wil 312 drivers/net/wireless/ath/wil6210/interrupt.c wil_err_ratelimited(wil, "spurious IRQ: RX\n"); wil 313 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx(wil); wil 325 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "RX done / RX_HTRSH received, ISR (0x%x)\n", wil 330 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_fwready, wil->status))) { wil 331 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_napi_en, wil->status))) { wil 332 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_txrx(wil, "NAPI(Rx) schedule\n"); wil 334 drivers/net/wireless/ath/wil6210/interrupt.c napi_schedule(&wil->napi_rx); wil 337 drivers/net/wireless/ath/wil6210/interrupt.c wil, wil 341 drivers/net/wireless/ath/wil6210/interrupt.c wil_err_ratelimited(wil, "Got Rx interrupt while in reset\n"); wil 346 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "un-handled RX ISR bits 0x%08x\n", isr); wil 350 drivers/net/wireless/ath/wil6210/interrupt.c atomic_inc(&wil->isr_count_rx); wil 353 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx(wil); wil 360 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 364 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_rx_edma(wil); wil 366 drivers/net/wireless/ath/wil6210/interrupt.c isr = wil_ioread32_and_clear(wil->csr + wil 371 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "ISR RX 0x%08x\n", isr); wil 374 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "spurious IRQ: RX\n"); wil 375 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx_edma(wil); wil 380 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "RX status ring\n"); wil 382 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_fwready, wil->status))) { wil 383 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_napi_en, wil->status))) { wil 384 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_txrx(wil, "NAPI(Rx) schedule\n"); wil 386 drivers/net/wireless/ath/wil6210/interrupt.c napi_schedule(&wil->napi_rx); wil 388 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, wil 392 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "Got Rx interrupt while in reset\n"); wil 397 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "un-handled RX ISR bits 0x%08x\n", isr); wil 401 drivers/net/wireless/ath/wil6210/interrupt.c atomic_inc(&wil->isr_count_rx); wil 404 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_rx_edma(wil); wil 411 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 415 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_tx_edma(wil); wil 417 drivers/net/wireless/ath/wil6210/interrupt.c isr = wil_ioread32_and_clear(wil->csr + wil 422 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "ISR TX 0x%08x\n", isr); wil 425 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "spurious IRQ: TX\n"); wil 426 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx_edma(wil); wil 431 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "TX status ring\n"); wil 433 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_fwready, wil->status))) { wil 434 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_txrx(wil, "NAPI(Tx) schedule\n"); wil 436 drivers/net/wireless/ath/wil6210/interrupt.c napi_schedule(&wil->napi_tx); wil 438 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "Got Tx status ring IRQ while in reset\n"); wil 443 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "un-handled TX ISR bits 0x%08x\n", isr); wil 447 drivers/net/wireless/ath/wil6210/interrupt.c atomic_inc(&wil->isr_count_tx); wil 450 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx_edma(wil); wil 457 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 461 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_tx(wil); wil 463 drivers/net/wireless/ath/wil6210/interrupt.c isr = wil_ioread32_and_clear(wil->csr + wil 468 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "ISR TX 0x%08x\n", isr); wil 471 drivers/net/wireless/ath/wil6210/interrupt.c wil_err_ratelimited(wil, "spurious IRQ: TX\n"); wil 472 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx(wil); wil 477 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "TX done\n"); wil 481 drivers/net/wireless/ath/wil6210/interrupt.c if (likely(test_bit(wil_status_fwready, wil->status))) { wil 482 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_txrx(wil, "NAPI(Tx) schedule\n"); wil 484 drivers/net/wireless/ath/wil6210/interrupt.c napi_schedule(&wil->napi_tx); wil 486 drivers/net/wireless/ath/wil6210/interrupt.c wil_err_ratelimited(wil, "Got Tx interrupt while in reset\n"); wil 491 drivers/net/wireless/ath/wil6210/interrupt.c wil_err_ratelimited(wil, "un-handled TX ISR bits 0x%08x\n", wil 496 drivers/net/wireless/ath/wil6210/interrupt.c atomic_inc(&wil->isr_count_tx); wil 499 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_tx(wil); wil 504 drivers/net/wireless/ath/wil6210/interrupt.c static void wil_notify_fw_error(struct wil6210_priv *wil) wil 506 drivers/net/wireless/ath/wil6210/interrupt.c struct device *dev = &wil->main_ndev->dev; wil 512 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "Notify about firmware error\n"); wil 516 drivers/net/wireless/ath/wil6210/interrupt.c static void wil_cache_mbox_regs(struct wil6210_priv *wil) wil 519 drivers/net/wireless/ath/wil6210/interrupt.c wil_memcpy_fromio_32(&wil->mbox_ctl, wil->csr + HOST_MBOX, wil 521 drivers/net/wireless/ath/wil6210/interrupt.c wil_mbox_ring_le2cpus(&wil->mbox_ctl.rx); wil 522 drivers/net/wireless/ath/wil6210/interrupt.c wil_mbox_ring_le2cpus(&wil->mbox_ctl.tx); wil 525 drivers/net/wireless/ath/wil6210/interrupt.c static bool wil_validate_mbox_regs(struct wil6210_priv *wil) wil 530 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->mbox_ctl.rx.entry_size < min_size) { wil 531 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "rx mbox entry too small (%d)\n", wil 532 drivers/net/wireless/ath/wil6210/interrupt.c wil->mbox_ctl.rx.entry_size); wil 535 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->mbox_ctl.tx.entry_size < min_size) { wil 536 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "tx mbox entry too small (%d)\n", wil 537 drivers/net/wireless/ath/wil6210/interrupt.c wil->mbox_ctl.tx.entry_size); wil 546 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 549 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_misc(wil, false); wil 551 drivers/net/wireless/ath/wil6210/interrupt.c isr = wil_ioread32_and_clear(wil->csr + wil 556 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "ISR MISC 0x%08x\n", isr); wil 559 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "spurious IRQ: MISC\n"); wil 560 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_misc(wil, false); wil 565 drivers/net/wireless/ath/wil6210/interrupt.c u32 fw_assert_code = wil_r(wil, wil->rgf_fw_assert_code_addr); wil 567 drivers/net/wireless/ath/wil6210/interrupt.c wil_r(wil, wil->rgf_ucode_assert_code_addr); wil 569 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, wil 572 drivers/net/wireless/ath/wil6210/interrupt.c clear_bit(wil_status_fwready, wil->status); wil 581 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "IRQ: FW ready\n"); wil 582 drivers/net/wireless/ath/wil6210/interrupt.c wil_cache_mbox_regs(wil); wil 583 drivers/net/wireless/ath/wil6210/interrupt.c if (wil_validate_mbox_regs(wil)) wil 584 drivers/net/wireless/ath/wil6210/interrupt.c set_bit(wil_status_mbox_ready, wil->status); wil 594 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->halp.handle_icr) { wil 596 drivers/net/wireless/ath/wil6210/interrupt.c wil->halp.handle_icr = false; wil 597 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "irq_misc: HALP IRQ invoked\n"); wil 598 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_misc(wil, true); wil 599 drivers/net/wireless/ath/wil6210/interrupt.c complete(&wil->halp.comp); wil 603 drivers/net/wireless/ath/wil6210/interrupt.c wil->isr_misc = isr; wil 608 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_misc(wil, false); wil 615 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 616 drivers/net/wireless/ath/wil6210/interrupt.c u32 isr = wil->isr_misc; wil 619 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "Thread ISR MISC 0x%08x\n", isr); wil 622 drivers/net/wireless/ath/wil6210/interrupt.c wil->recovery_state = fw_recovery_pending; wil 623 drivers/net/wireless/ath/wil6210/interrupt.c wil_fw_core_dump(wil); wil 624 drivers/net/wireless/ath/wil6210/interrupt.c wil_notify_fw_error(wil); wil 626 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->platform_ops.notify) { wil 627 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "notify platform driver about FW crash"); wil 628 drivers/net/wireless/ath/wil6210/interrupt.c wil->platform_ops.notify(wil->platform_handle, wil 631 drivers/net/wireless/ath/wil6210/interrupt.c wil_fw_error_recovery(wil); wil 635 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "MBOX event\n"); wil 636 drivers/net/wireless/ath/wil6210/interrupt.c wmi_recv_cmd(wil); wil 641 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "un-handled MISC ISR bits 0x%08x\n", isr); wil 643 drivers/net/wireless/ath/wil6210/interrupt.c wil->isr_misc = 0; wil 645 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_misc(wil, false); wil 650 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->n_msi == 3 && wil->suspend_resp_rcvd) { wil 651 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "set suspend_resp_comp to true\n"); wil 652 drivers/net/wireless/ath/wil6210/interrupt.c wil->suspend_resp_comp = true; wil 653 drivers/net/wireless/ath/wil6210/interrupt.c wake_up_interruptible(&wil->wq); wil 664 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 666 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "Thread IRQ\n"); wil 668 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->isr_misc) wil 671 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_pseudo(wil); wil 673 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->suspend_resp_rcvd) { wil 674 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "set suspend_resp_comp to true\n"); wil 675 drivers/net/wireless/ath/wil6210/interrupt.c wil->suspend_resp_comp = true; wil 676 drivers/net/wireless/ath/wil6210/interrupt.c wake_up_interruptible(&wil->wq); wil 688 drivers/net/wireless/ath/wil6210/interrupt.c static int wil6210_debug_irq_mask(struct wil6210_priv *wil, u32 pseudo_cause) wil 694 drivers/net/wireless/ath/wil6210/interrupt.c if (!test_bit(wil_status_irqen, wil->status)) { wil 695 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->use_enhanced_dma_hw) { wil 696 drivers/net/wireless/ath/wil6210/interrupt.c icm_rx = wil_ioread32_and_clear(wil->csr + wil 699 drivers/net/wireless/ath/wil6210/interrupt.c icr_rx = wil_ioread32_and_clear(wil->csr + wil 702 drivers/net/wireless/ath/wil6210/interrupt.c imv_rx = wil_r(wil, RGF_INT_GEN_RX_ICR + wil 704 drivers/net/wireless/ath/wil6210/interrupt.c icm_tx = wil_ioread32_and_clear(wil->csr + wil 707 drivers/net/wireless/ath/wil6210/interrupt.c icr_tx = wil_ioread32_and_clear(wil->csr + wil 710 drivers/net/wireless/ath/wil6210/interrupt.c imv_tx = wil_r(wil, RGF_INT_GEN_TX_ICR + wil 713 drivers/net/wireless/ath/wil6210/interrupt.c icm_rx = wil_ioread32_and_clear(wil->csr + wil 716 drivers/net/wireless/ath/wil6210/interrupt.c icr_rx = wil_ioread32_and_clear(wil->csr + wil 719 drivers/net/wireless/ath/wil6210/interrupt.c imv_rx = wil_r(wil, RGF_DMA_EP_RX_ICR + wil 721 drivers/net/wireless/ath/wil6210/interrupt.c icm_tx = wil_ioread32_and_clear(wil->csr + wil 724 drivers/net/wireless/ath/wil6210/interrupt.c icr_tx = wil_ioread32_and_clear(wil->csr + wil 727 drivers/net/wireless/ath/wil6210/interrupt.c imv_tx = wil_r(wil, RGF_DMA_EP_TX_ICR + wil 730 drivers/net/wireless/ath/wil6210/interrupt.c icm_misc = wil_ioread32_and_clear(wil->csr + wil 733 drivers/net/wireless/ath/wil6210/interrupt.c icr_misc = wil_ioread32_and_clear(wil->csr + wil 736 drivers/net/wireless/ath/wil6210/interrupt.c imv_misc = wil_r(wil, RGF_DMA_EP_MISC_ICR + wil 745 drivers/net/wireless/ath/wil6210/interrupt.c wil_err(wil, "IRQ when it should be masked: pseudo 0x%08x\n" wil 763 drivers/net/wireless/ath/wil6210/interrupt.c struct wil6210_priv *wil = cookie; wil 764 drivers/net/wireless/ath/wil6210/interrupt.c u32 pseudo_cause = wil_r(wil, RGF_DMA_PSEUDO_CAUSE); wil 773 drivers/net/wireless/ath/wil6210/interrupt.c if (unlikely(wil6210_debug_irq_mask(wil, pseudo_cause))) wil 777 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "Pseudo IRQ 0x%08x\n", pseudo_cause); wil 779 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_mask_irq_pseudo(wil); wil 795 drivers/net/wireless/ath/wil6210/interrupt.c (wil->txrx_ops.irq_rx(irq, cookie) == IRQ_WAKE_THREAD)) wil 799 drivers/net/wireless/ath/wil6210/interrupt.c (wil->txrx_ops.irq_tx(irq, cookie) == IRQ_WAKE_THREAD)) wil 808 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_irq_pseudo(wil); wil 813 drivers/net/wireless/ath/wil6210/interrupt.c static int wil6210_request_3msi(struct wil6210_priv *wil, int irq) wil 822 drivers/net/wireless/ath/wil6210/interrupt.c rc = request_irq(irq, wil->txrx_ops.irq_tx, IRQF_SHARED, wil 823 drivers/net/wireless/ath/wil6210/interrupt.c WIL_NAME "_tx", wil); wil 827 drivers/net/wireless/ath/wil6210/interrupt.c rc = request_irq(irq + 1, wil->txrx_ops.irq_rx, IRQF_SHARED, wil 828 drivers/net/wireless/ath/wil6210/interrupt.c WIL_NAME "_rx", wil); wil 834 drivers/net/wireless/ath/wil6210/interrupt.c IRQF_SHARED, WIL_NAME "_misc", wil); wil 840 drivers/net/wireless/ath/wil6210/interrupt.c free_irq(irq + 1, wil); wil 842 drivers/net/wireless/ath/wil6210/interrupt.c free_irq(irq, wil); wil 855 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_clear_irq(struct wil6210_priv *wil) wil 857 drivers/net/wireless/ath/wil6210/interrupt.c wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_RX_ICR) + wil 859 drivers/net/wireless/ath/wil6210/interrupt.c wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_TX_ICR) + wil 861 drivers/net/wireless/ath/wil6210/interrupt.c wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_RX_ICR) + wil 863 drivers/net/wireless/ath/wil6210/interrupt.c wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_TX_ICR) + wil 865 drivers/net/wireless/ath/wil6210/interrupt.c wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_MISC_ICR) + wil 870 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_set_halp(struct wil6210_priv *wil) wil 872 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "set_halp\n"); wil 874 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, ICS), wil 878 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_clear_halp(struct wil6210_priv *wil) wil 880 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_irq(wil, "clear_halp\n"); wil 882 drivers/net/wireless/ath/wil6210/interrupt.c wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, ICR), wil 884 drivers/net/wireless/ath/wil6210/interrupt.c wil6210_unmask_halp(wil); wil 887 drivers/net/wireless/ath/wil6210/interrupt.c int wil6210_init_irq(struct wil6210_priv *wil, int irq) wil 891 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_misc(wil, "init_irq: %s, n_msi=%d\n", wil 892 drivers/net/wireless/ath/wil6210/interrupt.c wil->n_msi ? "MSI" : "INTx", wil->n_msi); wil 894 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->use_enhanced_dma_hw) { wil 895 drivers/net/wireless/ath/wil6210/interrupt.c wil->txrx_ops.irq_tx = wil6210_irq_tx_edma; wil 896 drivers/net/wireless/ath/wil6210/interrupt.c wil->txrx_ops.irq_rx = wil6210_irq_rx_edma; wil 898 drivers/net/wireless/ath/wil6210/interrupt.c wil->txrx_ops.irq_tx = wil6210_irq_tx; wil 899 drivers/net/wireless/ath/wil6210/interrupt.c wil->txrx_ops.irq_rx = wil6210_irq_rx; wil 902 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->n_msi == 3) wil 903 drivers/net/wireless/ath/wil6210/interrupt.c rc = wil6210_request_3msi(wil, irq); wil 907 drivers/net/wireless/ath/wil6210/interrupt.c wil->n_msi ? 0 : IRQF_SHARED, wil 908 drivers/net/wireless/ath/wil6210/interrupt.c WIL_NAME, wil); wil 912 drivers/net/wireless/ath/wil6210/interrupt.c void wil6210_fini_irq(struct wil6210_priv *wil, int irq) wil 914 drivers/net/wireless/ath/wil6210/interrupt.c wil_dbg_misc(wil, "fini_irq:\n"); wil 916 drivers/net/wireless/ath/wil6210/interrupt.c wil_mask_irq(wil); wil 917 drivers/net/wireless/ath/wil6210/interrupt.c free_irq(irq, wil); wil 918 drivers/net/wireless/ath/wil6210/interrupt.c if (wil->n_msi == 3) { wil 919 drivers/net/wireless/ath/wil6210/interrupt.c free_irq(irq + 1, wil); wil 920 drivers/net/wireless/ath/wil6210/interrupt.c free_irq(irq + 2, wil); wil 190 drivers/net/wireless/ath/wil6210/main.c int wil_mem_access_lock(struct wil6210_priv *wil) wil 192 drivers/net/wireless/ath/wil6210/main.c if (!down_read_trylock(&wil->mem_lock)) wil 195 drivers/net/wireless/ath/wil6210/main.c if (test_bit(wil_status_suspending, wil->status) || wil 196 drivers/net/wireless/ath/wil6210/main.c test_bit(wil_status_suspended, wil->status)) { wil 197 drivers/net/wireless/ath/wil6210/main.c up_read(&wil->mem_lock); wil 204 drivers/net/wireless/ath/wil6210/main.c void wil_mem_access_unlock(struct wil6210_priv *wil) wil 206 drivers/net/wireless/ath/wil6210/main.c up_read(&wil->mem_lock); wil 209 drivers/net/wireless/ath/wil6210/main.c static void wil_ring_fini_tx(struct wil6210_priv *wil, int id) wil 211 drivers/net/wireless/ath/wil6210/main.c struct wil_ring *ring = &wil->ring_tx[id]; wil 212 drivers/net/wireless/ath/wil6210/main.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[id]; wil 214 drivers/net/wireless/ath/wil6210/main.c lockdep_assert_held(&wil->mutex); wil 219 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "vring_fini_tx: id=%d\n", id); wil 234 drivers/net/wireless/ath/wil6210/main.c if (test_bit(wil_status_napi_en, wil->status)) wil 235 drivers/net/wireless/ath/wil6210/main.c napi_synchronize(&wil->napi_tx); wil 237 drivers/net/wireless/ath/wil6210/main.c wil->txrx_ops.ring_fini_tx(wil, ring); wil 240 drivers/net/wireless/ath/wil6210/main.c static bool wil_vif_is_connected(struct wil6210_priv *wil, u8 mid) wil 244 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 245 drivers/net/wireless/ath/wil6210/main.c if (wil->sta[i].mid == mid && wil 246 drivers/net/wireless/ath/wil6210/main.c wil->sta[i].status == wil_sta_connected) wil 258 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 261 drivers/net/wireless/ath/wil6210/main.c struct wil_sta_info *sta = &wil->sta[cid]; wil 262 drivers/net/wireless/ath/wil6210/main.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 265 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, wil 271 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "STA MID mismatch with VIF MID(%d)\n", wil 295 drivers/net/wireless/ath/wil6210/main.c wil_tid_ampdu_rx_free(wil, r); wil 303 drivers/net/wireless/ath/wil6210/main.c for (i = min_ring_id; i < ARRAY_SIZE(wil->ring_tx); i++) { wil 304 drivers/net/wireless/ath/wil6210/main.c if (wil->ring2cid_tid[i][0] == cid) wil 305 drivers/net/wireless/ath/wil6210/main.c wil_ring_fini_tx(wil, i); wil 315 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 324 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "disconnect_complete: bssid=%pM, reason=%d\n", wil 339 drivers/net/wireless/ath/wil6210/main.c cid = wil_find_cid(wil, vif->mid, bssid); wil 340 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, wil 343 drivers/net/wireless/ath/wil6210/main.c if (wil_cid_valid(wil, cid)) /* disconnect 1 peer */ wil 346 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Disconnect complete all\n"); wil 347 drivers/net/wireless/ath/wil6210/main.c for (cid = 0; cid < wil->max_assoc_sta; cid++) wil 356 drivers/net/wireless/ath/wil6210/main.c wil_update_net_queues_bh(wil, vif, NULL, true); wil 358 drivers/net/wireless/ath/wil6210/main.c if (!wil_has_other_active_ifaces(wil, ndev, false, true)) wil 359 drivers/net/wireless/ath/wil6210/main.c wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); wil 362 drivers/net/wireless/ath/wil6210/main.c atomic_dec(&wil->connected_vifs); wil 381 drivers/net/wireless/ath/wil6210/main.c if (!wil_vif_is_connected(wil, vif->mid)) { wil 382 drivers/net/wireless/ath/wil6210/main.c wil_update_net_queues_bh(wil, vif, NULL, true); wil 385 drivers/net/wireless/ath/wil6210/main.c atomic_dec(&wil->connected_vifs); wil 387 drivers/net/wireless/ath/wil6210/main.c wil_update_net_queues_bh(wil, vif, NULL, false); wil 398 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 400 drivers/net/wireless/ath/wil6210/main.c struct wil_sta_info *sta = &wil->sta[cid]; wil 404 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "disconnect_cid: CID %d, MID %d, status %d\n", wil 411 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "STA MID mismatch with VIF MID(%d)\n", vif->mid); wil 428 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil; wil 435 drivers/net/wireless/ath/wil6210/main.c wil = vif_to_wil(vif); wil 439 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "disconnect bssid=%pM, reason=%d\n", bssid, reason_code); wil 453 drivers/net/wireless/ath/wil6210/main.c cid = wil_find_cid(wil, vif->mid, bssid); wil 454 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Disconnect %pM, CID=%d, reason=%d\n", wil 456 drivers/net/wireless/ath/wil6210/main.c if (wil_cid_valid(wil, cid)) /* disconnect 1 peer */ wil 459 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Disconnect all\n"); wil 460 drivers/net/wireless/ath/wil6210/main.c for (cid = 0; cid < wil->max_assoc_sta; cid++) wil 475 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 493 drivers/net/wireless/ath/wil6210/main.c rc = wmi_call(wil, WMI_DISCONNECT_CMDID, vif->mid, NULL, 0, wil 497 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "disconnect error %d\n", rc); wil 501 drivers/net/wireless/ath/wil6210/main.c wil_update_net_queues_bh(wil, vif, NULL, true); wil 508 drivers/net/wireless/ath/wil6210/main.c static int wil_wait_for_recovery(struct wil6210_priv *wil) wil 510 drivers/net/wireless/ath/wil6210/main.c if (wait_event_interruptible(wil->wq, wil->recovery_state != wil 512 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "Interrupt, canceling recovery\n"); wil 515 drivers/net/wireless/ath/wil6210/main.c if (wil->recovery_state != fw_recovery_running) { wil 516 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Recovery cancelled\n"); wil 519 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Proceed with recovery\n"); wil 523 drivers/net/wireless/ath/wil6210/main.c void wil_set_recovery_state(struct wil6210_priv *wil, int state) wil 525 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "set_recovery_state: %d -> %d\n", wil 526 drivers/net/wireless/ath/wil6210/main.c wil->recovery_state, state); wil 528 drivers/net/wireless/ath/wil6210/main.c wil->recovery_state = state; wil 529 drivers/net/wireless/ath/wil6210/main.c wake_up_interruptible(&wil->wq); wil 532 drivers/net/wireless/ath/wil6210/main.c bool wil_is_recovery_blocked(struct wil6210_priv *wil) wil 534 drivers/net/wireless/ath/wil6210/main.c return no_fw_recovery && (wil->recovery_state == fw_recovery_pending); wil 539 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = container_of(work, struct wil6210_priv, wil 541 drivers/net/wireless/ath/wil6210/main.c struct net_device *ndev = wil->main_ndev; wil 544 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "fw error worker\n"); wil 547 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "No recovery - interface is down\n"); wil 555 drivers/net/wireless/ath/wil6210/main.c if (time_is_after_jiffies(wil->last_fw_recovery + wil 557 drivers/net/wireless/ath/wil6210/main.c wil->recovery_count++; wil 559 drivers/net/wireless/ath/wil6210/main.c wil->recovery_count = 1; /* fw was alive for a long time */ wil 561 drivers/net/wireless/ath/wil6210/main.c if (wil->recovery_count > WIL6210_FW_RECOVERY_RETRIES) { wil 562 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "too many recovery attempts (%d), giving up\n", wil 563 drivers/net/wireless/ath/wil6210/main.c wil->recovery_count); wil 567 drivers/net/wireless/ath/wil6210/main.c wil->last_fw_recovery = jiffies; wil 569 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "fw error recovery requested (try %d)...\n", wil 570 drivers/net/wireless/ath/wil6210/main.c wil->recovery_count); wil 572 drivers/net/wireless/ath/wil6210/main.c wil->recovery_state = fw_recovery_running; wil 573 drivers/net/wireless/ath/wil6210/main.c if (wil_wait_for_recovery(wil) != 0) wil 577 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->mutex); wil 587 drivers/net/wireless/ath/wil6210/main.c __wil_down(wil); wil 588 drivers/net/wireless/ath/wil6210/main.c __wil_up(wil); wil 595 drivers/net/wireless/ath/wil6210/main.c __wil_down(wil); wil 596 drivers/net/wireless/ath/wil6210/main.c __wil_up(wil); wil 597 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->mutex); wil 598 drivers/net/wireless/ath/wil6210/main.c wil_cfg80211_ap_recovery(wil); wil 599 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->mutex); wil 600 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "... completed\n"); wil 603 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "No recovery - unknown interface type %d\n", wil 608 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->mutex); wil 612 drivers/net/wireless/ath/wil6210/main.c static int wil_find_free_ring(struct wil6210_priv *wil) wil 615 drivers/net/wireless/ath/wil6210/main.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 618 drivers/net/wireless/ath/wil6210/main.c if (!wil->ring_tx[i].va) wil 626 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 630 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "No connection pending\n"); wil 633 drivers/net/wireless/ath/wil6210/main.c ringid = wil_find_free_ring(wil); wil 635 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "No free vring found\n"); wil 639 drivers/net/wireless/ath/wil6210/main.c wil_dbg_wmi(wil, "Configure for connection CID %d MID %d ring %d\n", wil 642 drivers/net/wireless/ath/wil6210/main.c rc = wil->txrx_ops.ring_init_tx(vif, ringid, 1 << tx_ring_order, wil 645 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "init TX for CID %d MID %d vring %d failed\n", wil 654 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 657 drivers/net/wireless/ath/wil6210/main.c if (ri >= 0 && wil->ring_tx[ri].va) wil 660 drivers/net/wireless/ath/wil6210/main.c ri = wil_find_free_ring(wil); wil 665 drivers/net/wireless/ath/wil6210/main.c rc = wil->txrx_ops.ring_init_bcast(vif, ri, 1 << bcast_ring_order); wil 674 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 681 drivers/net/wireless/ath/wil6210/main.c wil_ring_fini_tx(wil, ri); wil 684 drivers/net/wireless/ath/wil6210/main.c void wil_bcast_fini_all(struct wil6210_priv *wil) wil 689 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 690 drivers/net/wireless/ath/wil6210/main.c vif = wil->vifs[i]; wil 696 drivers/net/wireless/ath/wil6210/main.c int wil_priv_init(struct wil6210_priv *wil) wil 700 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "priv_init\n"); wil 702 drivers/net/wireless/ath/wil6210/main.c memset(wil->sta, 0, sizeof(wil->sta)); wil 704 drivers/net/wireless/ath/wil6210/main.c spin_lock_init(&wil->sta[i].tid_rx_lock); wil 705 drivers/net/wireless/ath/wil6210/main.c wil->sta[i].mid = U8_MAX; wil 709 drivers/net/wireless/ath/wil6210/main.c spin_lock_init(&wil->ring_tx_data[i].lock); wil 710 drivers/net/wireless/ath/wil6210/main.c wil->ring2cid_tid[i][0] = WIL6210_MAX_CID; wil 713 drivers/net/wireless/ath/wil6210/main.c mutex_init(&wil->mutex); wil 714 drivers/net/wireless/ath/wil6210/main.c mutex_init(&wil->vif_mutex); wil 715 drivers/net/wireless/ath/wil6210/main.c mutex_init(&wil->wmi_mutex); wil 716 drivers/net/wireless/ath/wil6210/main.c mutex_init(&wil->halp.lock); wil 718 drivers/net/wireless/ath/wil6210/main.c init_completion(&wil->wmi_ready); wil 719 drivers/net/wireless/ath/wil6210/main.c init_completion(&wil->wmi_call); wil 720 drivers/net/wireless/ath/wil6210/main.c init_completion(&wil->halp.comp); wil 722 drivers/net/wireless/ath/wil6210/main.c INIT_WORK(&wil->wmi_event_worker, wmi_event_worker); wil 723 drivers/net/wireless/ath/wil6210/main.c INIT_WORK(&wil->fw_error_worker, wil_fw_error_worker); wil 725 drivers/net/wireless/ath/wil6210/main.c INIT_LIST_HEAD(&wil->pending_wmi_ev); wil 726 drivers/net/wireless/ath/wil6210/main.c spin_lock_init(&wil->wmi_ev_lock); wil 727 drivers/net/wireless/ath/wil6210/main.c spin_lock_init(&wil->net_queue_lock); wil 728 drivers/net/wireless/ath/wil6210/main.c spin_lock_init(&wil->eap_lock); wil 730 drivers/net/wireless/ath/wil6210/main.c init_waitqueue_head(&wil->wq); wil 731 drivers/net/wireless/ath/wil6210/main.c init_rwsem(&wil->mem_lock); wil 733 drivers/net/wireless/ath/wil6210/main.c wil->wmi_wq = create_singlethread_workqueue(WIL_NAME "_wmi"); wil 734 drivers/net/wireless/ath/wil6210/main.c if (!wil->wmi_wq) wil 737 drivers/net/wireless/ath/wil6210/main.c wil->wq_service = create_singlethread_workqueue(WIL_NAME "_service"); wil 738 drivers/net/wireless/ath/wil6210/main.c if (!wil->wq_service) wil 741 drivers/net/wireless/ath/wil6210/main.c wil->last_fw_recovery = jiffies; wil 742 drivers/net/wireless/ath/wil6210/main.c wil->tx_interframe_timeout = WIL6210_ITR_TX_INTERFRAME_TIMEOUT_DEFAULT; wil 743 drivers/net/wireless/ath/wil6210/main.c wil->rx_interframe_timeout = WIL6210_ITR_RX_INTERFRAME_TIMEOUT_DEFAULT; wil 744 drivers/net/wireless/ath/wil6210/main.c wil->tx_max_burst_duration = WIL6210_ITR_TX_MAX_BURST_DURATION_DEFAULT; wil 745 drivers/net/wireless/ath/wil6210/main.c wil->rx_max_burst_duration = WIL6210_ITR_RX_MAX_BURST_DURATION_DEFAULT; wil 750 drivers/net/wireless/ath/wil6210/main.c wil->ps_profile = WMI_PS_PROFILE_TYPE_DEFAULT; wil 752 drivers/net/wireless/ath/wil6210/main.c wil->wakeup_trigger = WMI_WAKEUP_TRIGGER_UCAST | wil 754 drivers/net/wireless/ath/wil6210/main.c memset(&wil->suspend_stats, 0, sizeof(wil->suspend_stats)); wil 755 drivers/net/wireless/ath/wil6210/main.c wil->ring_idle_trsh = 16; wil 757 drivers/net/wireless/ath/wil6210/main.c wil->reply_mid = U8_MAX; wil 758 drivers/net/wireless/ath/wil6210/main.c wil->max_vifs = 1; wil 759 drivers/net/wireless/ath/wil6210/main.c wil->max_assoc_sta = max_assoc_sta; wil 762 drivers/net/wireless/ath/wil6210/main.c wil->num_rx_status_rings = WIL_DEFAULT_NUM_RX_STATUS_RINGS; wil 763 drivers/net/wireless/ath/wil6210/main.c wil->tx_status_ring_order = WIL_TX_SRING_SIZE_ORDER_DEFAULT; wil 769 drivers/net/wireless/ath/wil6210/main.c wil->rx_status_ring_order = WIL_RX_SRING_SIZE_ORDER_DEFAULT; wil 774 drivers/net/wireless/ath/wil6210/main.c wil->rx_buff_id_count = WIL_RX_BUFF_ARR_SIZE_DEFAULT; wil 776 drivers/net/wireless/ath/wil6210/main.c wil->amsdu_en = 1; wil 781 drivers/net/wireless/ath/wil6210/main.c destroy_workqueue(wil->wmi_wq); wil 786 drivers/net/wireless/ath/wil6210/main.c void wil6210_bus_request(struct wil6210_priv *wil, u32 kbps) wil 788 drivers/net/wireless/ath/wil6210/main.c if (wil->platform_ops.bus_request) { wil 789 drivers/net/wireless/ath/wil6210/main.c wil->bus_request_kbps = kbps; wil 790 drivers/net/wireless/ath/wil6210/main.c wil->platform_ops.bus_request(wil->platform_handle, kbps); wil 808 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 810 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "disconnecting\n"); wil 828 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 830 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "got disconnect\n"); wil 836 drivers/net/wireless/ath/wil6210/main.c void wil_priv_deinit(struct wil6210_priv *wil) wil 838 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "priv_deinit\n"); wil 840 drivers/net/wireless/ath/wil6210/main.c wil_set_recovery_state(wil, fw_recovery_idle); wil 841 drivers/net/wireless/ath/wil6210/main.c cancel_work_sync(&wil->fw_error_worker); wil 842 drivers/net/wireless/ath/wil6210/main.c wmi_event_flush(wil); wil 843 drivers/net/wireless/ath/wil6210/main.c destroy_workqueue(wil->wq_service); wil 844 drivers/net/wireless/ath/wil6210/main.c destroy_workqueue(wil->wmi_wq); wil 845 drivers/net/wireless/ath/wil6210/main.c kfree(wil->brd_info); wil 848 drivers/net/wireless/ath/wil6210/main.c static void wil_shutdown_bl(struct wil6210_priv *wil) wil 852 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_BL + wil 858 drivers/net/wireless/ath/wil6210/main.c val = wil_r(wil, RGF_USER_BL + wil 862 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "BL is ready for halt\n"); wil 866 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "BL did not report ready for halt\n"); wil 880 drivers/net/wireless/ath/wil6210/main.c static void wil_freeze_bl(struct wil6210_priv *wil) wil 885 drivers/net/wireless/ath/wil6210/main.c jal = wil_r(wil, wil->iccm_base + ivt3); wil 887 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "invalid IVT entry found, skipping\n"); wil 894 drivers/net/wireless/ath/wil6210/main.c saved = wil_r(wil, RGF_USER_USAGE_8); wil 895 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USAGE_8, saved | BIT_USER_PREVENT_DEEP_SLEEP); wil 899 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, wil->iccm_base + ivt3 + 4, ARC_me_imm32(ivt3)); wil 903 drivers/net/wireless/ath/wil6210/main.c upc = wil_r(wil, RGF_USER_CPU_PC); wil 905 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "BL freeze failed, PC=0x%08X\n", upc); wil 907 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USAGE_8, saved); wil 910 drivers/net/wireless/ath/wil6210/main.c static void wil_bl_prepare_halt(struct wil6210_priv *wil) wil 921 drivers/net/wireless/ath/wil6210/main.c tmp = wil_r(wil, RGF_USER_BL + wil 925 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "old BL, skipping halt preparation\n"); wil 929 drivers/net/wireless/ath/wil6210/main.c tmp = wil_r(wil, RGF_USER_BL + wil 935 drivers/net/wireless/ath/wil6210/main.c wil_shutdown_bl(wil); wil 937 drivers/net/wireless/ath/wil6210/main.c wil_freeze_bl(wil); wil 940 drivers/net/wireless/ath/wil6210/main.c static inline void wil_halt_cpu(struct wil6210_priv *wil) wil 942 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) { wil 943 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USER_CPU_0_TALYN_MB, wil 945 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_MAC_CPU_0_TALYN_MB, wil 948 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USER_CPU_0, BIT_USER_USER_CPU_MAN_RST); wil 949 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_MAC_CPU_0, BIT_USER_MAC_CPU_MAN_RST); wil 953 drivers/net/wireless/ath/wil6210/main.c static inline void wil_release_cpu(struct wil6210_priv *wil) wil 956 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) wil 957 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USER_CPU_0_TALYN_MB, 1); wil 959 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USER_CPU_0, 1); wil 962 drivers/net/wireless/ath/wil6210/main.c static void wil_set_oob_mode(struct wil6210_priv *wil, u8 mode) wil 964 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "oob_mode to %d\n", mode); wil 967 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_USAGE_6, BIT_USER_OOB_MODE | wil 971 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_USAGE_6, BIT_USER_OOB_R2_MODE); wil 972 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_USAGE_6, BIT_USER_OOB_MODE); wil 975 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_USAGE_6, BIT_USER_OOB_MODE); wil 976 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_USAGE_6, BIT_USER_OOB_R2_MODE); wil 979 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "invalid oob_mode: %d\n", mode); wil 983 drivers/net/wireless/ath/wil6210/main.c static int wil_wait_device_ready(struct wil6210_priv *wil, int no_flash) wil 992 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Reset completed\n"); wil 996 drivers/net/wireless/ath/wil6210/main.c x = wil_r(wil, RGF_USER_BL + wil 1000 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "BL.ready 0x%08x => 0x%08x\n", wil 1005 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "Reset not completed, bl.ready 0x%08x\n", wil 1011 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Reset completed in %d ms\n", wil 1018 drivers/net/wireless/ath/wil6210/main.c static int wil_wait_device_ready_talyn_mb(struct wil6210_priv *wil) wil 1030 drivers/net/wireless/ath/wil6210/main.c wil->boot_config = WIL_BOOT_ERR; wil 1039 drivers/net/wireless/ath/wil6210/main.c otp_hw = wil_r(wil, RGF_USER_OTP_HW_RD_MACHINE_1); wil 1045 drivers/net/wireless/ath/wil6210/main.c wil->boot_config = WIL_BOOT_VANILLA; wil 1050 drivers/net/wireless/ath/wil6210/main.c wil->boot_config = WIL_BOOT_DEVELOPMENT; wil 1055 drivers/net/wireless/ath/wil6210/main.c wil->boot_config = WIL_BOOT_PRODUCTION; wil 1066 drivers/net/wireless/ath/wil6210/main.c wil->boot_config = WIL_BOOT_PRODUCTION; wil 1075 drivers/net/wireless/ath/wil6210/main.c if (wil->boot_config == WIL_BOOT_ERR) { wil 1076 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, wil 1082 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, wil 1084 drivers/net/wireless/ath/wil6210/main.c delay * OTP_HW_DELAY, otp_hw, wil->boot_config); wil 1086 drivers/net/wireless/ath/wil6210/main.c if (wil->boot_config == WIL_BOOT_VANILLA) wil 1096 drivers/net/wireless/ath/wil6210/main.c otp_hw = wil_r(wil, RGF_USER_OTP_HW_RD_MACHINE_1); wil 1100 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "TO waiting for hw_section_done\n"); wil 1105 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "HW section done in %d ms\n", delay * RST_DELAY); wil 1107 drivers/net/wireless/ath/wil6210/main.c otp_qc_secured = wil_r(wil, RGF_OTP_QC_SECURED); wil 1108 drivers/net/wireless/ath/wil6210/main.c wil->secured_boot = otp_qc_secured & BIT_BOOT_FROM_ROM ? 1 : 0; wil 1109 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "secured boot is %sabled\n", wil 1110 drivers/net/wireless/ath/wil6210/main.c wil->secured_boot ? "en" : "dis"); wil 1113 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Reset completed\n"); wil 1118 drivers/net/wireless/ath/wil6210/main.c static int wil_target_reset(struct wil6210_priv *wil, int no_flash) wil 1123 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Resetting \"%s\"...\n", wil->hw_name); wil 1125 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version < HW_VER_TALYN) { wil 1127 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_HP_CTRL, BIT(15)); wil 1128 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_CLKS_CTL_SW_RST_MASK_0, wil 1130 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_CLKS_CTL_SW_RST_MASK_0, BIT_CAR_PERST_RST); wil 1133 drivers/net/wireless/ath/wil6210/main.c wil_halt_cpu(wil); wil 1137 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_BL + wil 1141 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_BL + wil 1146 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_USAGE_6, BIT(0)); wil 1148 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_CAF_OSC_CONTROL, BIT_CAF_OSC_XTAL_EN); wil 1151 drivers/net/wireless/ath/wil6210/main.c x = wil_r(wil, RGF_CAF_PLL_LOCK_STATUS); wil 1153 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "Xtal stabilization timeout\n" wil 1158 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_SPARROW_M_4, BIT_SPARROW_M_4_SEL_SLEEP_OR_REF); wil 1160 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_CAR_AHB_SW_SEL); wil 1162 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_EXT_SW_RST_VEC_0, 0x3ff81f); wil 1163 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_EXT_SW_RST_VEC_1, 0xf); wil 1165 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) { wil 1166 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_2, 0x7e000000); wil 1167 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_1, 0x0000003f); wil 1168 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_3, 0xc00000f0); wil 1169 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0xffe7fe00); wil 1171 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_2, 0xfe000000); wil 1172 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_1, 0x0000003f); wil 1173 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_3, 0x000000f0); wil 1174 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0xffe7fe00); wil 1177 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_EXT_SW_RST_VEC_0, 0x0); wil 1178 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_EXT_SW_RST_VEC_1, 0x0); wil 1180 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_3, 0); wil 1181 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_2, 0); wil 1182 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_1, 0); wil 1183 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0); wil 1185 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_3, 0x00000003); wil 1187 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_2, 0x00008000); wil 1189 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_CLKS_CTL_SW_RST_VEC_0, 0); wil 1191 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version == HW_VER_TALYN_MB) wil 1192 drivers/net/wireless/ath/wil6210/main.c rc = wil_wait_device_ready_talyn_mb(wil); wil 1194 drivers/net/wireless/ath/wil6210/main.c rc = wil_wait_device_ready(wil, no_flash); wil 1198 drivers/net/wireless/ath/wil6210/main.c wil_c(wil, RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); wil 1201 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_DMA_OFUL_NID_0, BIT_DMA_OFUL_NID_0_RX_EXT_TR_EN | wil 1204 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version < HW_VER_TALYN_MB && no_flash) { wil 1206 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME1, 0x60001); wil 1207 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME2, 0x20027); wil 1208 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME3, 0x1); wil 1209 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME4, 0x20027); wil 1210 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME5, 0x30003); wil 1211 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME6, 0x20002); wil 1212 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME7, 0x60001); wil 1213 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME8, 0x60001); wil 1214 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME9, 0x60001); wil 1215 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_IFC_RD_TIME10, 0x60001); wil 1216 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_XPM_RD_DOUT_SAMPLE_TIME, 0x57); wil 1222 drivers/net/wireless/ath/wil6210/main.c static void wil_collect_fw_info(struct wil6210_priv *wil) wil 1224 drivers/net/wireless/ath/wil6210/main.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1228 drivers/net/wireless/ath/wil6210/main.c wil_refresh_fw_capabilities(wil); wil 1230 drivers/net/wireless/ath/wil6210/main.c rc = wmi_get_mgmt_retry(wil, &retry_short); wil 1233 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "FW retry_short: %d\n", retry_short); wil 1237 drivers/net/wireless/ath/wil6210/main.c void wil_refresh_fw_capabilities(struct wil6210_priv *wil) wil 1239 drivers/net/wireless/ath/wil6210/main.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1242 drivers/net/wireless/ath/wil6210/main.c wil->keep_radio_on_during_sleep = wil 1244 drivers/net/wireless/ath/wil6210/main.c wil->platform_capa) && wil 1245 drivers/net/wireless/ath/wil6210/main.c test_bit(WMI_FW_CAPABILITY_D3_SUSPEND, wil->fw_capabilities); wil 1247 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "keep_radio_on_during_sleep (%d)\n", wil 1248 drivers/net/wireless/ath/wil6210/main.c wil->keep_radio_on_during_sleep); wil 1250 drivers/net/wireless/ath/wil6210/main.c if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) wil 1255 drivers/net/wireless/ath/wil6210/main.c if (test_bit(WMI_FW_CAPABILITY_PNO, wil->fw_capabilities)) { wil 1263 drivers/net/wireless/ath/wil6210/main.c if (test_bit(WMI_FW_CAPABILITY_TX_REQ_EXT, wil->fw_capabilities)) wil 1266 drivers/net/wireless/ath/wil6210/main.c if (wil->platform_ops.set_features) { wil 1268 drivers/net/wireless/ath/wil6210/main.c wil->fw_capabilities) && wil 1270 drivers/net/wireless/ath/wil6210/main.c wil->platform_capa)) ? wil 1273 drivers/net/wireless/ath/wil6210/main.c if (wil->n_msi == 3) wil 1276 drivers/net/wireless/ath/wil6210/main.c wil->platform_ops.set_features(wil->platform_handle, features); wil 1280 drivers/net/wireless/ath/wil6210/main.c wil->fw_capabilities)) { wil 1281 drivers/net/wireless/ath/wil6210/main.c wil->max_agg_wsize = WIL_MAX_AGG_WSIZE_64; wil 1282 drivers/net/wireless/ath/wil6210/main.c wil->max_ampdu_size = WIL_MAX_AMPDU_SIZE_128; wil 1284 drivers/net/wireless/ath/wil6210/main.c wil->max_agg_wsize = WIL_MAX_AGG_WSIZE; wil 1285 drivers/net/wireless/ath/wil6210/main.c wil->max_ampdu_size = WIL_MAX_AMPDU_SIZE; wil 1288 drivers/net/wireless/ath/wil6210/main.c update_supported_bands(wil); wil 1301 drivers/net/wireless/ath/wil6210/main.c void wil_get_board_file(struct wil6210_priv *wil, char *buf, size_t len) wil 1307 drivers/net/wireless/ath/wil6210/main.c if (wil->board_file) { wil 1308 drivers/net/wireless/ath/wil6210/main.c board_file = wil->board_file; wil 1313 drivers/net/wireless/ath/wil6210/main.c if (strcmp(wil->wil_fw_name, wil_talyn_fw_name) == 0) wil 1322 drivers/net/wireless/ath/wil6210/main.c static int wil_get_bl_info(struct wil6210_priv *wil) wil 1324 drivers/net/wireless/ath/wil6210/main.c struct net_device *ndev = wil->main_ndev; wil 1325 drivers/net/wireless/ath/wil6210/main.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1334 drivers/net/wireless/ath/wil6210/main.c wil_memcpy_fromio_32(&bl, wil->csr + HOSTADDR(RGF_USER_BL), wil 1343 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, wil 1347 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Boot Loader build unknown for struct v0\n"); wil 1354 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, wil 1359 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Boot Loader build %d.%d.%d.%d\n", wil 1365 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "BL: Invalid MAC %pM\n", mac); wil 1375 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "RF communication error 0x%04x", wil 1383 drivers/net/wireless/ath/wil6210/main.c static void wil_bl_crash_info(struct wil6210_priv *wil, bool is_err) wil 1386 drivers/net/wireless/ath/wil6210/main.c u32 bl_ver = wil_r(wil, RGF_USER_BL + wil 1393 drivers/net/wireless/ath/wil6210/main.c bl_assert_code = wil_r(wil, RGF_USER_BL + wil 1396 drivers/net/wireless/ath/wil6210/main.c bl_assert_blink = wil_r(wil, RGF_USER_BL + wil 1399 drivers/net/wireless/ath/wil6210/main.c bl_magic_number = wil_r(wil, RGF_USER_BL + wil 1404 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, wil 1408 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, wil 1414 drivers/net/wireless/ath/wil6210/main.c static int wil_get_otp_info(struct wil6210_priv *wil) wil 1416 drivers/net/wireless/ath/wil6210/main.c struct net_device *ndev = wil->main_ndev; wil 1417 drivers/net/wireless/ath/wil6210/main.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1423 drivers/net/wireless/ath/wil6210/main.c wil_memcpy_fromio_32(mac, wil->csr + HOSTADDR(mac_addr), sizeof(mac)); wil 1426 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "using OEM MAC %pM\n", mac); wil 1428 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) wil 1433 drivers/net/wireless/ath/wil6210/main.c wil_memcpy_fromio_32(mac, wil->csr + HOSTADDR(mac_addr), wil 1438 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "Invalid MAC %pM\n", mac); wil 1450 drivers/net/wireless/ath/wil6210/main.c static int wil_wait_for_fw_ready(struct wil6210_priv *wil) wil 1453 drivers/net/wireless/ath/wil6210/main.c ulong left = wait_for_completion_timeout(&wil->wmi_ready, to); wil 1456 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "Firmware not ready\n"); wil 1459 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "FW ready after %d ms. HW version 0x%08x\n", wil 1460 drivers/net/wireless/ath/wil6210/main.c jiffies_to_msecs(to-left), wil->hw_version); wil 1467 drivers/net/wireless/ath/wil6210/main.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1473 drivers/net/wireless/ath/wil6210/main.c lockdep_assert_held(&wil->vif_mutex); wil 1478 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Abort scan_request 0x%p\n", vif->scan_request); wil 1480 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->vif_mutex); wil 1483 drivers/net/wireless/ath/wil6210/main.c wait_event_interruptible_timeout(wil->wq, !vif->scan_request, wil 1487 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->vif_mutex); wil 1494 drivers/net/wireless/ath/wil6210/main.c void wil_abort_scan_all_vifs(struct wil6210_priv *wil, bool sync) wil 1498 drivers/net/wireless/ath/wil6210/main.c lockdep_assert_held(&wil->vif_mutex); wil 1500 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1501 drivers/net/wireless/ath/wil6210/main.c struct wil6210_vif *vif = wil->vifs[i]; wil 1508 drivers/net/wireless/ath/wil6210/main.c int wil_ps_update(struct wil6210_priv *wil, enum wmi_ps_profile_type ps_profile) wil 1512 drivers/net/wireless/ath/wil6210/main.c if (!test_bit(WMI_FW_CAPABILITY_PS_CONFIG, wil->fw_capabilities)) { wil 1513 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "set_power_mgmt not supported\n"); wil 1517 drivers/net/wireless/ath/wil6210/main.c rc = wmi_ps_dev_profile_cfg(wil, ps_profile); wil 1519 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "wmi_ps_dev_profile_cfg failed (%d)\n", rc); wil 1521 drivers/net/wireless/ath/wil6210/main.c wil->ps_profile = ps_profile; wil 1526 drivers/net/wireless/ath/wil6210/main.c static void wil_pre_fw_config(struct wil6210_priv *wil) wil 1528 drivers/net/wireless/ath/wil6210/main.c wil_clear_fw_log_addr(wil); wil 1530 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_USAGE_6, 1); wil 1535 drivers/net/wireless/ath/wil6210/main.c wil6210_clear_irq(wil); wil 1538 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version < HW_VER_TALYN_MB) { wil 1539 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, ICR), 0); wil 1540 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_CAF_ICR + offsetof(struct RGF_ICR, IMV), ~0); wil 1546 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version < HW_VER_TALYN_MB) wil 1547 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_PAL_UNIT_ICR + offsetof(struct RGF_ICR, ICR), wil 1550 drivers/net/wireless/ath/wil6210/main.c if (wil->fw_calib_result > 0) { wil 1551 drivers/net/wireless/ath/wil6210/main.c __le32 val = cpu_to_le32(wil->fw_calib_result | wil 1553 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_FW_CALIB_RESULT, (u32 __force)val); wil 1557 drivers/net/wireless/ath/wil6210/main.c static int wil_restore_vifs(struct wil6210_priv *wil) wil 1564 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1565 drivers/net/wireless/ath/wil6210/main.c vif = wil->vifs[i]; wil 1572 drivers/net/wireless/ath/wil6210/main.c rc = wmi_port_allocate(wil, vif->mid, ndev->dev_addr, wil 1575 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "fail to restore VIF %d type %d, rc %d\n", wil 1590 drivers/net/wireless/ath/wil6210/main.c void wil_clear_fw_log_addr(struct wil6210_priv *wil) wil 1593 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USAGE_1, 0); wil 1595 drivers/net/wireless/ath/wil6210/main.c wil_w(wil, RGF_USER_USAGE_2, 0); wil 1596 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Cleared FW and ucode log address"); wil 1604 drivers/net/wireless/ath/wil6210/main.c int wil_reset(struct wil6210_priv *wil, bool load_fw) wil 1611 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "reset\n"); wil 1613 drivers/net/wireless/ath/wil6210/main.c WARN_ON(!mutex_is_locked(&wil->mutex)); wil 1614 drivers/net/wireless/ath/wil6210/main.c WARN_ON(test_bit(wil_status_napi_en, wil->status)); wil 1620 drivers/net/wireless/ath/wil6210/main.c struct net_device *ndev = wil->main_ndev; wil 1627 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version == HW_VER_UNKNOWN) wil 1630 drivers/net/wireless/ath/wil6210/main.c if (test_bit(WIL_PLATFORM_CAPA_T_PWR_ON_0, wil->platform_capa) && wil 1631 drivers/net/wireless/ath/wil6210/main.c wil->hw_version < HW_VER_TALYN_MB) { wil 1632 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Notify FW to set T_POWER_ON=0\n"); wil 1633 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_USAGE_8, BIT_USER_SUPPORT_T_POWER_ON_0); wil 1636 drivers/net/wireless/ath/wil6210/main.c if (test_bit(WIL_PLATFORM_CAPA_EXT_CLK, wil->platform_capa)) { wil 1637 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "Notify FW on ext clock configuration\n"); wil 1638 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_USER_USAGE_8, BIT_USER_EXT_CLK); wil 1641 drivers/net/wireless/ath/wil6210/main.c if (wil->platform_ops.notify) { wil 1642 drivers/net/wireless/ath/wil6210/main.c rc = wil->platform_ops.notify(wil->platform_handle, wil 1645 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "PRE_RESET platform notify failed, rc %d\n", wil 1649 drivers/net/wireless/ath/wil6210/main.c set_bit(wil_status_resetting, wil->status); wil 1650 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->vif_mutex); wil 1651 drivers/net/wireless/ath/wil6210/main.c wil_abort_scan_all_vifs(wil, false); wil 1652 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->vif_mutex); wil 1654 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 1655 drivers/net/wireless/ath/wil6210/main.c vif = wil->vifs[i]; wil 1663 drivers/net/wireless/ath/wil6210/main.c wil_bcast_fini_all(wil); wil 1666 drivers/net/wireless/ath/wil6210/main.c wmi_led_cfg(wil, false); wil 1669 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->wmi_mutex); wil 1670 drivers/net/wireless/ath/wil6210/main.c if (test_bit(wil_status_suspending, wil->status)) wil 1672 drivers/net/wireless/ath/wil6210/main.c bitmap_and(wil->status, wil->status, &status_flags, wil 1674 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "wil->status (0x%lx)\n", *wil->status); wil 1675 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->wmi_mutex); wil 1677 drivers/net/wireless/ath/wil6210/main.c wil_mask_irq(wil); wil 1679 drivers/net/wireless/ath/wil6210/main.c wmi_event_flush(wil); wil 1681 drivers/net/wireless/ath/wil6210/main.c flush_workqueue(wil->wq_service); wil 1682 drivers/net/wireless/ath/wil6210/main.c flush_workqueue(wil->wmi_wq); wil 1684 drivers/net/wireless/ath/wil6210/main.c no_flash = test_bit(hw_capa_no_flash, wil->hw_capa); wil 1686 drivers/net/wireless/ath/wil6210/main.c wil_bl_crash_info(wil, false); wil 1687 drivers/net/wireless/ath/wil6210/main.c wil_disable_irq(wil); wil 1688 drivers/net/wireless/ath/wil6210/main.c rc = wil_target_reset(wil, no_flash); wil 1689 drivers/net/wireless/ath/wil6210/main.c wil6210_clear_irq(wil); wil 1690 drivers/net/wireless/ath/wil6210/main.c wil_enable_irq(wil); wil 1691 drivers/net/wireless/ath/wil6210/main.c wil->txrx_ops.rx_fini(wil); wil 1692 drivers/net/wireless/ath/wil6210/main.c wil->txrx_ops.tx_fini(wil); wil 1695 drivers/net/wireless/ath/wil6210/main.c wil_bl_crash_info(wil, true); wil 1700 drivers/net/wireless/ath/wil6210/main.c rc = wil_get_otp_info(wil); wil 1702 drivers/net/wireless/ath/wil6210/main.c rc = wil_get_bl_info(wil); wil 1710 drivers/net/wireless/ath/wil6210/main.c wil_set_oob_mode(wil, oob_mode); wil 1714 drivers/net/wireless/ath/wil6210/main.c if (wil->secured_boot) { wil 1715 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "secured boot is not supported\n"); wil 1720 drivers/net/wireless/ath/wil6210/main.c wil_get_board_file(wil, board_file, sizeof(board_file)); wil 1721 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Use firmware <%s> + board <%s>\n", wil 1722 drivers/net/wireless/ath/wil6210/main.c wil->wil_fw_name, board_file); wil 1725 drivers/net/wireless/ath/wil6210/main.c wil_bl_prepare_halt(wil); wil 1727 drivers/net/wireless/ath/wil6210/main.c wil_halt_cpu(wil); wil 1728 drivers/net/wireless/ath/wil6210/main.c memset(wil->fw_version, 0, sizeof(wil->fw_version)); wil 1730 drivers/net/wireless/ath/wil6210/main.c rc = wil_request_firmware(wil, wil->wil_fw_name, true); wil 1733 drivers/net/wireless/ath/wil6210/main.c if (wil->num_of_brd_entries) wil 1734 drivers/net/wireless/ath/wil6210/main.c rc = wil_request_board(wil, board_file); wil 1736 drivers/net/wireless/ath/wil6210/main.c rc = wil_request_firmware(wil, board_file, true); wil 1740 drivers/net/wireless/ath/wil6210/main.c wil_pre_fw_config(wil); wil 1741 drivers/net/wireless/ath/wil6210/main.c wil_release_cpu(wil); wil 1745 drivers/net/wireless/ath/wil6210/main.c reinit_completion(&wil->wmi_ready); wil 1746 drivers/net/wireless/ath/wil6210/main.c reinit_completion(&wil->wmi_call); wil 1747 drivers/net/wireless/ath/wil6210/main.c reinit_completion(&wil->halp.comp); wil 1749 drivers/net/wireless/ath/wil6210/main.c clear_bit(wil_status_resetting, wil->status); wil 1752 drivers/net/wireless/ath/wil6210/main.c wil_unmask_irq(wil); wil 1755 drivers/net/wireless/ath/wil6210/main.c rc = wil_wait_for_fw_ready(wil); wil 1760 drivers/net/wireless/ath/wil6210/main.c rc = wmi_echo(wil); wil 1762 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "wmi_echo failed, rc %d\n", rc); wil 1766 drivers/net/wireless/ath/wil6210/main.c wil->txrx_ops.configure_interrupt_moderation(wil); wil 1771 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) wil 1772 drivers/net/wireless/ath/wil6210/main.c wil_s(wil, RGF_DMA_MISC_CTL, wil 1775 drivers/net/wireless/ath/wil6210/main.c rc = wil_restore_vifs(wil); wil 1777 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "failed to restore vifs, rc %d\n", rc); wil 1781 drivers/net/wireless/ath/wil6210/main.c wil_collect_fw_info(wil); wil 1783 drivers/net/wireless/ath/wil6210/main.c if (wil->ps_profile != WMI_PS_PROFILE_TYPE_DEFAULT) wil 1784 drivers/net/wireless/ath/wil6210/main.c wil_ps_update(wil, wil->ps_profile); wil 1786 drivers/net/wireless/ath/wil6210/main.c if (wil->platform_ops.notify) { wil 1787 drivers/net/wireless/ath/wil6210/main.c rc = wil->platform_ops.notify(wil->platform_handle, wil 1790 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "FW_RDY notify failed, rc %d\n", wil 1800 drivers/net/wireless/ath/wil6210/main.c clear_bit(wil_status_resetting, wil->status); wil 1804 drivers/net/wireless/ath/wil6210/main.c void wil_fw_error_recovery(struct wil6210_priv *wil) wil 1806 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "starting fw error recovery\n"); wil 1808 drivers/net/wireless/ath/wil6210/main.c if (test_bit(wil_status_resetting, wil->status)) { wil 1809 drivers/net/wireless/ath/wil6210/main.c wil_info(wil, "Reset already in progress\n"); wil 1813 drivers/net/wireless/ath/wil6210/main.c wil->recovery_state = fw_recovery_pending; wil 1814 drivers/net/wireless/ath/wil6210/main.c schedule_work(&wil->fw_error_worker); wil 1817 drivers/net/wireless/ath/wil6210/main.c int __wil_up(struct wil6210_priv *wil) wil 1819 drivers/net/wireless/ath/wil6210/main.c struct net_device *ndev = wil->main_ndev; wil 1823 drivers/net/wireless/ath/wil6210/main.c WARN_ON(!mutex_is_locked(&wil->mutex)); wil 1825 drivers/net/wireless/ath/wil6210/main.c down_write(&wil->mem_lock); wil 1826 drivers/net/wireless/ath/wil6210/main.c rc = wil_reset(wil, true); wil 1827 drivers/net/wireless/ath/wil6210/main.c up_write(&wil->mem_lock); wil 1833 drivers/net/wireless/ath/wil6210/main.c rx_ring_order = wil->hw_version < HW_VER_TALYN_MB ? wil 1837 drivers/net/wireless/ath/wil6210/main.c rc = wil->txrx_ops.rx_init(wil, rx_ring_order); wil 1841 drivers/net/wireless/ath/wil6210/main.c rc = wil->txrx_ops.tx_init(wil); wil 1847 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "type: STATION\n"); wil 1851 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "type: AP\n"); wil 1855 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "type: P2P_CLIENT\n"); wil 1859 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "type: P2P_GO\n"); wil 1863 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "type: Monitor\n"); wil 1872 drivers/net/wireless/ath/wil6210/main.c wmi_set_mac_address(wil, ndev->dev_addr); wil 1874 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "NAPI enable\n"); wil 1875 drivers/net/wireless/ath/wil6210/main.c napi_enable(&wil->napi_rx); wil 1876 drivers/net/wireless/ath/wil6210/main.c napi_enable(&wil->napi_tx); wil 1877 drivers/net/wireless/ath/wil6210/main.c set_bit(wil_status_napi_en, wil->status); wil 1879 drivers/net/wireless/ath/wil6210/main.c wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); wil 1884 drivers/net/wireless/ath/wil6210/main.c int wil_up(struct wil6210_priv *wil) wil 1888 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "up\n"); wil 1890 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->mutex); wil 1891 drivers/net/wireless/ath/wil6210/main.c rc = __wil_up(wil); wil 1892 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->mutex); wil 1897 drivers/net/wireless/ath/wil6210/main.c int __wil_down(struct wil6210_priv *wil) wil 1900 drivers/net/wireless/ath/wil6210/main.c WARN_ON(!mutex_is_locked(&wil->mutex)); wil 1902 drivers/net/wireless/ath/wil6210/main.c set_bit(wil_status_resetting, wil->status); wil 1904 drivers/net/wireless/ath/wil6210/main.c wil6210_bus_request(wil, 0); wil 1906 drivers/net/wireless/ath/wil6210/main.c wil_disable_irq(wil); wil 1907 drivers/net/wireless/ath/wil6210/main.c if (test_and_clear_bit(wil_status_napi_en, wil->status)) { wil 1908 drivers/net/wireless/ath/wil6210/main.c napi_disable(&wil->napi_rx); wil 1909 drivers/net/wireless/ath/wil6210/main.c napi_disable(&wil->napi_tx); wil 1910 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "NAPI disable\n"); wil 1912 drivers/net/wireless/ath/wil6210/main.c wil_enable_irq(wil); wil 1914 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->vif_mutex); wil 1915 drivers/net/wireless/ath/wil6210/main.c wil_p2p_stop_radio_operations(wil); wil 1916 drivers/net/wireless/ath/wil6210/main.c wil_abort_scan_all_vifs(wil, false); wil 1917 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->vif_mutex); wil 1919 drivers/net/wireless/ath/wil6210/main.c down_write(&wil->mem_lock); wil 1920 drivers/net/wireless/ath/wil6210/main.c rc = wil_reset(wil, false); wil 1921 drivers/net/wireless/ath/wil6210/main.c up_write(&wil->mem_lock); wil 1926 drivers/net/wireless/ath/wil6210/main.c int wil_down(struct wil6210_priv *wil) wil 1930 drivers/net/wireless/ath/wil6210/main.c wil_dbg_misc(wil, "down\n"); wil 1932 drivers/net/wireless/ath/wil6210/main.c wil_set_recovery_state(wil, fw_recovery_idle); wil 1933 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->mutex); wil 1934 drivers/net/wireless/ath/wil6210/main.c rc = __wil_down(wil); wil 1935 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->mutex); wil 1940 drivers/net/wireless/ath/wil6210/main.c int wil_find_cid(struct wil6210_priv *wil, u8 mid, const u8 *mac) wil 1945 drivers/net/wireless/ath/wil6210/main.c for (i = 0; i < wil->max_assoc_sta; i++) { wil 1946 drivers/net/wireless/ath/wil6210/main.c if (wil->sta[i].mid == mid && wil 1947 drivers/net/wireless/ath/wil6210/main.c wil->sta[i].status != wil_sta_unused && wil 1948 drivers/net/wireless/ath/wil6210/main.c ether_addr_equal(wil->sta[i].addr, mac)) { wil 1957 drivers/net/wireless/ath/wil6210/main.c void wil_halp_vote(struct wil6210_priv *wil) wil 1962 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) wil 1965 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->halp.lock); wil 1967 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, "halp_vote: start, HALP ref_cnt (%d)\n", wil 1968 drivers/net/wireless/ath/wil6210/main.c wil->halp.ref_cnt); wil 1970 drivers/net/wireless/ath/wil6210/main.c if (++wil->halp.ref_cnt == 1) { wil 1971 drivers/net/wireless/ath/wil6210/main.c reinit_completion(&wil->halp.comp); wil 1973 drivers/net/wireless/ath/wil6210/main.c wil->halp.handle_icr = true; wil 1974 drivers/net/wireless/ath/wil6210/main.c wil6210_set_halp(wil); wil 1975 drivers/net/wireless/ath/wil6210/main.c rc = wait_for_completion_timeout(&wil->halp.comp, to_jiffies); wil 1977 drivers/net/wireless/ath/wil6210/main.c wil_err(wil, "HALP vote timed out\n"); wil 1979 drivers/net/wireless/ath/wil6210/main.c wil->halp.handle_icr = false; wil 1980 drivers/net/wireless/ath/wil6210/main.c wil6210_mask_halp(wil); wil 1982 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, wil 1988 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, "halp_vote: end, HALP ref_cnt (%d)\n", wil 1989 drivers/net/wireless/ath/wil6210/main.c wil->halp.ref_cnt); wil 1991 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->halp.lock); wil 1994 drivers/net/wireless/ath/wil6210/main.c void wil_halp_unvote(struct wil6210_priv *wil) wil 1996 drivers/net/wireless/ath/wil6210/main.c if (wil->hw_version >= HW_VER_TALYN_MB) wil 1999 drivers/net/wireless/ath/wil6210/main.c WARN_ON(wil->halp.ref_cnt == 0); wil 2001 drivers/net/wireless/ath/wil6210/main.c mutex_lock(&wil->halp.lock); wil 2003 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, "halp_unvote: start, HALP ref_cnt (%d)\n", wil 2004 drivers/net/wireless/ath/wil6210/main.c wil->halp.ref_cnt); wil 2006 drivers/net/wireless/ath/wil6210/main.c if (--wil->halp.ref_cnt == 0) { wil 2007 drivers/net/wireless/ath/wil6210/main.c wil6210_clear_halp(wil); wil 2008 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, "HALP unvote\n"); wil 2011 drivers/net/wireless/ath/wil6210/main.c wil_dbg_irq(wil, "halp_unvote:end, HALP ref_cnt (%d)\n", wil 2012 drivers/net/wireless/ath/wil6210/main.c wil->halp.ref_cnt); wil 2014 drivers/net/wireless/ath/wil6210/main.c mutex_unlock(&wil->halp.lock); wil 2017 drivers/net/wireless/ath/wil6210/main.c void wil_init_txrx_ops(struct wil6210_priv *wil) wil 2019 drivers/net/wireless/ath/wil6210/main.c if (wil->use_enhanced_dma_hw) wil 2020 drivers/net/wireless/ath/wil6210/main.c wil_init_txrx_ops_edma(wil); wil 2022 drivers/net/wireless/ath/wil6210/main.c wil_init_txrx_ops_legacy_dma(wil); wil 23 drivers/net/wireless/ath/wil6210/netdev.c bool wil_has_other_active_ifaces(struct wil6210_priv *wil, wil 30 drivers/net/wireless/ath/wil6210/netdev.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 31 drivers/net/wireless/ath/wil6210/netdev.c vif = wil->vifs[i]; wil 44 drivers/net/wireless/ath/wil6210/netdev.c bool wil_has_active_ifaces(struct wil6210_priv *wil, bool up, bool ok) wil 47 drivers/net/wireless/ath/wil6210/netdev.c return wil_has_other_active_ifaces(wil, NULL, up, ok); wil 52 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 55 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "open\n"); wil 58 drivers/net/wireless/ath/wil6210/netdev.c test_bit(WMI_FW_CAPABILITY_WMI_ONLY, wil->fw_capabilities)) { wil 59 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "while in debug_fw or wmi_only mode\n"); wil 63 drivers/net/wireless/ath/wil6210/netdev.c if (!wil_has_other_active_ifaces(wil, ndev, true, false)) { wil 64 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "open, first iface\n"); wil 65 drivers/net/wireless/ath/wil6210/netdev.c rc = wil_pm_runtime_get(wil); wil 69 drivers/net/wireless/ath/wil6210/netdev.c rc = wil_up(wil); wil 71 drivers/net/wireless/ath/wil6210/netdev.c wil_pm_runtime_put(wil); wil 79 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 82 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "stop\n"); wil 84 drivers/net/wireless/ath/wil6210/netdev.c if (!wil_has_other_active_ifaces(wil, ndev, true, false)) { wil 85 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "stop, last iface\n"); wil 86 drivers/net/wireless/ath/wil6210/netdev.c rc = wil_down(wil); wil 88 drivers/net/wireless/ath/wil6210/netdev.c wil_pm_runtime_put(wil); wil 104 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, wil 109 drivers/net/wireless/ath/wil6210/netdev.c wil_rx_handle(wil, "a); wil 114 drivers/net/wireless/ath/wil6210/netdev.c wil6210_unmask_irq_rx(wil); wil 115 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI RX complete\n"); wil 118 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI RX poll(%d) done %d\n", budget, done); wil 125 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, wil 130 drivers/net/wireless/ath/wil6210/netdev.c wil_rx_handle_edma(wil, "a); wil 135 drivers/net/wireless/ath/wil6210/netdev.c wil6210_unmask_irq_rx_edma(wil); wil 136 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI RX complete\n"); wil 139 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI RX poll(%d) done %d\n", budget, done); wil 146 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, wil 153 drivers/net/wireless/ath/wil6210/netdev.c struct wil_ring *ring = &wil->ring_tx[i]; wil 154 drivers/net/wireless/ath/wil6210/netdev.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[i]; wil 158 drivers/net/wireless/ath/wil6210/netdev.c txdata->mid >= GET_MAX_VIFS(wil)) wil 161 drivers/net/wireless/ath/wil6210/netdev.c vif = wil->vifs[txdata->mid]; wil 163 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "Invalid MID %d\n", txdata->mid); wil 172 drivers/net/wireless/ath/wil6210/netdev.c wil6210_unmask_irq_tx(wil); wil 173 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI TX complete\n"); wil 176 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI TX poll(%d) done %d\n", budget, tx_done); wil 183 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = container_of(napi, struct wil6210_priv, wil 187 drivers/net/wireless/ath/wil6210/netdev.c struct wil_status_ring *sring = &wil->srings[wil->tx_sring_idx]; wil 192 drivers/net/wireless/ath/wil6210/netdev.c tx_done = wil_tx_sring_handler(wil, sring); wil 196 drivers/net/wireless/ath/wil6210/netdev.c wil6210_unmask_irq_tx_edma(wil); wil 197 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI TX complete\n"); wil 200 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_txrx(wil, "NAPI TX poll(%d) done %d\n", budget, tx_done); wil 242 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = vif_to_wil(vif); wil 245 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "Connect timeout detected, disconnect station\n"); wil 251 drivers/net/wireless/ath/wil6210/netdev.c q = queue_work(wil->wmi_wq, &vif->disconnect_worker); wil 252 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_wmi(wil, "queue_work of disconnect_worker -> %d\n", q); wil 258 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = vif_to_wil(vif); wil 260 drivers/net/wireless/ath/wil6210/netdev.c clear_bit(wil_status_fwready, wil->status); wil 261 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "Scan timeout detected, start fw error recovery\n"); wil 262 drivers/net/wireless/ath/wil6210/netdev.c wil_fw_error_recovery(wil); wil 268 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil = vif_to_wil(vif); wil 270 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "p2p_discovery_timer_fn\n"); wil 296 drivers/net/wireless/ath/wil6210/netdev.c static u8 wil_vif_find_free_mid(struct wil6210_priv *wil) wil 300 drivers/net/wireless/ath/wil6210/netdev.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 301 drivers/net/wireless/ath/wil6210/netdev.c if (!wil->vifs[i]) wil 309 drivers/net/wireless/ath/wil6210/netdev.c wil_vif_alloc(struct wil6210_priv *wil, const char *name, wil 317 drivers/net/wireless/ath/wil6210/netdev.c mid = wil_vif_find_free_mid(wil); wil 319 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "no available virtual interface\n"); wil 326 drivers/net/wireless/ath/wil6210/netdev.c dev_err(wil_to_dev(wil), "alloc_netdev failed\n"); wil 330 drivers/net/wireless/ath/wil6210/netdev.c wil->main_ndev = ndev; wil 338 drivers/net/wireless/ath/wil6210/netdev.c vif->wil = wil; wil 343 drivers/net/wireless/ath/wil6210/netdev.c wdev->wiphy = wil->wiphy; wil 361 drivers/net/wireless/ath/wil6210/netdev.c struct wil6210_priv *wil; wil 365 drivers/net/wireless/ath/wil6210/netdev.c wil = wil_cfg80211_init(dev); wil 366 drivers/net/wireless/ath/wil6210/netdev.c if (IS_ERR(wil)) { wil 368 drivers/net/wireless/ath/wil6210/netdev.c return wil; wil 371 drivers/net/wireless/ath/wil6210/netdev.c rc = wil_priv_init(wil); wil 377 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "if_alloc\n"); wil 379 drivers/net/wireless/ath/wil6210/netdev.c vif = wil_vif_alloc(wil, "wlan%d", NET_NAME_UNKNOWN, wil 387 drivers/net/wireless/ath/wil6210/netdev.c wil->radio_wdev = vif_to_wdev(vif); wil 389 drivers/net/wireless/ath/wil6210/netdev.c return wil; wil 392 drivers/net/wireless/ath/wil6210/netdev.c wil_priv_deinit(wil); wil 395 drivers/net/wireless/ath/wil6210/netdev.c wil_cfg80211_deinit(wil); wil 400 drivers/net/wireless/ath/wil6210/netdev.c void wil_if_free(struct wil6210_priv *wil) wil 402 drivers/net/wireless/ath/wil6210/netdev.c struct net_device *ndev = wil->main_ndev; wil 404 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "if_free\n"); wil 409 drivers/net/wireless/ath/wil6210/netdev.c wil_priv_deinit(wil); wil 411 drivers/net/wireless/ath/wil6210/netdev.c wil->main_ndev = NULL; wil 415 drivers/net/wireless/ath/wil6210/netdev.c wil_cfg80211_deinit(wil); wil 418 drivers/net/wireless/ath/wil6210/netdev.c int wil_vif_add(struct wil6210_priv *wil, struct wil6210_vif *vif) wil 422 drivers/net/wireless/ath/wil6210/netdev.c bool any_active = wil_has_active_ifaces(wil, true, false); wil 427 drivers/net/wireless/ath/wil6210/netdev.c if (wil->vifs[vif->mid]) { wil 433 drivers/net/wireless/ath/wil6210/netdev.c rc = wmi_port_allocate(wil, vif->mid, ndev->dev_addr, wil 442 drivers/net/wireless/ath/wil6210/netdev.c wmi_port_delete(wil, vif->mid); wil 446 drivers/net/wireless/ath/wil6210/netdev.c wil->vifs[vif->mid] = vif; wil 450 drivers/net/wireless/ath/wil6210/netdev.c int wil_if_add(struct wil6210_priv *wil) wil 452 drivers/net/wireless/ath/wil6210/netdev.c struct wiphy *wiphy = wil->wiphy; wil 453 drivers/net/wireless/ath/wil6210/netdev.c struct net_device *ndev = wil->main_ndev; wil 457 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "entered"); wil 459 drivers/net/wireless/ath/wil6210/netdev.c strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); wil 463 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "failed to register wiphy, err %d\n", rc); wil 467 drivers/net/wireless/ath/wil6210/netdev.c init_dummy_netdev(&wil->napi_ndev); wil 468 drivers/net/wireless/ath/wil6210/netdev.c if (wil->use_enhanced_dma_hw) { wil 469 drivers/net/wireless/ath/wil6210/netdev.c netif_napi_add(&wil->napi_ndev, &wil->napi_rx, wil 472 drivers/net/wireless/ath/wil6210/netdev.c netif_tx_napi_add(&wil->napi_ndev, wil 473 drivers/net/wireless/ath/wil6210/netdev.c &wil->napi_tx, wil6210_netdev_poll_tx_edma, wil 476 drivers/net/wireless/ath/wil6210/netdev.c netif_napi_add(&wil->napi_ndev, &wil->napi_rx, wil 479 drivers/net/wireless/ath/wil6210/netdev.c netif_tx_napi_add(&wil->napi_ndev, wil 480 drivers/net/wireless/ath/wil6210/netdev.c &wil->napi_tx, wil6210_netdev_poll_tx, wil 484 drivers/net/wireless/ath/wil6210/netdev.c wil_update_net_queues_bh(wil, vif, NULL, true); wil 487 drivers/net/wireless/ath/wil6210/netdev.c rc = wil_vif_add(wil, vif); wil 499 drivers/net/wireless/ath/wil6210/netdev.c void wil_vif_remove(struct wil6210_priv *wil, u8 mid) wil 503 drivers/net/wireless/ath/wil6210/netdev.c bool any_active = wil_has_active_ifaces(wil, true, false); wil 506 drivers/net/wireless/ath/wil6210/netdev.c if (mid >= GET_MAX_VIFS(wil)) { wil 507 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "invalid MID: %d\n", mid); wil 511 drivers/net/wireless/ath/wil6210/netdev.c vif = wil->vifs[mid]; wil 513 drivers/net/wireless/ath/wil6210/netdev.c wil_err(wil, "MID %d not registered\n", mid); wil 517 drivers/net/wireless/ath/wil6210/netdev.c mutex_lock(&wil->mutex); wil 519 drivers/net/wireless/ath/wil6210/netdev.c mutex_unlock(&wil->mutex); wil 528 drivers/net/wireless/ath/wil6210/netdev.c wmi_port_delete(wil, vif->mid); wil 531 drivers/net/wireless/ath/wil6210/netdev.c mutex_lock(&wil->vif_mutex); wil 532 drivers/net/wireless/ath/wil6210/netdev.c wil->vifs[mid] = NULL; wil 535 drivers/net/wireless/ath/wil6210/netdev.c if (test_bit(wil_status_napi_en, wil->status)) { wil 536 drivers/net/wireless/ath/wil6210/netdev.c napi_synchronize(&wil->napi_rx); wil 537 drivers/net/wireless/ath/wil6210/netdev.c napi_synchronize(&wil->napi_tx); wil 539 drivers/net/wireless/ath/wil6210/netdev.c mutex_unlock(&wil->vif_mutex); wil 541 drivers/net/wireless/ath/wil6210/netdev.c flush_work(&wil->wmi_event_worker); wil 553 drivers/net/wireless/ath/wil6210/netdev.c void wil_if_remove(struct wil6210_priv *wil) wil 555 drivers/net/wireless/ath/wil6210/netdev.c struct net_device *ndev = wil->main_ndev; wil 558 drivers/net/wireless/ath/wil6210/netdev.c wil_dbg_misc(wil, "if_remove\n"); wil 561 drivers/net/wireless/ath/wil6210/netdev.c wil_vif_remove(wil, 0); wil 564 drivers/net/wireless/ath/wil6210/netdev.c netif_napi_del(&wil->napi_tx); wil 565 drivers/net/wireless/ath/wil6210/netdev.c netif_napi_del(&wil->napi_rx); wil 28 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 33 drivers/net/wireless/ath/wil6210/p2p.c lockdep_assert_held(&wil->mutex); wil 37 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_p2p_cfg failed\n"); wil 43 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_set_ssid failed\n"); wil 49 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_start_listen failed\n"); wil 73 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 77 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "p2p_search: channel %d\n", P2P_DMG_SOCIAL_CHANNEL); wil 79 drivers/net/wireless/ath/wil6210/p2p.c lockdep_assert_held(&wil->mutex); wil 82 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "search failed. discovery already ongoing\n"); wil 89 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_p2p_cfg failed\n"); wil 95 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_set_ssid failed\n"); wil 103 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_set_ie(WMI_FRAME_PROBE_REQ) failed\n"); wil 113 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_set_ie(WMI_FRAME_PROBE_RESP) failed\n"); wil 119 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "wmi_start_search failed\n"); wil 136 drivers/net/wireless/ath/wil6210/p2p.c int wil_p2p_listen(struct wil6210_priv *wil, struct wireless_dev *wdev, wil 140 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_vif *vif = wdev_to_vif(wil, wdev); wil 147 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "p2p_listen: duration %d\n", duration); wil 149 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->mutex); wil 152 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "discovery already ongoing\n"); wil 161 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 163 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "Delaying p2p listen until scan done\n"); wil 167 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 170 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 178 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wdev; wil 184 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 209 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 213 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->mutex); wil 216 drivers/net/wireless/ath/wil6210/p2p.c wil_info(wil, "Cookie mismatch: 0x%016llx vs. 0x%016llx\n", wil 218 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 224 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 227 drivers/net/wireless/ath/wil6210/p2p.c wil_err(wil, "listen not started\n"); wil 231 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 232 drivers/net/wireless/ath/wil6210/p2p.c cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), wil 237 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 238 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 248 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 251 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "p2p_listen_expired\n"); wil 253 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->mutex); wil 255 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 260 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 261 drivers/net/wireless/ath/wil6210/p2p.c cfg80211_remain_on_channel_expired(vif_to_radio_wdev(wil, vif), wil 266 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 267 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 276 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 279 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "p2p_search_expired\n"); wil 281 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->mutex); wil 283 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 290 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 295 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wil 296 drivers/net/wireless/ath/wil6210/p2p.c wil->main_ndev->ieee80211_ptr; wil 298 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 308 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_priv *wil = vif_to_wil(vif); wil 311 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->mutex); wil 313 drivers/net/wireless/ath/wil6210/p2p.c wil_dbg_misc(wil, "Checking delayed p2p listen\n"); wil 317 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 320 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 323 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 327 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 334 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 340 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = p2p->pending_listen_wdev; wil 343 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 346 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->mutex); wil 349 drivers/net/wireless/ath/wil6210/p2p.c void wil_p2p_stop_radio_operations(struct wil6210_priv *wil) wil 351 drivers/net/wireless/ath/wil6210/p2p.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 357 drivers/net/wireless/ath/wil6210/p2p.c lockdep_assert_held(&wil->mutex); wil 358 drivers/net/wireless/ath/wil6210/p2p.c lockdep_assert_held(&wil->vif_mutex); wil 360 drivers/net/wireless/ath/wil6210/p2p.c if (wil->radio_wdev != wil->p2p_wdev) wil 366 drivers/net/wireless/ath/wil6210/p2p.c vif->scan_request->wdev == wil->p2p_wdev) wil 372 drivers/net/wireless/ath/wil6210/p2p.c mutex_unlock(&wil->vif_mutex); wil 374 drivers/net/wireless/ath/wil6210/p2p.c mutex_lock(&wil->vif_mutex); wil 382 drivers/net/wireless/ath/wil6210/p2p.c cfg80211_remain_on_channel_expired(wil->radio_wdev, wil 389 drivers/net/wireless/ath/wil6210/p2p.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 39 drivers/net/wireless/ath/wil6210/pcie_bus.c int wil_set_capabilities(struct wil6210_priv *wil) wil 42 drivers/net/wireless/ath/wil6210/pcie_bus.c u32 jtag_id = wil_r(wil, RGF_USER_JTAG_DEV_ID); wil 43 drivers/net/wireless/ath/wil6210/pcie_bus.c u8 chip_revision = (wil_r(wil, RGF_USER_REVISION_ID) & wil 48 drivers/net/wireless/ath/wil6210/pcie_bus.c bitmap_zero(wil->hw_capa, hw_capa_last); wil 49 drivers/net/wireless/ath/wil6210/pcie_bus.c bitmap_zero(wil->fw_capabilities, WMI_FW_CAPABILITY_MAX); wil 50 drivers/net/wireless/ath/wil6210/pcie_bus.c bitmap_zero(wil->platform_capa, WIL_PLATFORM_CAPA_MAX); wil 51 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->wil_fw_name = ftm_mode ? WIL_FW_NAME_FTM_DEFAULT : wil 53 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->chip_revision = chip_revision; wil 61 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Sparrow D0"; wil 62 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_SPARROW_D0; wil 66 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil_fw_verify_file_exists(wil, wil_fw_name)) wil 67 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->wil_fw_name = wil_fw_name; wil 70 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "mac_rgf_ext section not found in fw_mapping\n"); wil 76 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Sparrow B0"; wil 77 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_SPARROW_B0; wil 80 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Unknown"; wil 81 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_UNKNOWN; wil 84 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_fw_assert_code_addr = SPARROW_RGF_FW_ASSERT_CODE; wil 85 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_ucode_assert_code_addr = SPARROW_RGF_UCODE_ASSERT_CODE; wil 88 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Talyn-MA"; wil 89 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_TALYN; wil 91 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_fw_assert_code_addr = TALYN_RGF_FW_ASSERT_CODE; wil 92 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_ucode_assert_code_addr = TALYN_RGF_UCODE_ASSERT_CODE; wil 93 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil_r(wil, RGF_USER_OTP_HW_RD_MACHINE_1) & wil 95 drivers/net/wireless/ath/wil6210/pcie_bus.c set_bit(hw_capa_no_flash, wil->hw_capa); wil 98 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil_fw_verify_file_exists(wil, wil_fw_name)) wil 99 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->wil_fw_name = wil_fw_name; wil 102 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Talyn-MB"; wil 103 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_TALYN_MB; wil 106 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_fw_assert_code_addr = TALYN_RGF_FW_ASSERT_CODE; wil 107 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->rgf_ucode_assert_code_addr = TALYN_RGF_UCODE_ASSERT_CODE; wil 108 drivers/net/wireless/ath/wil6210/pcie_bus.c set_bit(hw_capa_no_flash, wil->hw_capa); wil 109 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->use_enhanced_dma_hw = true; wil 110 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->use_rx_hw_reordering = true; wil 111 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->use_compressed_rx_status = true; wil 114 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil_fw_verify_file_exists(wil, wil_fw_name)) wil 115 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->wil_fw_name = wil_fw_name; wil 118 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "Unknown board hardware, chip_id 0x%08x, chip_revision 0x%08x\n", wil 120 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_name = "Unknown"; wil 121 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->hw_version = HW_VER_UNKNOWN; wil 125 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_init_txrx_ops(wil); wil 129 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "fw_code section not found in fw_mapping\n"); wil 132 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->iccm_base = iccm_section->host; wil 134 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_info(wil, "Board hardware is %s, flash %sexist\n", wil->hw_name, wil 135 drivers/net/wireless/ath/wil6210/pcie_bus.c test_bit(hw_capa_no_flash, wil->hw_capa) ? "doesn't " : ""); wil 138 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->platform_ops.get_capa) { wil 140 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->platform_ops.get_capa(wil->platform_handle); wil 141 drivers/net/wireless/ath/wil6210/pcie_bus.c memcpy(wil->platform_capa, &platform_capa, wil 142 drivers/net/wireless/ath/wil6210/pcie_bus.c min(sizeof(wil->platform_capa), sizeof(platform_capa))); wil 145 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_info(wil, "platform_capa 0x%lx\n", *wil->platform_capa); wil 148 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_request_firmware(wil, wil->wil_fw_name, false); wil 149 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_refresh_fw_capabilities(wil); wil 154 drivers/net/wireless/ath/wil6210/pcie_bus.c void wil_disable_irq(struct wil6210_priv *wil) wil 156 drivers/net/wireless/ath/wil6210/pcie_bus.c int irq = wil->pdev->irq; wil 159 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->n_msi == 3) { wil 165 drivers/net/wireless/ath/wil6210/pcie_bus.c void wil_enable_irq(struct wil6210_priv *wil) wil 167 drivers/net/wireless/ath/wil6210/pcie_bus.c int irq = wil->pdev->irq; wil 170 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->n_msi == 3) { wil 176 drivers/net/wireless/ath/wil6210/pcie_bus.c static void wil_remove_all_additional_vifs(struct wil6210_priv *wil) wil 181 drivers/net/wireless/ath/wil6210/pcie_bus.c for (i = 1; i < GET_MAX_VIFS(wil); i++) { wil 182 drivers/net/wireless/ath/wil6210/pcie_bus.c vif = wil->vifs[i]; wil 185 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_vif_remove(wil, vif->mid); wil 191 drivers/net/wireless/ath/wil6210/pcie_bus.c static int wil_if_pcie_enable(struct wil6210_priv *wil) wil 193 drivers/net/wireless/ath/wil6210/pcie_bus.c struct pci_dev *pdev = wil->pdev; wil 201 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "if_pcie_enable\n"); wil 209 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "Setup %d MSI interrupts\n", n_msi); wil 212 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "MSI interrupts disabled, use INTx\n"); wil 215 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "Invalid n_msi=%d, default to 1\n", n_msi); wil 221 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "3 MSI mode failed, try 1 MSI\n"); wil 226 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "pci_enable_msi failed, use INTx\n"); wil 230 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->n_msi = n_msi; wil 232 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->n_msi == 0 && msi_only) { wil 233 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "Interrupt pin not routed, unable to use INTx\n"); wil 238 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil6210_init_irq(wil, pdev->irq); wil 243 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_lock(&wil->mutex); wil 244 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_reset(wil, false); wil 245 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_unlock(&wil->mutex); wil 252 drivers/net/wireless/ath/wil6210/pcie_bus.c wil6210_fini_irq(wil, pdev->irq); wil 261 drivers/net/wireless/ath/wil6210/pcie_bus.c static int wil_if_pcie_disable(struct wil6210_priv *wil) wil 263 drivers/net/wireless/ath/wil6210/pcie_bus.c struct pci_dev *pdev = wil->pdev; wil 265 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "if_pcie_disable\n"); wil 269 drivers/net/wireless/ath/wil6210/pcie_bus.c wil6210_fini_irq(wil, pdev->irq); wil 279 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = wil_handle; wil 281 drivers/net/wireless/ath/wil6210/pcie_bus.c if (!wil) wil 284 drivers/net/wireless/ath/wil6210/pcie_bus.c return wil_fw_copy_crash_dump(wil, buf, size); wil 289 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = wil_handle; wil 291 drivers/net/wireless/ath/wil6210/pcie_bus.c if (!wil) wil 294 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_fw_error_recovery(wil); wil 299 drivers/net/wireless/ath/wil6210/pcie_bus.c static void wil_platform_ops_uninit(struct wil6210_priv *wil) wil 301 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->platform_ops.uninit) wil 302 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->platform_ops.uninit(wil->platform_handle); wil 303 drivers/net/wireless/ath/wil6210/pcie_bus.c memset(&wil->platform_ops, 0, sizeof(wil->platform_ops)); wil 308 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil; wil 332 drivers/net/wireless/ath/wil6210/pcie_bus.c wil = wil_if_alloc(dev); wil 333 drivers/net/wireless/ath/wil6210/pcie_bus.c if (IS_ERR(wil)) { wil 334 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = (int)PTR_ERR(wil); wil 339 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->pdev = pdev; wil 340 drivers/net/wireless/ath/wil6210/pcie_bus.c pci_set_drvdata(pdev, wil); wil 341 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->bar_size = bar_size; wil 344 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->platform_handle = wil 345 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_platform_init(&pdev->dev, &wil->platform_ops, &rops, wil); wil 346 drivers/net/wireless/ath/wil6210/pcie_bus.c if (!wil->platform_handle) { wil 348 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "wil_platform_init failed\n"); wil 354 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, wil 363 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, wil 372 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "pci_request_region failed\n"); wil 377 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->csr = pci_ioremap_bar(pdev, 0); wil 378 drivers/net/wireless/ath/wil6210/pcie_bus.c if (!wil->csr) { wil 379 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "pci_ioremap_bar failed\n"); wil 384 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_info(wil, "CSR at %pR -> 0x%p\n", &pdev->resource[0], wil->csr); wil 386 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_set_capabilities(wil); wil 388 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "wil_set_capabilities failed, rc %d\n", rc); wil 395 drivers/net/wireless/ath/wil6210/pcie_bus.c start_idx = wil->use_enhanced_dma_hw ? 0 : 1; wil 406 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->dma_addr_size = dma_addr_size[i]; wil 410 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->dma_addr_size == 0) wil 413 drivers/net/wireless/ath/wil6210/pcie_bus.c wil6210_clear_irq(wil); wil 416 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_if_pcie_enable(wil); wil 418 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "Enable device failed\n"); wil 423 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_clear_fw_log_addr(wil); wil 424 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_if_add(wil); wil 426 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "wil_if_add failed: %d\n", rc); wil 431 drivers/net/wireless/ath/wil6210/pcie_bus.c if (test_bit(WMI_FW_CAPABILITY_WMI_ONLY, wil->fw_capabilities)) { wil 432 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "Loading WMI only FW\n"); wil 433 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_lock(&wil->mutex); wil 434 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_reset(wil, true); wil 435 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_unlock(&wil->mutex); wil 437 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "failed to load WMI only FW\n"); wil 443 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->pm_notify.notifier_call = wil6210_pm_notify; wil 445 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = register_pm_notifier(&wil->pm_notify); wil 450 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "register_pm_notifier failed: %d\n", rc); wil 452 drivers/net/wireless/ath/wil6210/pcie_bus.c wil6210_debugfs_init(wil); wil 454 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_pm_runtime_allow(wil); wil 459 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_if_pcie_disable(wil); wil 461 drivers/net/wireless/ath/wil6210/pcie_bus.c pci_iounmap(pdev, wil->csr); wil 467 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_platform_ops_uninit(wil); wil 469 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_if_free(wil); wil 476 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = pci_get_drvdata(pdev); wil 477 drivers/net/wireless/ath/wil6210/pcie_bus.c void __iomem *csr = wil->csr; wil 479 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_misc(wil, "pcie_remove\n"); wil 481 drivers/net/wireless/ath/wil6210/pcie_bus.c unregister_pm_notifier(&wil->pm_notify); wil 483 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_pm_runtime_forbid(wil); wil 485 drivers/net/wireless/ath/wil6210/pcie_bus.c wil6210_debugfs_remove(wil); wil 487 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_p2p_wdev_free(wil); wil 488 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_remove_all_additional_vifs(wil); wil 490 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_if_remove(wil); wil 491 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_if_pcie_disable(wil); wil 495 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_platform_ops_uninit(wil); wil 496 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_if_free(wil); wil 511 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = pci_get_drvdata(pdev); wil 514 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system"); wil 516 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_lock(&wil->vif_mutex); wil 517 drivers/net/wireless/ath/wil6210/pcie_bus.c active_ifaces = wil_has_active_ifaces(wil, true, false); wil 518 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_unlock(&wil->vif_mutex); wil 519 drivers/net/wireless/ath/wil6210/pcie_bus.c keep_radio_on = active_ifaces && wil->keep_radio_on_during_sleep; wil 521 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_can_suspend(wil, is_runtime); wil 525 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_suspend(wil, is_runtime, keep_radio_on); wil 533 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_off.successful_suspends++; wil 535 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_on.successful_suspends++; wil 546 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = pci_get_drvdata(pdev); wil 549 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system"); wil 551 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_lock(&wil->vif_mutex); wil 552 drivers/net/wireless/ath/wil6210/pcie_bus.c active_ifaces = wil_has_active_ifaces(wil, true, false); wil 553 drivers/net/wireless/ath/wil6210/pcie_bus.c mutex_unlock(&wil->vif_mutex); wil 554 drivers/net/wireless/ath/wil6210/pcie_bus.c keep_radio_on = active_ifaces && wil->keep_radio_on_during_sleep; wil 562 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_resume(wil, is_runtime, keep_radio_on); wil 564 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_err(wil, "device failed to resume (%d)\n", rc); wil 567 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_off.failed_resumes++; wil 569 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_on.failed_resumes++; wil 573 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_on.successful_resumes++; wil 575 drivers/net/wireless/ath/wil6210/pcie_bus.c wil->suspend_stats.r_off.successful_resumes++; wil 584 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = container_of( wil 589 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "pm_notify: mode (%ld)\n", mode); wil 595 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil_can_suspend(wil, false); wil 599 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->platform_ops.notify) wil 600 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil->platform_ops.notify(wil->platform_handle, wil 607 drivers/net/wireless/ath/wil6210/pcie_bus.c if (wil->platform_ops.notify) wil 608 drivers/net/wireless/ath/wil6210/pcie_bus.c rc = wil->platform_ops.notify(wil->platform_handle, wil 612 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "unhandled notify mode %ld\n", mode); wil 616 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "notification mode %ld: rc (%d)\n", mode, rc); wil 633 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = pci_get_drvdata(pdev); wil 635 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "Runtime idle\n"); wil 637 drivers/net/wireless/ath/wil6210/pcie_bus.c return wil_can_suspend(wil, true); wil 648 drivers/net/wireless/ath/wil6210/pcie_bus.c struct wil6210_priv *wil = pci_get_drvdata(pdev); wil 650 drivers/net/wireless/ath/wil6210/pcie_bus.c if (test_bit(wil_status_suspended, wil->status)) { wil 651 drivers/net/wireless/ath/wil6210/pcie_bus.c wil_dbg_pm(wil, "trying to suspend while suspended\n"); wil 24 drivers/net/wireless/ath/wil6210/pm.c static void wil_pm_wake_connected_net_queues(struct wil6210_priv *wil) wil 28 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 29 drivers/net/wireless/ath/wil6210/pm.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 30 drivers/net/wireless/ath/wil6210/pm.c struct wil6210_vif *vif = wil->vifs[i]; wil 33 drivers/net/wireless/ath/wil6210/pm.c wil_update_net_queues_bh(wil, vif, NULL, false); wil 35 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 38 drivers/net/wireless/ath/wil6210/pm.c static void wil_pm_stop_all_net_queues(struct wil6210_priv *wil) wil 42 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 43 drivers/net/wireless/ath/wil6210/pm.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 44 drivers/net/wireless/ath/wil6210/pm.c struct wil6210_vif *vif = wil->vifs[i]; wil 47 drivers/net/wireless/ath/wil6210/pm.c wil_update_net_queues_bh(wil, vif, NULL, true); wil 49 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 53 drivers/net/wireless/ath/wil6210/pm.c wil_can_suspend_vif(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 60 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Sniffer\n"); wil 67 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Delay suspend when connecting\n"); wil 71 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "STA-like interface\n"); wil 77 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "AP-like interface\n"); wil 84 drivers/net/wireless/ath/wil6210/pm.c int wil_can_suspend(struct wil6210_priv *wil, bool is_runtime) wil 88 drivers/net/wireless/ath/wil6210/pm.c wil->fw_capabilities); wil 91 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "can_suspend: %s\n", is_runtime ? "runtime" : "system"); wil 94 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Deny any suspend - %s mode\n", wil 99 drivers/net/wireless/ath/wil6210/pm.c if (is_runtime && !wil->platform_ops.suspend) { wil 104 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 105 drivers/net/wireless/ath/wil6210/pm.c active_ifaces = wil_has_active_ifaces(wil, true, false); wil 106 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 110 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Interface is down\n"); wil 113 drivers/net/wireless/ath/wil6210/pm.c if (test_bit(wil_status_resetting, wil->status)) { wil 114 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Delay suspend when resetting\n"); wil 118 drivers/net/wireless/ath/wil6210/pm.c if (wil->recovery_state != fw_recovery_idle) { wil 119 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Delay suspend during recovery\n"); wil 125 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 126 drivers/net/wireless/ath/wil6210/pm.c for (i = 0; i < GET_MAX_VIFS(wil); i++) { wil 127 drivers/net/wireless/ath/wil6210/pm.c struct wil6210_vif *vif = wil->vifs[i]; wil 131 drivers/net/wireless/ath/wil6210/pm.c if (!wil_can_suspend_vif(wil, vif, is_runtime)) { wil 133 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 137 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 140 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "can_suspend: %s => %s (%d)\n", wil 144 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 149 drivers/net/wireless/ath/wil6210/pm.c static int wil_resume_keep_radio_on(struct wil6210_priv *wil) wil 156 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_resuming, wil->status); wil 157 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspended, wil->status); wil 158 drivers/net/wireless/ath/wil6210/pm.c wil_c(wil, RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); wil 159 drivers/net/wireless/ath/wil6210/pm.c wil_unmask_irq(wil); wil 161 drivers/net/wireless/ath/wil6210/pm.c wil6210_bus_request(wil, wil->bus_request_kbps_pre_suspend); wil 164 drivers/net/wireless/ath/wil6210/pm.c rc = wmi_resume(wil); wil 166 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "device failed to resume (%d)\n", rc); wil 169 drivers/net/wireless/ath/wil6210/pm.c rc = wil_down(wil); wil 171 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "wil_down failed (%d)\n", rc); wil 174 drivers/net/wireless/ath/wil6210/pm.c rc = wil_up(wil); wil 176 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "wil_up failed (%d)\n", rc); wil 182 drivers/net/wireless/ath/wil6210/pm.c wil_pm_wake_connected_net_queues(wil); wil 186 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_suspended, wil->status); wil 190 drivers/net/wireless/ath/wil6210/pm.c static int wil_suspend_keep_radio_on(struct wil6210_priv *wil) wil 195 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "suspend keep radio on\n"); wil 198 drivers/net/wireless/ath/wil6210/pm.c rc = down_write_trylock(&wil->mem_lock); wil 200 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, wil 203 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 207 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_suspending, wil->status); wil 208 drivers/net/wireless/ath/wil6210/pm.c up_write(&wil->mem_lock); wil 210 drivers/net/wireless/ath/wil6210/pm.c wil_pm_stop_all_net_queues(wil); wil 212 drivers/net/wireless/ath/wil6210/pm.c if (!wil_is_tx_idle(wil)) { wil 213 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Pending TX data, reject suspend\n"); wil 214 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 218 drivers/net/wireless/ath/wil6210/pm.c if (!wil->txrx_ops.is_rx_idle(wil)) { wil 219 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Pending RX data, reject suspend\n"); wil 220 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 224 drivers/net/wireless/ath/wil6210/pm.c if (!wil_is_wmi_idle(wil)) { wil 225 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Pending WMI events, reject suspend\n"); wil 226 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 231 drivers/net/wireless/ath/wil6210/pm.c rc = wmi_suspend(wil); wil 233 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "wmi_suspend failed, reject suspend (%d)\n", wil 240 drivers/net/wireless/ath/wil6210/pm.c if (test_bit(wil_status_napi_en, wil->status)) { wil 241 drivers/net/wireless/ath/wil6210/pm.c while (!wil->txrx_ops.is_rx_idle(wil)) { wil 243 drivers/net/wireless/ath/wil6210/pm.c if (wil->txrx_ops.is_rx_idle(wil)) wil 245 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, wil 247 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.r_on.failed_suspends++; wil 250 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_ratelimited(wil, "rx vring is not empty -> NAPI\n"); wil 251 drivers/net/wireless/ath/wil6210/pm.c napi_synchronize(&wil->napi_rx); wil 261 drivers/net/wireless/ath/wil6210/pm.c if (!wil_is_wmi_idle(wil)) { wil 262 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "suspend failed due to pending WMI events\n"); wil 263 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.r_on.failed_suspends++; wil 267 drivers/net/wireless/ath/wil6210/pm.c wil_mask_irq(wil); wil 270 drivers/net/wireless/ath/wil6210/pm.c wil_s(wil, RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); wil 272 drivers/net/wireless/ath/wil6210/pm.c if (wil->platform_ops.suspend) { wil 273 drivers/net/wireless/ath/wil6210/pm.c rc = wil->platform_ops.suspend(wil->platform_handle, true); wil 275 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "platform device failed to suspend (%d)\n", wil 277 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.r_on.failed_suspends++; wil 278 drivers/net/wireless/ath/wil6210/pm.c wil_c(wil, RGF_USER_CLKS_CTL_0, BIT_USER_CLKS_RST_PWGD); wil 279 drivers/net/wireless/ath/wil6210/pm.c wil_unmask_irq(wil); wil 285 drivers/net/wireless/ath/wil6210/pm.c wil->bus_request_kbps_pre_suspend = wil->bus_request_kbps; wil 286 drivers/net/wireless/ath/wil6210/pm.c wil6210_bus_request(wil, 0); wil 288 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_suspended, wil->status); wil 289 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspending, wil->status); wil 294 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_resuming, wil->status); wil 295 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspending, wil->status); wil 296 drivers/net/wireless/ath/wil6210/pm.c rc = wmi_resume(wil); wil 300 drivers/net/wireless/ath/wil6210/pm.c wil_pm_wake_connected_net_queues(wil); wil 305 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspending, wil->status); wil 306 drivers/net/wireless/ath/wil6210/pm.c wil_pm_wake_connected_net_queues(wil); wil 310 drivers/net/wireless/ath/wil6210/pm.c static int wil_suspend_radio_off(struct wil6210_priv *wil) wil 315 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "suspend radio off\n"); wil 317 drivers/net/wireless/ath/wil6210/pm.c rc = down_write_trylock(&wil->mem_lock); wil 319 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, wil 322 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.rejected_by_host++; wil 326 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_suspending, wil->status); wil 327 drivers/net/wireless/ath/wil6210/pm.c up_write(&wil->mem_lock); wil 330 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 331 drivers/net/wireless/ath/wil6210/pm.c active_ifaces = wil_has_active_ifaces(wil, true, false); wil 332 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 335 drivers/net/wireless/ath/wil6210/pm.c rc = wil_down(wil); wil 337 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "wil_down : %d\n", rc); wil 338 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.r_off.failed_suspends++; wil 344 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Disabling PCIe IRQ before suspending\n"); wil 345 drivers/net/wireless/ath/wil6210/pm.c wil_disable_irq(wil); wil 347 drivers/net/wireless/ath/wil6210/pm.c if (wil->platform_ops.suspend) { wil 348 drivers/net/wireless/ath/wil6210/pm.c rc = wil->platform_ops.suspend(wil->platform_handle, false); wil 350 drivers/net/wireless/ath/wil6210/pm.c wil_enable_irq(wil); wil 351 drivers/net/wireless/ath/wil6210/pm.c wil->suspend_stats.r_off.failed_suspends++; wil 356 drivers/net/wireless/ath/wil6210/pm.c set_bit(wil_status_suspended, wil->status); wil 359 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspending, wil->status); wil 360 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "suspend radio off: %d\n", rc); wil 365 drivers/net/wireless/ath/wil6210/pm.c static int wil_resume_radio_off(struct wil6210_priv *wil) wil 370 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "Enabling PCIe IRQ\n"); wil 371 drivers/net/wireless/ath/wil6210/pm.c wil_enable_irq(wil); wil 377 drivers/net/wireless/ath/wil6210/pm.c mutex_lock(&wil->vif_mutex); wil 378 drivers/net/wireless/ath/wil6210/pm.c active_ifaces = wil_has_active_ifaces(wil, true, false); wil 379 drivers/net/wireless/ath/wil6210/pm.c mutex_unlock(&wil->vif_mutex); wil 381 drivers/net/wireless/ath/wil6210/pm.c rc = wil_up(wil); wil 383 drivers/net/wireless/ath/wil6210/pm.c clear_bit(wil_status_suspended, wil->status); wil 388 drivers/net/wireless/ath/wil6210/pm.c int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on) wil 392 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system"); wil 394 drivers/net/wireless/ath/wil6210/pm.c if (test_bit(wil_status_suspended, wil->status)) { wil 395 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "trying to suspend while suspended\n"); wil 400 drivers/net/wireless/ath/wil6210/pm.c rc = wil_suspend_radio_off(wil); wil 402 drivers/net/wireless/ath/wil6210/pm.c rc = wil_suspend_keep_radio_on(wil); wil 404 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "suspend: %s => %d\n", wil 410 drivers/net/wireless/ath/wil6210/pm.c int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on) wil 414 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system"); wil 416 drivers/net/wireless/ath/wil6210/pm.c if (wil->platform_ops.resume) { wil 417 drivers/net/wireless/ath/wil6210/pm.c rc = wil->platform_ops.resume(wil->platform_handle, wil 420 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "platform_ops.resume : %d\n", rc); wil 426 drivers/net/wireless/ath/wil6210/pm.c rc = wil_resume_keep_radio_on(wil); wil 428 drivers/net/wireless/ath/wil6210/pm.c rc = wil_resume_radio_off(wil); wil 431 drivers/net/wireless/ath/wil6210/pm.c wil_dbg_pm(wil, "resume: %s => %d\n", is_runtime ? "runtime" : "system", wil 436 drivers/net/wireless/ath/wil6210/pm.c void wil_pm_runtime_allow(struct wil6210_priv *wil) wil 438 drivers/net/wireless/ath/wil6210/pm.c struct device *dev = wil_to_dev(wil); wil 446 drivers/net/wireless/ath/wil6210/pm.c void wil_pm_runtime_forbid(struct wil6210_priv *wil) wil 448 drivers/net/wireless/ath/wil6210/pm.c struct device *dev = wil_to_dev(wil); wil 454 drivers/net/wireless/ath/wil6210/pm.c int wil_pm_runtime_get(struct wil6210_priv *wil) wil 457 drivers/net/wireless/ath/wil6210/pm.c struct device *dev = wil_to_dev(wil); wil 461 drivers/net/wireless/ath/wil6210/pm.c wil_err(wil, "pm_runtime_get_sync() failed, rc = %d\n", rc); wil 469 drivers/net/wireless/ath/wil6210/pm.c void wil_pm_runtime_put(struct wil6210_priv *wil) wil 471 drivers/net/wireless/ath/wil6210/pm.c struct device *dev = wil_to_dev(wil); wil 37 drivers/net/wireless/ath/wil6210/pmc.c void wil_pmc_init(struct wil6210_priv *wil) wil 39 drivers/net/wireless/ath/wil6210/pmc.c memset(&wil->pmc, 0, sizeof(struct pmc_ctx)); wil 40 drivers/net/wireless/ath/wil6210/pmc.c mutex_init(&wil->pmc.lock); wil 51 drivers/net/wireless/ath/wil6210/pmc.c void wil_pmc_alloc(struct wil6210_priv *wil, wil 56 drivers/net/wireless/ath/wil6210/pmc.c struct pmc_ctx *pmc = &wil->pmc; wil 57 drivers/net/wireless/ath/wil6210/pmc.c struct device *dev = wil_to_dev(wil); wil 58 drivers/net/wireless/ath/wil6210/pmc.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 66 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "ERROR pmc is already allocated\n"); wil 70 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, wil 78 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, wil 86 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, wil 96 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_alloc: %d descriptors x %d bytes each\n", wil 104 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "ERROR allocating pmc skb list\n"); wil 108 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_alloc: allocated descriptors info list %p\n", wil 124 drivers/net/wireless/ath/wil6210/pmc.c if (wil->dma_addr_size > 32) wil 132 drivers/net/wireless/ath/wil6210/pmc.c if (wil->dma_addr_size > 32) wil 134 drivers/net/wireless/ath/wil6210/pmc.c DMA_BIT_MASK(wil->dma_addr_size)); wil 136 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 144 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "ERROR allocating pmc pring\n"); wil 163 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "ERROR allocating pmc descriptor %d", i); wil 183 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_alloc: allocated successfully\n"); wil 189 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_alloc: send WMI_PMC_CMD with ALLOCATE op\n"); wil 190 drivers/net/wireless/ath/wil6210/pmc.c pmc->last_cmd_status = wmi_send(wil, wil 196 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, wil 207 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "exit on error: Releasing skbs...\n"); wil 216 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "exit on error: Releasing pring...\n"); wil 226 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "exit on error: Releasing descriptors info list...\n"); wil 239 drivers/net/wireless/ath/wil6210/pmc.c void wil_pmc_free(struct wil6210_priv *wil, int send_pmc_cmd) wil 241 drivers/net/wireless/ath/wil6210/pmc.c struct pmc_ctx *pmc = &wil->pmc; wil 242 drivers/net/wireless/ath/wil6210/pmc.c struct device *dev = wil_to_dev(wil); wil 243 drivers/net/wireless/ath/wil6210/pmc.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 251 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 259 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "send WMI_PMC_CMD with RELEASE op\n"); wil 262 drivers/net/wireless/ath/wil6210/pmc.c wmi_send(wil, WMI_PMC_CMDID, vif->mid, wil 265 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, wil 279 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_free: free pring va %p\n", wil 299 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_free: free descriptor info %d/%d\n", i, wil 301 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 317 drivers/net/wireless/ath/wil6210/pmc.c int wil_pmc_last_cmd_status(struct wil6210_priv *wil) wil 319 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmc_last_cmd_status: status %d\n", wil 320 drivers/net/wireless/ath/wil6210/pmc.c wil->pmc.last_cmd_status); wil 322 drivers/net/wireless/ath/wil6210/pmc.c return wil->pmc.last_cmd_status; wil 332 drivers/net/wireless/ath/wil6210/pmc.c struct wil6210_priv *wil = filp->private_data; wil 333 drivers/net/wireless/ath/wil6210/pmc.c struct pmc_ctx *pmc = &wil->pmc; wil 342 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "error, pmc is not allocated!\n"); wil 350 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 361 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 368 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, wil 388 drivers/net/wireless/ath/wil6210/pmc.c struct wil6210_priv *wil = filp->private_data; wil 389 drivers/net/wireless/ath/wil6210/pmc.c struct pmc_ctx *pmc = &wil->pmc; wil 395 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "error, pmc is not allocated!\n"); wil 438 drivers/net/wireless/ath/wil6210/pmc.c struct wil6210_priv *wil = s->private; wil 439 drivers/net/wireless/ath/wil6210/pmc.c struct pmc_ctx *pmc = &wil->pmc; wil 446 drivers/net/wireless/ath/wil6210/pmc.c wil_err(wil, "error, pmc is not allocated!\n"); wil 452 drivers/net/wireless/ath/wil6210/pmc.c wil_dbg_misc(wil, "pmcring_read: size %zu\n", pmc_ring_size); wil 21 drivers/net/wireless/ath/wil6210/pmc.h void wil_pmc_init(struct wil6210_priv *wil); wil 22 drivers/net/wireless/ath/wil6210/pmc.h void wil_pmc_alloc(struct wil6210_priv *wil, wil 24 drivers/net/wireless/ath/wil6210/pmc.h void wil_pmc_free(struct wil6210_priv *wil, int send_pmc_cmd); wil 25 drivers/net/wireless/ath/wil6210/pmc.h int wil_pmc_last_cmd_status(struct wil6210_priv *wil); wil 93 drivers/net/wireless/ath/wil6210/rx_reorder.c void wil_rx_reorder(struct wil6210_priv *wil, struct sk_buff *skb) wil 105 drivers/net/wireless/ath/wil6210/rx_reorder.c wil->txrx_ops.get_reorder_params(wil, skb, &tid, &cid, &mid, &seq, wil 107 drivers/net/wireless/ath/wil6210/rx_reorder.c sta = &wil->sta[cid]; wil 109 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "MID %d CID %d TID %d Seq 0x%03x mcast %01x\n", wil 112 drivers/net/wireless/ath/wil6210/rx_reorder.c vif = wil->vifs[mid]; wil 114 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "invalid VIF, mid %d\n", mid); wil 131 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "Rx drop: dup mcast seq 0x%03x\n", wil 156 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, wil 163 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, wil 175 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "Rx drop: old seq 0x%03x head 0x%03x\n", wil 198 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "Rx drop: dup seq 0x%03x\n", seq); wil 225 drivers/net/wireless/ath/wil6210/rx_reorder.c void wil_rx_bar(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 228 drivers/net/wireless/ath/wil6210/rx_reorder.c struct wil_sta_info *sta = &wil->sta[cid]; wil 236 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "BAR for non-existing CID %d TID %d\n", cid, tid); wil 240 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "BAR Seq 0x%03x preceding head 0x%03x\n", wil 244 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_txrx(wil, "BAR: CID %d MID %d TID %d Seq 0x%03x head 0x%03x\n", wil 252 drivers/net/wireless/ath/wil6210/rx_reorder.c struct wil_tid_ampdu_rx *wil_tid_ampdu_rx_alloc(struct wil6210_priv *wil, wil 276 drivers/net/wireless/ath/wil6210/rx_reorder.c void wil_tid_ampdu_rx_free(struct wil6210_priv *wil, wil 297 drivers/net/wireless/ath/wil6210/rx_reorder.c static u16 wil_agg_size(struct wil6210_priv *wil, u16 req_agg_wsize) wil 299 drivers/net/wireless/ath/wil6210/rx_reorder.c u16 max_agg_size = min_t(u16, wil->max_agg_wsize, wil->max_ampdu_size / wil 309 drivers/net/wireless/ath/wil6210/rx_reorder.c int wil_addba_rx_request(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, wil 325 drivers/net/wireless/ath/wil6210/rx_reorder.c bool agg_amsdu = wil->use_enhanced_dma_hw && wil 326 drivers/net/wireless/ath/wil6210/rx_reorder.c wil->use_rx_hw_reordering && wil 327 drivers/net/wireless/ath/wil6210/rx_reorder.c test_bit(WMI_FW_CAPABILITY_AMSDU, wil->fw_capabilities) && wil 328 drivers/net/wireless/ath/wil6210/rx_reorder.c wil->amsdu_en && (param_set & BIT(0)); wil 337 drivers/net/wireless/ath/wil6210/rx_reorder.c if (cid >= wil->max_assoc_sta) { wil 338 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "BACK: invalid CID %d\n", cid); wil 343 drivers/net/wireless/ath/wil6210/rx_reorder.c sta = &wil->sta[cid]; wil 345 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "BACK: CID %d not connected\n", cid); wil 350 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_wmi(wil, wil 357 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_misc(wil, "Suggest BACK wsize %d\n", wil 358 drivers/net/wireless/ath/wil6210/rx_reorder.c wil->max_agg_wsize); wil 359 drivers/net/wireless/ath/wil6210/rx_reorder.c agg_wsize = wil->max_agg_wsize; wil 361 drivers/net/wireless/ath/wil6210/rx_reorder.c agg_wsize = min_t(u16, wil->max_agg_wsize, req_agg_wsize); wil 364 drivers/net/wireless/ath/wil6210/rx_reorder.c rc = wil->txrx_ops.wmi_addba_rx_resp(wil, mid, cid, tid, dialog_token, wil 368 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "do not apply ba, rc(%d)\n", rc); wil 373 drivers/net/wireless/ath/wil6210/rx_reorder.c if (!wil->use_rx_hw_reordering) { wil 374 drivers/net/wireless/ath/wil6210/rx_reorder.c r = wil_tid_ampdu_rx_alloc(wil, agg_wsize, ssn); wil 376 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_tid_ampdu_rx_free(wil, sta->tid_rx[tid]); wil 386 drivers/net/wireless/ath/wil6210/rx_reorder.c int wil_addba_tx_request(struct wil6210_priv *wil, u8 ringid, u16 wsize) wil 388 drivers/net/wireless/ath/wil6210/rx_reorder.c u8 agg_wsize = wil_agg_size(wil, wsize); wil 390 drivers/net/wireless/ath/wil6210/rx_reorder.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ringid]; wil 394 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_misc(wil, "ADDBA for vring[%d] already in progress\n", wil 399 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_dbg_misc(wil, wil 405 drivers/net/wireless/ath/wil6210/rx_reorder.c rc = wmi_addba(wil, txdata->mid, ringid, agg_wsize, agg_timeout); wil 407 drivers/net/wireless/ath/wil6210/rx_reorder.c wil_err(wil, "wmi_addba failed, rc (%d)", rc); wil 192 drivers/net/wireless/ath/wil6210/trace.h TP_PROTO(struct wil6210_priv *wil, u8 use_compressed, u16 buff_id, wil 194 drivers/net/wireless/ath/wil6210/trace.h TP_ARGS(wil, use_compressed, buff_id, msg), wil 212 drivers/net/wireless/ath/wil6210/trace.h __entry->type = wil_rx_status_get_frame_type(wil, wil 214 drivers/net/wireless/ath/wil6210/trace.h __entry->subtype = wil_rx_status_get_fc1(wil, msg); wil 215 drivers/net/wireless/ath/wil6210/trace.h __entry->seq = wil_rx_status_get_seq(wil, msg); wil 74 drivers/net/wireless/ath/wil6210/txrx.c bool wil_is_tx_idle(struct wil6210_priv *wil) wil 78 drivers/net/wireless/ath/wil6210/txrx.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 81 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_tx[i]; wil 82 drivers/net/wireless/ath/wil6210/txrx.c int vring_index = vring - wil->ring_tx; wil 84 drivers/net/wireless/ath/wil6210/txrx.c &wil->ring_tx_data[vring_index]; wil 95 drivers/net/wireless/ath/wil6210/txrx.c if (test_bit(wil_status_napi_en, wil->status)) { wil 98 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_pm(wil, wil 103 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_ratelimited(wil, wil 106 drivers/net/wireless/ath/wil6210/txrx.c napi_synchronize(&wil->napi_tx); wil 120 drivers/net/wireless/ath/wil6210/txrx.c static int wil_vring_alloc(struct wil6210_priv *wil, struct wil_ring *vring) wil 122 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 126 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "vring_alloc:\n"); wil 150 drivers/net/wireless/ath/wil6210/txrx.c if (wil->dma_addr_size > 32) wil 160 drivers/net/wireless/ath/wil6210/txrx.c if (wil->dma_addr_size > 32) wil 162 drivers/net/wireless/ath/wil6210/txrx.c DMA_BIT_MASK(wil->dma_addr_size)); wil 175 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "vring[%d] 0x%p:%pad 0x%p\n", vring->size, wil 200 drivers/net/wireless/ath/wil6210/txrx.c static void wil_vring_free(struct wil6210_priv *wil, struct wil_ring *vring) wil 202 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 205 drivers/net/wireless/ath/wil6210/txrx.c lockdep_assert_held(&wil->mutex); wil 207 drivers/net/wireless/ath/wil6210/txrx.c int vring_index = vring - wil->ring_tx; wil 209 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "free Tx vring %d [%d] 0x%p:%pad 0x%p\n", wil 213 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "free Rx vring [%d] 0x%p:%pad 0x%p\n", wil 230 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 267 drivers/net/wireless/ath/wil6210/txrx.c static int wil_vring_alloc_skb(struct wil6210_priv *wil, struct wil_ring *vring, wil 270 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 271 drivers/net/wireless/ath/wil6210/txrx.c unsigned int sz = wil->rx_buf_len + ETH_HLEN + wil_rx_snaplen(); wil 317 drivers/net/wireless/ath/wil6210/txrx.c static void wil_rx_add_radiotap_header(struct wil6210_priv *wil, wil 336 drivers/net/wireless/ath/wil6210/txrx.c struct ieee80211_channel *ch = wil->monitor_chandef.chan; wil 340 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Unable to expand headroom to %d\n", rtap_len); wil 363 drivers/net/wireless/ath/wil6210/txrx.c static bool wil_is_rx_idle(struct wil6210_priv *wil) wil 366 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *ring = &wil->ring_rx; wil 375 drivers/net/wireless/ath/wil6210/txrx.c static int wil_rx_get_cid_by_skb(struct wil6210_priv *wil, struct sk_buff *skb) wil 379 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_vif *vif = wil->vifs[mid]; wil 398 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, wil 406 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, "Short frame, len = %d\n", wil 414 drivers/net/wireless/ath/wil6210/txrx.c if (wil->max_assoc_sta <= WIL6210_RX_DESC_MAX_CID) wil 429 drivers/net/wireless/ath/wil6210/txrx.c for (i = cid; i < wil->max_assoc_sta; i += WIL6210_RX_DESC_MAX_CID) { wil 430 drivers/net/wireless/ath/wil6210/txrx.c if (wil->sta[i].status != wil_sta_unused && wil 431 drivers/net/wireless/ath/wil6210/txrx.c ether_addr_equal(wil->sta[i].addr, ta)) { wil 436 drivers/net/wireless/ath/wil6210/txrx.c if (i >= wil->max_assoc_sta) { wil 437 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, "Could not find cid for frame with transmit addr = %pM, iftype = %d, frametype = %d, len = %d\n", wil 452 drivers/net/wireless/ath/wil6210/txrx.c static struct sk_buff *wil_vring_reap_rx(struct wil6210_priv *wil, wil 455 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 463 drivers/net/wireless/ath/wil6210/txrx.c unsigned int sz = wil->rx_buf_len + ETH_HLEN + snaplen; wil 487 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "No Rx skb at [%d]\n", i); wil 498 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Rx[%3d] : %d bytes\n", i, dmalen); wil 503 drivers/net/wireless/ath/wil6210/txrx.c vif = wil->vifs[mid]; wil 506 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "skipped RX descriptor with invalid mid %d", wil 513 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, "Rx size too large: %d bytes!\n", wil 525 drivers/net/wireless/ath/wil6210/txrx.c cid = wil_rx_get_cid_by_skb(wil, skb); wil 531 drivers/net/wireless/ath/wil6210/txrx.c stats = &wil->sta[cid].stats; wil 539 drivers/net/wireless/ath/wil6210/txrx.c wil_rx_add_radiotap_header(wil, skb); wil 554 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 559 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 562 drivers/net/wireless/ath/wil6210/txrx.c wil_rx_bar(wil, vif, cid, tid, seq); wil 567 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 619 drivers/net/wireless/ath/wil6210/txrx.c static int wil_rx_refill(struct wil6210_priv *wil, int count) wil 621 drivers/net/wireless/ath/wil6210/txrx.c struct net_device *ndev = wil->main_ndev; wil 622 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *v = &wil->ring_rx; wil 631 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_vring_alloc_skb(wil, v, v->swtail, headroom); wil 633 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, "Error %d in rx refill[%d]\n", wil 644 drivers/net/wireless/ath/wil6210/txrx.c wil_w(wil, v->hwtail, v->swtail); wil 672 drivers/net/wireless/ath/wil6210/txrx.c static int wil_rx_crypto_check(struct wil6210_priv *wil, struct sk_buff *skb) wil 679 drivers/net/wireless/ath/wil6210/txrx.c struct wil_sta_info *s = &wil->sta[cid]; wil 686 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, wil 693 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, wil 703 drivers/net/wireless/ath/wil6210/txrx.c static int wil_rx_error_check(struct wil6210_priv *wil, struct sk_buff *skb, wil 711 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "MIC error, dropping packet\n"); wil 733 drivers/net/wireless/ath/wil6210/txrx.c static struct wil_eapol_key *wil_is_ptk_eapol_key(struct wil6210_priv *wil, wil 743 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "mac header was not set\n"); wil 771 drivers/net/wireless/ath/wil6210/txrx.c static bool wil_skb_is_eap_3(struct wil6210_priv *wil, struct sk_buff *skb) wil 776 drivers/net/wireless/ath/wil6210/txrx.c key = wil_is_ptk_eapol_key(wil, skb); wil 784 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "EAPOL key message 3\n"); wil 788 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "EAPOL key message 1\n"); wil 793 drivers/net/wireless/ath/wil6210/txrx.c static bool wil_skb_is_eap_4(struct wil6210_priv *wil, struct sk_buff *skb) wil 798 drivers/net/wireless/ath/wil6210/txrx.c key = wil_is_ptk_eapol_key(wil, skb); wil 806 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "EAPOL key message 2\n"); wil 810 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "EAPOL key message 4\n"); wil 819 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 824 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "Invalid rekey state = %d\n", wil 830 drivers/net/wireless/ath/wil6210/txrx.c cid = wil_find_cid_by_idx(wil, vif->mid, 0); wil 831 drivers/net/wireless/ath/wil6210/txrx.c if (!wil_cid_valid(wil, cid)) { wil 832 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Invalid cid = %d\n", cid); wil 837 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "Apply PTK key after eapol was sent out\n"); wil 838 drivers/net/wireless/ath/wil6210/txrx.c rc = wmi_add_cipher_key(vif, 0, wil->sta[cid].addr, 0, NULL, wil 845 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Apply PTK key failed %d\n", rc); wil 850 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 855 drivers/net/wireless/ath/wil6210/txrx.c !test_bit(WMI_FW_CAPABILITY_SPLIT_REKEY, wil->fw_capabilities)) wil 859 drivers/net/wireless/ath/wil6210/txrx.c if (!wil_skb_is_eap_4(wil, skb)) wil 862 drivers/net/wireless/ath/wil6210/txrx.c spin_lock_bh(&wil->eap_lock); wil 874 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Unknown rekey state = %d", wil 877 drivers/net/wireless/ath/wil6210/txrx.c spin_unlock_bh(&wil->eap_lock); wil 880 drivers/net/wireless/ath/wil6210/txrx.c q = queue_work(wil->wmi_wq, &vif->enable_tx_key_worker); wil 881 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "queue_work of enable_tx_key_worker -> %d\n", wil 888 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 892 drivers/net/wireless/ath/wil6210/txrx.c !test_bit(WMI_FW_CAPABILITY_SPLIT_REKEY, wil->fw_capabilities)) wil 896 drivers/net/wireless/ath/wil6210/txrx.c if (!wil_skb_is_eap_3(wil, skb)) wil 912 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 945 drivers/net/wireless/ath/wil6210/txrx.c int xmit_cid = wil_find_cid(wil, vif->mid, da); wil 968 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Rx -> Tx %d bytes\n", len); wil 980 drivers/net/wireless/ath/wil6210/txrx.c rc = napi_gro_receive(&wil->napi_rx, skb); wil 983 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Rx complete %d bytes => %s\n", wil 991 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Rx drop %d bytes\n", len); wil 1005 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = ndev_to_wil(ndev); wil 1008 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.get_netif_rx_params(skb, &cid, &security); wil 1010 drivers/net/wireless/ath/wil6210/txrx.c stats = &wil->sta[cid].stats; wil 1014 drivers/net/wireless/ath/wil6210/txrx.c if (security && (wil->txrx_ops.rx_crypto_check(wil, skb) != 0)) { wil 1015 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Rx drop %d bytes\n", skb->len); wil 1024 drivers/net/wireless/ath/wil6210/txrx.c if (unlikely(wil->txrx_ops.rx_error_check(wil, skb, stats))) { wil 1037 drivers/net/wireless/ath/wil6210/txrx.c void wil_rx_handle(struct wil6210_priv *wil, int *quota) wil 1039 drivers/net/wireless/ath/wil6210/txrx.c struct net_device *ndev = wil->main_ndev; wil 1041 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *v = &wil->ring_rx; wil 1045 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Rx IRQ while Rx not yet initialized\n"); wil 1048 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "rx_handle\n"); wil 1049 drivers/net/wireless/ath/wil6210/txrx.c while ((*quota > 0) && (NULL != (skb = wil_vring_reap_rx(wil, v)))) { wil 1061 drivers/net/wireless/ath/wil6210/txrx.c wil_rx_reorder(wil, skb); wil 1064 drivers/net/wireless/ath/wil6210/txrx.c wil_rx_refill(wil, v->size); wil 1067 drivers/net/wireless/ath/wil6210/txrx.c static void wil_rx_buf_len_init(struct wil6210_priv *wil) wil 1069 drivers/net/wireless/ath/wil6210/txrx.c wil->rx_buf_len = rx_large_buf ? wil 1071 drivers/net/wireless/ath/wil6210/txrx.c if (mtu_max > wil->rx_buf_len) { wil 1076 drivers/net/wireless/ath/wil6210/txrx.c wil_info(wil, "Override RX buffer to mtu_max(%d)\n", mtu_max); wil 1077 drivers/net/wireless/ath/wil6210/txrx.c wil->rx_buf_len = mtu_max; wil 1081 drivers/net/wireless/ath/wil6210/txrx.c static int wil_rx_init(struct wil6210_priv *wil, uint order) wil 1083 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_rx; wil 1086 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "rx_init\n"); wil 1089 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Rx ring already allocated\n"); wil 1093 drivers/net/wireless/ath/wil6210/txrx.c wil_rx_buf_len_init(wil); wil 1097 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_vring_alloc(wil, vring); wil 1101 drivers/net/wireless/ath/wil6210/txrx.c rc = wmi_rx_chain_add(wil, vring); wil 1105 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_rx_refill(wil, vring->size); wil 1111 drivers/net/wireless/ath/wil6210/txrx.c wil_vring_free(wil, vring); wil 1116 drivers/net/wireless/ath/wil6210/txrx.c static void wil_rx_fini(struct wil6210_priv *wil) wil 1118 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_rx; wil 1120 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "rx_fini\n"); wil 1123 drivers/net/wireless/ath/wil6210/txrx.c wil_vring_free(wil, vring); wil 1169 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1196 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_tx[id]; wil 1197 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[id]; wil 1207 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "vring_init_tx: max_mpdu_size %d\n", wil 1209 drivers/net/wireless/ath/wil6210/txrx.c lockdep_assert_held(&wil->mutex); wil 1212 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx ring [%d] already allocated\n", id); wil 1220 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_vring_alloc(wil, vring); wil 1224 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][0] = cid; wil 1225 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][1] = tid; wil 1231 drivers/net/wireless/ath/wil6210/txrx.c rc = wmi_call(wil, WMI_VRING_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), wil 1238 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx config failed, status 0x%02x\n", wil 1251 drivers/net/wireless/ath/wil6210/txrx.c wil_addba_tx_request(wil, id, agg_wsize); wil 1259 drivers/net/wireless/ath/wil6210/txrx.c wil_vring_free(wil, vring); wil 1260 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][0] = wil->max_assoc_sta; wil 1261 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][1] = 0; wil 1271 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1299 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_tx[ring_id]; wil 1300 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; wil 1302 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "vring_modify: ring %d cid %d tid %d\n", ring_id, wil 1304 drivers/net/wireless/ath/wil6210/txrx.c lockdep_assert_held(&wil->mutex); wil 1307 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx ring [%d] not allocated\n", ring_id); wil 1311 drivers/net/wireless/ath/wil6210/txrx.c if (wil->ring2cid_tid[ring_id][0] != cid || wil 1312 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[ring_id][1] != tid) { wil 1313 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "ring info does not match cid=%u tid=%u\n", wil 1314 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[ring_id][0], wil 1315 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[ring_id][1]); wil 1320 drivers/net/wireless/ath/wil6210/txrx.c rc = wmi_call(wil, WMI_VRING_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), wil 1327 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx modify failed, status 0x%02x\n", wil 1338 drivers/net/wireless/ath/wil6210/txrx.c wil_addba_tx_request(wil, ring_id, agg_wsize); wil 1346 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[ring_id][0] = wil->max_assoc_sta; wil 1347 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[ring_id][1] = 0; wil 1353 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1373 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_tx[id]; wil 1374 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[id]; wil 1376 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_misc(wil, "vring_init_bcast: max_mpdu_size %d\n", wil 1378 drivers/net/wireless/ath/wil6210/txrx.c lockdep_assert_held(&wil->mutex); wil 1381 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx ring [%d] already allocated\n", id); wil 1389 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_vring_alloc(wil, vring); wil 1393 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][0] = wil->max_assoc_sta; /* CID */ wil 1394 drivers/net/wireless/ath/wil6210/txrx.c wil->ring2cid_tid[id][1] = 0; /* TID */ wil 1400 drivers/net/wireless/ath/wil6210/txrx.c rc = wmi_call(wil, WMI_BCAST_VRING_CFG_CMDID, vif->mid, wil 1408 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx config failed, status 0x%02x\n", wil 1426 drivers/net/wireless/ath/wil6210/txrx.c wil_vring_free(wil, vring); wil 1432 drivers/net/wireless/ath/wil6210/txrx.c static struct wil_ring *wil_find_tx_ucast(struct wil6210_priv *wil, wil 1438 drivers/net/wireless/ath/wil6210/txrx.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 1440 drivers/net/wireless/ath/wil6210/txrx.c cid = wil_find_cid(wil, vif->mid, da); wil 1442 drivers/net/wireless/ath/wil6210/txrx.c if (cid < 0 || cid >= wil->max_assoc_sta) wil 1446 drivers/net/wireless/ath/wil6210/txrx.c for (i = min_ring_id; i < ARRAY_SIZE(wil->ring2cid_tid); i++) { wil 1447 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->ring_tx_data[i].dot1x_open && wil 1450 drivers/net/wireless/ath/wil6210/txrx.c if (wil->ring2cid_tid[i][0] == cid) { wil 1451 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *v = &wil->ring_tx[i]; wil 1452 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[i]; wil 1454 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "find_tx_ucast: (%pM) -> [%d]\n", wil 1459 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 1470 drivers/net/wireless/ath/wil6210/txrx.c static int wil_tx_ring(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 1473 drivers/net/wireless/ath/wil6210/txrx.c static struct wil_ring *wil_find_tx_ring_sta(struct wil6210_priv *wil, wil 1481 drivers/net/wireless/ath/wil6210/txrx.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 1488 drivers/net/wireless/ath/wil6210/txrx.c ring = &wil->ring_tx[i]; wil 1489 drivers/net/wireless/ath/wil6210/txrx.c txdata = &wil->ring_tx_data[i]; wil 1493 drivers/net/wireless/ath/wil6210/txrx.c cid = wil->ring2cid_tid[i][0]; wil 1494 drivers/net/wireless/ath/wil6210/txrx.c if (cid >= wil->max_assoc_sta) /* skip BCAST */ wil 1497 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->ring_tx_data[i].dot1x_open && wil 1501 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx -> ring %d\n", i); wil 1506 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx while no rings active?\n"); wil 1522 drivers/net/wireless/ath/wil6210/txrx.c static struct wil_ring *wil_find_tx_bcast_1(struct wil6210_priv *wil, wil 1532 drivers/net/wireless/ath/wil6210/txrx.c v = &wil->ring_tx[i]; wil 1533 drivers/net/wireless/ath/wil6210/txrx.c txdata = &wil->ring_tx_data[i]; wil 1536 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->ring_tx_data[i].dot1x_open && wil 1543 drivers/net/wireless/ath/wil6210/txrx.c static void wil_set_da_for_vring(struct wil6210_priv *wil, wil 1547 drivers/net/wireless/ath/wil6210/txrx.c int cid = wil->ring2cid_tid[vring_index][0]; wil 1549 drivers/net/wireless/ath/wil6210/txrx.c ether_addr_copy(da, wil->sta[cid].addr); wil 1552 drivers/net/wireless/ath/wil6210/txrx.c static struct wil_ring *wil_find_tx_bcast_2(struct wil6210_priv *wil, wil 1562 drivers/net/wireless/ath/wil6210/txrx.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 1566 drivers/net/wireless/ath/wil6210/txrx.c v = &wil->ring_tx[i]; wil 1567 drivers/net/wireless/ath/wil6210/txrx.c txdata = &wil->ring_tx_data[i]; wil 1571 drivers/net/wireless/ath/wil6210/txrx.c cid = wil->ring2cid_tid[i][0]; wil 1572 drivers/net/wireless/ath/wil6210/txrx.c if (cid >= wil->max_assoc_sta) /* skip BCAST */ wil 1574 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->ring_tx_data[i].dot1x_open && wil 1579 drivers/net/wireless/ath/wil6210/txrx.c if (0 == memcmp(wil->sta[cid].addr, src, ETH_ALEN)) wil 1585 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx while no vrings active?\n"); wil 1590 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "BCAST -> ring %d\n", i); wil 1591 drivers/net/wireless/ath/wil6210/txrx.c wil_set_da_for_vring(wil, skb, i); wil 1595 drivers/net/wireless/ath/wil6210/txrx.c v2 = &wil->ring_tx[i]; wil 1596 drivers/net/wireless/ath/wil6210/txrx.c txdata2 = &wil->ring_tx_data[i]; wil 1599 drivers/net/wireless/ath/wil6210/txrx.c cid = wil->ring2cid_tid[i][0]; wil 1600 drivers/net/wireless/ath/wil6210/txrx.c if (cid >= wil->max_assoc_sta) /* skip BCAST */ wil 1602 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->ring_tx_data[i].dot1x_open && wil 1606 drivers/net/wireless/ath/wil6210/txrx.c if (0 == memcmp(wil->sta[cid].addr, src, ETH_ALEN)) wil 1611 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "BCAST DUP -> ring %d\n", i); wil 1612 drivers/net/wireless/ath/wil6210/txrx.c wil_set_da_for_vring(wil, skb2, i); wil 1613 drivers/net/wireless/ath/wil6210/txrx.c wil_tx_ring(wil, vif, v2, skb2); wil 1617 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "skb_copy failed\n"); wil 1730 drivers/net/wireless/ath/wil6210/txrx.c static int __wil_tx_vring_tso(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 1733 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 1756 drivers/net/wireless/ath/wil6210/txrx.c int vring_index = vring - wil->ring_tx; wil 1757 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[vring_index]; wil 1771 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "tx_vring_tso: %d bytes to vring %d\n", skb->len, wil 1783 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, wil 1829 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "TSO: Skb head DMA map error\n"); wil 1833 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_map((union wil_tx_desc *)hdr_desc, pa, wil 1848 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "TSO: process skb head, len %u\n", wil 1853 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "TSO: frag[%d]: len %u\n", f, len); wil 1857 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 1862 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, "TSO: ring overflow\n"); wil 1869 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "TSO: lenmss %d, i %d\n", lenmss, i); wil 1887 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "TSO: DMA map page error\n"); wil 1901 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_map((union wil_tx_desc *)d, wil 1915 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 1984 drivers/net/wireless/ath/wil6210/txrx.c if (wil_val_in_range(wil->ring_idle_trsh, wil 1987 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Ring[%2d] not idle %d -> %d\n", wil 2000 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "TSO: Tx swhead %d -> %d\n", swhead, vring->swhead); wil 2007 drivers/net/wireless/ath/wil6210/txrx.c if (wil->tx_latency) wil 2012 drivers/net/wireless/ath/wil6210/txrx.c wil_w(wil, vring->hwtail, vring->swhead); wil 2033 drivers/net/wireless/ath/wil6210/txrx.c static int __wil_tx_ring(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 2036 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 2043 drivers/net/wireless/ath/wil6210/txrx.c int ring_index = ring - wil->ring_tx; wil 2044 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_index]; wil 2051 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "tx_ring: %d bytes to ring %d, nr_frags %d\n", wil 2058 drivers/net/wireless/ath/wil6210/txrx.c wil_err_ratelimited(wil, wil 2067 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx[%2d] skb %d bytes 0x%p -> %pad\n", ring_index, wil 2076 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_map((union wil_tx_desc *)d, pa, len, wil 2085 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx[%2d] Failed to set cksum, drop packet\n", wil 2099 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx[%2d] desc[%4d]\n", ring_index, i); wil 2107 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx[%2d] failed to map fragment\n", wil 2112 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_map((union wil_tx_desc *)d, wil 2125 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx[%2d] desc[%4d]\n", ring_index, i); wil 2137 drivers/net/wireless/ath/wil6210/txrx.c if (wil_val_in_range(wil->ring_idle_trsh, wil 2140 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Ring[%2d] not idle %d -> %d\n", wil 2153 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Tx[%2d] swhead %d -> %d\n", ring_index, swhead, wil 2162 drivers/net/wireless/ath/wil6210/txrx.c if (wil->tx_latency) wil 2167 drivers/net/wireless/ath/wil6210/txrx.c wil_w(wil, ring->hwtail, ring->swhead); wil 2181 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_unmap(dev, wil 2191 drivers/net/wireless/ath/wil6210/txrx.c static int wil_tx_ring(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 2194 drivers/net/wireless/ath/wil6210/txrx.c int ring_index = ring - wil->ring_tx; wil 2195 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_index]; wil 2200 drivers/net/wireless/ath/wil6210/txrx.c if (test_bit(wil_status_suspending, wil->status) || wil 2201 drivers/net/wireless/ath/wil6210/txrx.c test_bit(wil_status_suspended, wil->status) || wil 2202 drivers/net/wireless/ath/wil6210/txrx.c test_bit(wil_status_resuming, wil->status)) { wil 2203 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 2209 drivers/net/wireless/ath/wil6210/txrx.c rc = (skb_is_gso(skb) ? wil->txrx_ops.tx_ring_tso : __wil_tx_ring) wil 2210 drivers/net/wireless/ath/wil6210/txrx.c (wil, vif, ring, skb); wil 2234 drivers/net/wireless/ath/wil6210/txrx.c static inline void __wil_update_net_queues(struct wil6210_priv *wil, wil 2240 drivers/net/wireless/ath/wil6210/txrx.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 2246 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "vring %d, mid %d, check_stop=%d, stopped=%d", wil 2247 drivers/net/wireless/ath/wil6210/txrx.c (int)(ring - wil->ring_tx), vif->mid, check_stop, wil 2250 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "check_stop=%d, mid=%d, stopped=%d", wil 2266 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "netif_tx_stop called\n"); wil 2272 drivers/net/wireless/ath/wil6210/txrx.c if (test_bit(wil_status_suspending, wil->status) || wil 2273 drivers/net/wireless/ath/wil6210/txrx.c test_bit(wil_status_suspended, wil->status)) wil 2278 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *cur_ring = &wil->ring_tx[i]; wil 2279 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[i]; wil 2286 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "ring %d full, can't wake\n", wil 2287 drivers/net/wireless/ath/wil6210/txrx.c (int)(cur_ring - wil->ring_tx)); wil 2294 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "calling netif_tx_wake\n"); wil 2300 drivers/net/wireless/ath/wil6210/txrx.c void wil_update_net_queues(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 2303 drivers/net/wireless/ath/wil6210/txrx.c spin_lock(&wil->net_queue_lock); wil 2304 drivers/net/wireless/ath/wil6210/txrx.c __wil_update_net_queues(wil, vif, ring, check_stop); wil 2305 drivers/net/wireless/ath/wil6210/txrx.c spin_unlock(&wil->net_queue_lock); wil 2308 drivers/net/wireless/ath/wil6210/txrx.c void wil_update_net_queues_bh(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 2311 drivers/net/wireless/ath/wil6210/txrx.c spin_lock_bh(&wil->net_queue_lock); wil 2312 drivers/net/wireless/ath/wil6210/txrx.c __wil_update_net_queues(wil, vif, ring, check_stop); wil 2313 drivers/net/wireless/ath/wil6210/txrx.c spin_unlock_bh(&wil->net_queue_lock); wil 2319 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2326 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "start_xmit\n"); wil 2327 drivers/net/wireless/ath/wil6210/txrx.c if (unlikely(!test_bit(wil_status_fwready, wil->status))) { wil 2329 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "FW not ready\n"); wil 2335 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_ratelimited(wil, wil 2340 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Xmit in monitor mode not supported\n"); wil 2348 drivers/net/wireless/ath/wil6210/txrx.c ring = wil_find_tx_ring_sta(wil, vif, skb); wil 2354 drivers/net/wireless/ath/wil6210/txrx.c ring = wil_find_tx_bcast_2(wil, vif, skb); wil 2357 drivers/net/wireless/ath/wil6210/txrx.c ring = wil_find_tx_bcast_1(wil, vif, skb); wil 2362 drivers/net/wireless/ath/wil6210/txrx.c ring = wil_find_tx_bcast_2(wil, vif, skb); wil 2365 drivers/net/wireless/ath/wil6210/txrx.c ring = wil_find_tx_ucast(wil, vif, skb); wil 2368 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "No Tx RING found for %pM\n", da); wil 2372 drivers/net/wireless/ath/wil6210/txrx.c rc = wil_tx_ring(wil, vif, ring, skb); wil 2377 drivers/net/wireless/ath/wil6210/txrx.c wil_update_net_queues_bh(wil, vif, ring, true); wil 2395 drivers/net/wireless/ath/wil6210/txrx.c void wil_tx_latency_calc(struct wil6210_priv *wil, struct sk_buff *skb, wil 2401 drivers/net/wireless/ath/wil6210/txrx.c if (!wil->tx_latency) wil 2408 drivers/net/wireless/ath/wil6210/txrx.c bin = skb_time_us / wil->tx_latency_res; wil 2411 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "skb time %dus => bin %d\n", skb_time_us, bin); wil 2429 drivers/net/wireless/ath/wil6210/txrx.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2431 drivers/net/wireless/ath/wil6210/txrx.c struct device *dev = wil_to_dev(wil); wil 2432 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring *vring = &wil->ring_tx[ringid]; wil 2433 drivers/net/wireless/ath/wil6210/txrx.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ringid]; wil 2435 drivers/net/wireless/ath/wil6210/txrx.c int cid = wil->ring2cid_tid[ringid][0]; wil 2442 drivers/net/wireless/ath/wil6210/txrx.c wil_err(wil, "Tx irq[%d]: vring not initialized\n", ringid); wil 2447 drivers/net/wireless/ath/wil6210/txrx.c wil_info(wil, "Tx irq[%d]: vring disabled\n", ringid); wil 2451 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "tx_complete: (%d)\n", ringid); wil 2455 drivers/net/wireless/ath/wil6210/txrx.c if (cid < wil->max_assoc_sta) wil 2456 drivers/net/wireless/ath/wil6210/txrx.c stats = &wil->sta[cid].stats; wil 2488 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, wil 2495 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_unmap(dev, wil 2507 drivers/net/wireless/ath/wil6210/txrx.c wil_tx_latency_calc(wil, skb, wil 2508 drivers/net/wireless/ath/wil6210/txrx.c &wil->sta[cid]); wil 2540 drivers/net/wireless/ath/wil6210/txrx.c if (wil_val_in_range(wil->ring_idle_trsh, wil 2542 drivers/net/wireless/ath/wil6210/txrx.c wil_dbg_txrx(wil, "Ring[%2d] idle %d -> %d\n", wil 2549 drivers/net/wireless/ath/wil6210/txrx.c wil_update_net_queues(wil, vif, vring, false); wil 2554 drivers/net/wireless/ath/wil6210/txrx.c static inline int wil_tx_init(struct wil6210_priv *wil) wil 2559 drivers/net/wireless/ath/wil6210/txrx.c static inline void wil_tx_fini(struct wil6210_priv *wil) {} wil 2561 drivers/net/wireless/ath/wil6210/txrx.c static void wil_get_reorder_params(struct wil6210_priv *wil, wil 2575 drivers/net/wireless/ath/wil6210/txrx.c void wil_init_txrx_ops_legacy_dma(struct wil6210_priv *wil) wil 2577 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.configure_interrupt_moderation = wil 2580 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_map = wil_tx_desc_map; wil 2581 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_desc_unmap = wil_txdesc_unmap; wil 2582 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_ring_tso = __wil_tx_vring_tso; wil 2583 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.ring_init_tx = wil_vring_init_tx; wil 2584 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.ring_fini_tx = wil_vring_free; wil 2585 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.ring_init_bcast = wil_vring_init_bcast; wil 2586 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_init = wil_tx_init; wil 2587 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_fini = wil_tx_fini; wil 2588 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.tx_ring_modify = wil_tx_vring_modify; wil 2590 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.rx_init = wil_rx_init; wil 2591 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.wmi_addba_rx_resp = wmi_addba_rx_resp; wil 2592 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.get_reorder_params = wil_get_reorder_params; wil 2593 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.get_netif_rx_params = wil 2595 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.rx_crypto_check = wil_rx_crypto_check; wil 2596 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.rx_error_check = wil_rx_error_check; wil 2597 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.is_rx_idle = wil_is_rx_idle; wil 2598 drivers/net/wireless/ath/wil6210/txrx.c wil->txrx_ops.rx_fini = wil_rx_fini; wil 655 drivers/net/wireless/ath/wil6210/txrx.h static inline int wil_get_min_tx_ring_id(struct wil6210_priv *wil) wil 658 drivers/net/wireless/ath/wil6210/txrx.h return wil->use_enhanced_dma_hw ? 1 : 0; wil 691 drivers/net/wireless/ath/wil6210/txrx.h void wil_rx_reorder(struct wil6210_priv *wil, struct sk_buff *skb); wil 692 drivers/net/wireless/ath/wil6210/txrx.h void wil_rx_bar(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 694 drivers/net/wireless/ath/wil6210/txrx.h struct wil_tid_ampdu_rx *wil_tid_ampdu_rx_alloc(struct wil6210_priv *wil, wil 696 drivers/net/wireless/ath/wil6210/txrx.h void wil_tid_ampdu_rx_free(struct wil6210_priv *wil, wil 699 drivers/net/wireless/ath/wil6210/txrx.h void wil_init_txrx_ops_legacy_dma(struct wil6210_priv *wil); wil 700 drivers/net/wireless/ath/wil6210/txrx.h void wil_tx_latency_calc(struct wil6210_priv *wil, struct sk_buff *skb, wil 58 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_find_free_sring(struct wil6210_priv *wil) wil 63 drivers/net/wireless/ath/wil6210/txrx_edma.c if (!wil->srings[i].va) wil 70 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_sring_free(struct wil6210_priv *wil, wil 73 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 81 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "status_ring_free, size(bytes)=%zu, 0x%p:%pad\n", wil 89 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_sring_alloc(struct wil6210_priv *wil, wil 92 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 95 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "status_ring_alloc: size=%zu\n", sz); wil 98 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Cannot allocate a zero size status ring\n"); wil 111 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "status_ring[%d] 0x%p:%pad\n", sring->size, sring->va, wil 117 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_tx_init_edma(struct wil6210_priv *wil) wil 119 drivers/net/wireless/ath/wil6210/txrx_edma.c int ring_id = wil_find_free_sring(wil); wil 124 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->tx_status_ring_order < WIL_SRING_SIZE_ORDER_MIN || wil 125 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->tx_status_ring_order > WIL_SRING_SIZE_ORDER_MAX) wil 126 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->tx_status_ring_order = WIL_TX_SRING_SIZE_ORDER_DEFAULT; wil 128 drivers/net/wireless/ath/wil6210/txrx_edma.c status_ring_size = 1 << wil->tx_status_ring_order; wil 130 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "init TX sring: size=%u, ring_id=%u\n", wil 139 drivers/net/wireless/ath/wil6210/txrx_edma.c sring = &wil->srings[ring_id]; wil 144 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_sring_alloc(wil, sring); wil 148 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_wmi_tx_sring_cfg(wil, ring_id); wil 153 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->tx_sring_idx = ring_id; wil 157 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_free(wil, sring); wil 164 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_ring_alloc_skb_edma(struct wil6210_priv *wil, wil 167 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 168 drivers/net/wireless/ath/wil6210/txrx_edma.c unsigned int sz = wil->rx_buf_len; wil 171 drivers/net/wireless/ath/wil6210/txrx_edma.c struct list_head *active = &wil->rx_buff_mgmt.active; wil 172 drivers/net/wireless/ath/wil6210/txrx_edma.c struct list_head *free = &wil->rx_buff_mgmt.free; wil 174 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_rx_buff *buff_arr = wil->rx_buff_mgmt.buff_arr; wil 181 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_mgmt.free_list_empty_cnt++; wil 244 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_rx_refill_edma(struct wil6210_priv *wil) wil 246 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 254 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_ring_alloc_skb_edma(wil, ring, ring->swhead); wil 257 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "No free buffer ID found\n"); wil 259 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 271 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_w(wil, ring->hwtail, ring->swhead); wil 276 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_move_all_rx_buff_to_free_list(struct wil6210_priv *wil, wil 279 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 280 drivers/net/wireless/ath/wil6210/txrx_edma.c struct list_head *active = &wil->rx_buff_mgmt.active; wil 283 drivers/net/wireless/ath/wil6210/txrx_edma.c if (!wil->rx_buff_mgmt.buff_arr) wil 292 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "No Rx skb at buff_id %d\n", rx_buff->id); wil 296 drivers/net/wireless/ath/wil6210/txrx_edma.c dma_unmap_single(dev, pa, wil->rx_buf_len, wil 302 drivers/net/wireless/ath/wil6210/txrx_edma.c list_move(&rx_buff->list, &wil->rx_buff_mgmt.free); wil 306 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_free_rx_buff_arr(struct wil6210_priv *wil) wil 308 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 310 drivers/net/wireless/ath/wil6210/txrx_edma.c if (!wil->rx_buff_mgmt.buff_arr) wil 316 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_move_all_rx_buff_to_free_list(wil, ring); wil 318 drivers/net/wireless/ath/wil6210/txrx_edma.c kfree(wil->rx_buff_mgmt.buff_arr); wil 319 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_mgmt.buff_arr = NULL; wil 322 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_init_rx_buff_arr(struct wil6210_priv *wil, wil 326 drivers/net/wireless/ath/wil6210/txrx_edma.c struct list_head *active = &wil->rx_buff_mgmt.active; wil 327 drivers/net/wireless/ath/wil6210/txrx_edma.c struct list_head *free = &wil->rx_buff_mgmt.free; wil 330 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_mgmt.buff_arr = kcalloc(size + 1, wil 333 drivers/net/wireless/ath/wil6210/txrx_edma.c if (!wil->rx_buff_mgmt.buff_arr) wil 343 drivers/net/wireless/ath/wil6210/txrx_edma.c buff_arr = wil->rx_buff_mgmt.buff_arr; wil 349 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_mgmt.size = size + 1; wil 354 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_init_rx_sring(struct wil6210_priv *wil, wil 359 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_status_ring *sring = &wil->srings[ring_id]; wil 362 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "init RX sring: size=%u, ring_id=%u\n", wil 370 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_sring_alloc(wil, sring); wil 374 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_wmi_rx_sring_add(wil, ring_id); wil 382 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_free(wil, sring); wil 386 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_ring_alloc_desc_ring(struct wil6210_priv *wil, wil 389 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 392 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "alloc_desc_ring:\n"); wil 415 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "%s ring[%d] 0x%p:%pad 0x%p\n", wil 431 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_ring_free_edma(struct wil6210_priv *wil, struct wil_ring *ring) wil 433 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 442 drivers/net/wireless/ath/wil6210/txrx_edma.c lockdep_assert_held(&wil->mutex); wil 444 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "free Rx ring [%d] 0x%p:%pad 0x%p\n", wil 448 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_move_all_rx_buff_to_free_list(wil, ring); wil 456 drivers/net/wireless/ath/wil6210/txrx_edma.c ring_index = ring - wil->ring_tx; wil 458 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "free Tx ring %d [%d] 0x%p:%pad 0x%p\n", wil 472 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 493 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_init_rx_desc_ring(struct wil6210_priv *wil, u16 desc_ring_size, wil 496 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 499 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "init RX desc ring\n"); wil 503 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_ring_alloc_desc_ring(wil, ring); wil 507 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_wmi_rx_desc_ring_add(wil, status_ring_id); wil 513 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_ring_free_edma(wil, ring); wil 517 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_get_reorder_params_edma(struct wil6210_priv *wil, wil 527 drivers/net/wireless/ath/wil6210/txrx_edma.c *seq = le16_to_cpu(wil_rx_status_get_seq(wil, s)); wil 541 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_rx_crypto_check_edma(struct wil6210_priv *wil, wil 552 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->use_rx_hw_reordering) wil 561 drivers/net/wireless/ath/wil6210/txrx_edma.c s = &wil->sta[cid]; wil 567 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 574 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 584 drivers/net/wireless/ath/wil6210/txrx_edma.c static bool wil_is_rx_idle_edma(struct wil6210_priv *wil) wil 592 drivers/net/wireless/ath/wil6210/txrx_edma.c for (i = 0; i < wil->num_rx_status_rings; i++) { wil 593 drivers/net/wireless/ath/wil6210/txrx_edma.c sring = &wil->srings[i]; wil 607 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_rx_buf_len_init_edma(struct wil6210_priv *wil) wil 610 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buf_len = rx_large_buf ? wil 614 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_rx_init_edma(struct wil6210_priv *wil, uint desc_ring_order) wil 617 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 619 drivers/net/wireless/ath/wil6210/txrx_edma.c size_t elem_size = wil->use_compressed_rx_status ? wil 625 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->use_compressed_rx_status && !wil->use_rx_hw_reordering) { wil 626 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, wil 630 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->rx_status_ring_order <= desc_ring_order) wil 632 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_status_ring_order = desc_ring_order + 1; wil 633 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->rx_buff_id_count <= desc_ring_size) wil 635 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_id_count = desc_ring_size + 512; wil 636 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->rx_status_ring_order < WIL_SRING_SIZE_ORDER_MIN || wil 637 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_status_ring_order > WIL_SRING_SIZE_ORDER_MAX) wil 638 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_status_ring_order = WIL_RX_SRING_SIZE_ORDER_DEFAULT; wil 640 drivers/net/wireless/ath/wil6210/txrx_edma.c status_ring_size = 1 << wil->rx_status_ring_order; wil 642 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, wil 646 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_rx_buf_len_init_edma(wil); wil 649 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->num_rx_status_rings > WIL6210_MAX_STATUS_RINGS - 1) wil 650 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->num_rx_status_rings = WIL6210_MAX_STATUS_RINGS - 1; wil 652 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "rx_init: allocate %d status rings\n", wil 653 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->num_rx_status_rings); wil 655 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_wmi_cfg_def_rx_offload(wil, wil->rx_buf_len); wil 660 drivers/net/wireless/ath/wil6210/txrx_edma.c for (i = 0; i < wil->num_rx_status_rings; i++) { wil 661 drivers/net/wireless/ath/wil6210/txrx_edma.c int sring_id = wil_find_free_sring(wil); wil 667 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_init_rx_sring(wil, status_ring_size, elem_size, wil 674 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_init_rx_desc_ring(wil, desc_ring_size, wil 679 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->rx_buff_id_count >= status_ring_size) { wil 680 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_info(wil, wil 682 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_id_count, status_ring_size, wil 684 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_id_count = status_ring_size - 1; wil 688 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_init_rx_buff_arr(wil, wil->rx_buff_id_count); wil 693 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_rx_refill_edma(wil); wil 699 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_free_rx_buff_arr(wil); wil 701 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_ring_free_edma(wil, ring); wil 703 drivers/net/wireless/ath/wil6210/txrx_edma.c for (i = 0; i < wil->num_rx_status_rings; i++) wil 704 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_free(wil, &wil->srings[i]); wil 712 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil6210_priv *wil = vif_to_wil(vif); wil 714 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_tx[ring_id]; wil 715 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; wil 717 drivers/net/wireless/ath/wil6210/txrx_edma.c lockdep_assert_held(&wil->mutex); wil 719 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, wil 721 drivers/net/wireless/ath/wil6210/txrx_edma.c ring_id, cid, tid, wil->tx_sring_idx); wil 725 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_ring_alloc_desc_ring(wil, ring); wil 729 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][0] = cid; wil 730 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][1] = tid; wil 736 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "WMI_TX_DESC_RING_ADD_CMD failed\n"); wil 741 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_addba_tx_request(wil, ring_id, agg_wsize); wil 749 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_ring_free_edma(wil, ring); wil 750 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][0] = wil->max_assoc_sta; wil 751 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][1] = 0; wil 760 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil6210_priv *wil = vif_to_wil(vif); wil 762 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "ring modify is not supported for EDMA\n"); wil 768 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_check_bar(struct wil6210_priv *wil, void *msg, int cid, wil 778 drivers/net/wireless/ath/wil6210/txrx_edma.c ftype = wil_rx_status_get_frame_type(wil, msg); wil 782 drivers/net/wireless/ath/wil6210/txrx_edma.c fc1 = wil_rx_status_get_fc1(wil, msg); wil 785 drivers/net/wireless/ath/wil6210/txrx_edma.c seq = le16_to_cpu(wil_rx_status_get_seq(wil, msg)); wil 786 drivers/net/wireless/ath/wil6210/txrx_edma.c vif = wil->vifs[mid]; wil 789 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "RX descriptor with invalid mid %d", mid); wil 793 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 799 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 802 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_rx_bar(wil, vif, cid, tid, seq); wil 804 drivers/net/wireless/ath/wil6210/txrx_edma.c u32 sz = wil->use_compressed_rx_status ? wil 811 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 823 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_rx_error_check_edma(struct wil6210_priv *wil, wil 832 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "L2 RX error, l2_rx_status=0x%x\n", wil 836 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 841 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 846 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 851 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 863 drivers/net/wireless/ath/wil6210/txrx_edma.c static struct sk_buff *wil_sring_reap_rx_edma(struct wil6210_priv *wil, wil 866 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 873 drivers/net/wireless/ath/wil6210/txrx_edma.c unsigned int sz = wil->rx_buf_len; wil 882 drivers/net/wireless/ath/wil6210/txrx_edma.c u16 sring_idx = sring - wil->srings; wil 901 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 914 drivers/net/wireless/ath/wil6210/txrx_edma.c if (unlikely(!wil_val_in_range(buff_id, 1, wil->rx_buff_mgmt.size))) { wil 915 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Corrupt buff_id=%d, sring->swhead=%d\n", wil 924 drivers/net/wireless/ath/wil6210/txrx_edma.c skb = wil->rx_buff_mgmt.buff_arr[buff_id].skb; wil 925 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->rx_buff_mgmt.buff_arr[buff_id].skb = NULL; wil 927 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "No Rx skb at buff_id %d\n", buff_id); wil 930 drivers/net/wireless/ath/wil6210/txrx_edma.c list_move_tail(&wil->rx_buff_mgmt.buff_arr[buff_id].list, wil 931 drivers/net/wireless/ath/wil6210/txrx_edma.c &wil->rx_buff_mgmt.free); wil 944 drivers/net/wireless/ath/wil6210/txrx_edma.c trace_wil6210_rx_status(wil, wil->use_compressed_rx_status, buff_id, wil 946 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "Rx, buff_id=%u, sring_idx=%u, dmalen=%u bytes\n", wil 949 drivers/net/wireless/ath/wil6210/txrx_edma.c (const void *)msg, wil->use_compressed_rx_status ? wil 954 drivers/net/wireless/ath/wil6210/txrx_edma.c list_move_tail(&wil->rx_buff_mgmt.buff_arr[buff_id].list, wil 955 drivers/net/wireless/ath/wil6210/txrx_edma.c &wil->rx_buff_mgmt.free); wil 960 drivers/net/wireless/ath/wil6210/txrx_edma.c if (unlikely(!wil_val_in_range(cid, 0, wil->max_assoc_sta))) { wil 961 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Corrupt cid=%d, sring->swhead=%d\n", wil 966 drivers/net/wireless/ath/wil6210/txrx_edma.c stats = &wil->sta[cid].stats; wil 969 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "Short frame, len = %d\n", dmalen); wil 976 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Rx size too large: %d bytes!\n", dmalen); wil 1011 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "failed to merge skbs!\n"); wil 1036 drivers/net/wireless/ath/wil6210/txrx_edma.c if (!wil->use_rx_hw_reordering && !wil->use_compressed_rx_status && wil 1037 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_check_bar(wil, msg, cid, skb, stats) == -EAGAIN) { wil 1048 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Unexpected data offset %d\n", data_offset); wil 1067 drivers/net/wireless/ath/wil6210/txrx_edma.c void wil_rx_handle_edma(struct wil6210_priv *wil, int *quota) wil 1070 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 1076 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Rx IRQ while Rx not yet initialized\n"); wil 1079 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "rx_handle\n"); wil 1081 drivers/net/wireless/ath/wil6210/txrx_edma.c for (i = 0; i < wil->num_rx_status_rings; i++) { wil 1082 drivers/net/wireless/ath/wil6210/txrx_edma.c sring = &wil->srings[i]; wil 1084 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, wil 1092 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_reap_rx_edma(wil, sring)))) { wil 1094 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->use_rx_hw_reordering) { wil 1097 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil6210_vif *vif = wil->vifs[mid]; wil 1100 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 1109 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_rx_reorder(wil, skb); wil 1113 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_w(wil, sring->hwtail, (sring->swhead - 1) % sring->size); wil 1116 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_rx_refill_edma(wil); wil 1160 drivers/net/wireless/ath/wil6210/txrx_edma.c int wil_tx_sring_handler(struct wil6210_priv *wil, wil 1164 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 1187 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "invalid num_descs 0\n"); wil 1195 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "invalid ring id %d\n", ring_id); wil 1198 drivers/net/wireless/ath/wil6210/txrx_edma.c ring = &wil->ring_tx[ring_id]; wil 1200 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "Tx irq[%d]: ring not initialized\n", wil 1204 drivers/net/wireless/ath/wil6210/txrx_edma.c txdata = &wil->ring_tx_data[ring_id]; wil 1206 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_info(wil, "Tx irq[%d]: ring disabled\n", ring_id); wil 1209 drivers/net/wireless/ath/wil6210/txrx_edma.c vif = wil->vifs[txdata->mid]; wil 1211 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "invalid MID %d for ring %d\n", wil 1218 drivers/net/wireless/ath/wil6210/txrx_edma.c cid = wil->ring2cid_tid[ring_id][0]; wil 1219 drivers/net/wireless/ath/wil6210/txrx_edma.c stats = (cid < wil->max_assoc_sta) ? &wil->sta[cid].stats : wil 1222 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 1240 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, wil 1260 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_tx_latency_calc(wil, skb, wil 1261 drivers/net/wireless/ath/wil6210/txrx_edma.c &wil->sta[cid]); wil 1289 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil_val_in_range(wil->ring_idle_trsh, wil 1291 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "Ring[%2d] idle %d -> %d\n", wil 1300 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_w(wil, sring->hwtail, sring->swhead); wil 1309 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_update_net_queues(wil, vif, NULL, false); wil 1313 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_w(wil, sring->hwtail, (sring->swhead - 1) % sring->size); wil 1354 drivers/net/wireless/ath/wil6210/txrx_edma.c static int wil_tx_tso_gen_desc(struct wil6210_priv *wil, void *buff_addr, wil 1361 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 1365 drivers/net/wireless/ath/wil6210/txrx_edma.c int ring_index = ring - wil->ring_tx; wil 1379 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err(wil, "TSO: Skb DMA map error\n"); wil 1383 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_desc_map((union wil_tx_desc *)d, pa, wil 1405 drivers/net/wireless/ath/wil6210/txrx_edma.c static int __wil_tx_ring_tso_edma(struct wil6210_priv *wil, wil 1410 drivers/net/wireless/ath/wil6210/txrx_edma.c int ring_index = ring - wil->ring_tx; wil 1411 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_index]; wil 1425 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "tx_ring_tso: %d bytes to ring %d\n", skb->len, wil 1432 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_err_ratelimited(wil, wil 1463 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "TSO: process header descriptor, hdrlen %u\n", wil 1465 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_tx_tso_gen_desc(wil, skb->data, hdrlen, swhead, wil 1474 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "TSO: process skb head, headlen %u\n", headlen); wil 1475 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_tx_tso_gen_desc(wil, skb->data + hdrlen, headlen, wil 1489 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "TSO: frag[%d]: len %u, descs_used %d\n", f, wil 1492 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_tx_tso_gen_desc(wil, NULL, len, wil 1505 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil_val_in_range(wil->ring_idle_trsh, wil 1508 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "Ring[%2d] not idle %d -> %d\n", wil 1514 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_txrx(wil, "TSO: Tx swhead %d -> %d\n", swhead, ring->swhead); wil 1521 drivers/net/wireless/ath/wil6210/txrx_edma.c if (wil->tx_latency) wil 1526 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_w(wil, ring->hwtail, ring->swhead); wil 1532 drivers/net/wireless/ath/wil6210/txrx_edma.c struct device *dev = wil_to_dev(wil); wil 1552 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1553 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_tx[ring_id]; wil 1555 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; wil 1557 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "init bcast: ring_id=%d, sring_id=%d\n", wil 1558 drivers/net/wireless/ath/wil6210/txrx_edma.c ring_id, wil->tx_sring_idx); wil 1560 drivers/net/wireless/ath/wil6210/txrx_edma.c lockdep_assert_held(&wil->mutex); wil 1565 drivers/net/wireless/ath/wil6210/txrx_edma.c rc = wil_ring_alloc_desc_ring(wil, ring); wil 1569 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][0] = WIL6210_MAX_CID; /* CID */ wil 1570 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->ring2cid_tid[ring_id][1] = 0; /* TID */ wil 1585 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_ring_free_edma(wil, ring); wil 1591 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_tx_fini_edma(struct wil6210_priv *wil) wil 1593 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_status_ring *sring = &wil->srings[wil->tx_sring_idx]; wil 1595 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "free TX sring\n"); wil 1597 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_free(wil, sring); wil 1609 drivers/net/wireless/ath/wil6210/txrx_edma.c static void wil_rx_fini_edma(struct wil6210_priv *wil) wil 1611 drivers/net/wireless/ath/wil6210/txrx_edma.c struct wil_ring *ring = &wil->ring_rx; wil 1614 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_dbg_misc(wil, "rx_fini_edma\n"); wil 1616 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_ring_free_edma(wil, ring); wil 1618 drivers/net/wireless/ath/wil6210/txrx_edma.c for (i = 0; i < wil->num_rx_status_rings; i++) { wil 1619 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_rx_data_free(&wil->srings[i]); wil 1620 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_sring_free(wil, &wil->srings[i]); wil 1623 drivers/net/wireless/ath/wil6210/txrx_edma.c wil_free_rx_buff_arr(wil); wil 1626 drivers/net/wireless/ath/wil6210/txrx_edma.c void wil_init_txrx_ops_edma(struct wil6210_priv *wil) wil 1628 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.configure_interrupt_moderation = wil 1631 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.ring_init_tx = wil_ring_init_tx_edma; wil 1632 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.ring_fini_tx = wil_ring_free_edma; wil 1633 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.ring_init_bcast = wil_ring_init_bcast_edma; wil 1634 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_init = wil_tx_init_edma; wil 1635 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_fini = wil_tx_fini_edma; wil 1636 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_desc_map = wil_tx_desc_map_edma; wil 1637 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_desc_unmap = wil_tx_desc_unmap_edma; wil 1638 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_ring_tso = __wil_tx_ring_tso_edma; wil 1639 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.tx_ring_modify = wil_tx_ring_modify_edma; wil 1641 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.rx_init = wil_rx_init_edma; wil 1642 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.wmi_addba_rx_resp = wmi_addba_rx_resp_edma; wil 1643 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.get_reorder_params = wil_get_reorder_params_edma; wil 1644 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.get_netif_rx_params = wil_get_netif_rx_params_edma; wil 1645 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.rx_crypto_check = wil_rx_crypto_check_edma; wil 1646 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.rx_error_check = wil_rx_error_check_edma; wil 1647 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.is_rx_idle = wil_is_rx_idle_edma; wil 1648 drivers/net/wireless/ath/wil6210/txrx_edma.c wil->txrx_ops.rx_fini = wil_rx_fini_edma; wil 453 drivers/net/wireless/ath/wil6210/txrx_edma.h static inline int wil_rx_status_get_frame_type(struct wil6210_priv *wil, wil 456 drivers/net/wireless/ath/wil6210/txrx_edma.h if (wil->use_compressed_rx_status) wil 463 drivers/net/wireless/ath/wil6210/txrx_edma.h static inline int wil_rx_status_get_fc1(struct wil6210_priv *wil, void *msg) wil 465 drivers/net/wireless/ath/wil6210/txrx_edma.h if (wil->use_compressed_rx_status) wil 472 drivers/net/wireless/ath/wil6210/txrx_edma.h static inline __le16 wil_rx_status_get_seq(struct wil6210_priv *wil, void *msg) wil 474 drivers/net/wireless/ath/wil6210/txrx_edma.h if (wil->use_compressed_rx_status) wil 606 drivers/net/wireless/ath/wil6210/txrx_edma.h void wil_configure_interrupt_moderation_edma(struct wil6210_priv *wil); wil 607 drivers/net/wireless/ath/wil6210/txrx_edma.h int wil_tx_sring_handler(struct wil6210_priv *wil, wil 609 drivers/net/wireless/ath/wil6210/txrx_edma.h void wil_rx_handle_edma(struct wil6210_priv *wil, int *quota); wil 610 drivers/net/wireless/ath/wil6210/txrx_edma.h void wil_init_txrx_ops_edma(struct wil6210_priv *wil); wil 603 drivers/net/wireless/ath/wil6210/wil6210.h void (*configure_interrupt_moderation)(struct wil6210_priv *wil); wil 607 drivers/net/wireless/ath/wil6210/wil6210.h void (*ring_fini_tx)(struct wil6210_priv *wil, struct wil_ring *ring); wil 609 drivers/net/wireless/ath/wil6210/wil6210.h int (*tx_init)(struct wil6210_priv *wil); wil 610 drivers/net/wireless/ath/wil6210/wil6210.h void (*tx_fini)(struct wil6210_priv *wil); wil 616 drivers/net/wireless/ath/wil6210/wil6210.h int (*tx_ring_tso)(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 622 drivers/net/wireless/ath/wil6210/wil6210.h int (*rx_init)(struct wil6210_priv *wil, uint ring_order); wil 623 drivers/net/wireless/ath/wil6210/wil6210.h void (*rx_fini)(struct wil6210_priv *wil); wil 624 drivers/net/wireless/ath/wil6210/wil6210.h int (*wmi_addba_rx_resp)(struct wil6210_priv *wil, u8 mid, u8 cid, wil 627 drivers/net/wireless/ath/wil6210/wil6210.h void (*get_reorder_params)(struct wil6210_priv *wil, wil 632 drivers/net/wireless/ath/wil6210/wil6210.h int (*rx_crypto_check)(struct wil6210_priv *wil, struct sk_buff *skb); wil 633 drivers/net/wireless/ath/wil6210/wil6210.h int (*rx_error_check)(struct wil6210_priv *wil, struct sk_buff *skb, wil 635 drivers/net/wireless/ath/wil6210/wil6210.h bool (*is_rx_idle)(struct wil6210_priv *wil); wil 807 drivers/net/wireless/ath/wil6210/wil6210.h struct wil6210_priv *wil; wil 833 drivers/net/wireless/ath/wil6210/wil6210.h struct wil6210_priv *wil; wil 855 drivers/net/wireless/ath/wil6210/wil6210.h struct wil6210_priv *wil; wil 1081 drivers/net/wireless/ath/wil6210/wil6210.h #define vif_to_wil(v) (v->wil) wil 1084 drivers/net/wireless/ath/wil6210/wil6210.h #define GET_MAX_VIFS(wil) min_t(int, (wil)->max_vifs, WIL_MAX_VIFS) wil 1086 drivers/net/wireless/ath/wil6210/wil6210.h static inline struct wil6210_vif *wdev_to_vif(struct wil6210_priv *wil, wil 1090 drivers/net/wireless/ath/wil6210/wil6210.h if (wdev == wil->p2p_wdev) wil 1091 drivers/net/wireless/ath/wil6210/wil6210.h return ndev_to_vif(wil->main_ndev); wil 1097 drivers/net/wireless/ath/wil6210/wil6210.h vif_to_radio_wdev(struct wil6210_priv *wil, struct wil6210_vif *vif) wil 1103 drivers/net/wireless/ath/wil6210/wil6210.h return wil->radio_wdev; wil 1107 drivers/net/wireless/ath/wil6210/wil6210.h void wil_dbg_trace(struct wil6210_priv *wil, const char *fmt, ...); wil 1109 drivers/net/wireless/ath/wil6210/wil6210.h void __wil_err(struct wil6210_priv *wil, const char *fmt, ...); wil 1111 drivers/net/wireless/ath/wil6210/wil6210.h void __wil_err_ratelimited(struct wil6210_priv *wil, const char *fmt, ...); wil 1113 drivers/net/wireless/ath/wil6210/wil6210.h void __wil_info(struct wil6210_priv *wil, const char *fmt, ...); wil 1115 drivers/net/wireless/ath/wil6210/wil6210.h void wil_dbg_ratelimited(const struct wil6210_priv *wil, const char *fmt, ...); wil 1116 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg(wil, fmt, arg...) do { \ wil 1117 drivers/net/wireless/ath/wil6210/wil6210.h netdev_dbg(wil->main_ndev, fmt, ##arg); \ wil 1118 drivers/net/wireless/ath/wil6210/wil6210.h wil_dbg_trace(wil, fmt, ##arg); \ wil 1121 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg_irq(wil, fmt, arg...) wil_dbg(wil, "DBG[ IRQ]" fmt, ##arg) wil 1122 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg_txrx(wil, fmt, arg...) wil_dbg(wil, "DBG[TXRX]" fmt, ##arg) wil 1123 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg_wmi(wil, fmt, arg...) wil_dbg(wil, "DBG[ WMI]" fmt, ##arg) wil 1124 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg_misc(wil, fmt, arg...) wil_dbg(wil, "DBG[MISC]" fmt, ##arg) wil 1125 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_dbg_pm(wil, fmt, arg...) wil_dbg(wil, "DBG[ PM ]" fmt, ##arg) wil 1126 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_err(wil, fmt, arg...) __wil_err(wil, "%s: " fmt, __func__, ##arg) wil 1127 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_info(wil, fmt, arg...) __wil_info(wil, "%s: " fmt, __func__, ##arg) wil 1128 drivers/net/wireless/ath/wil6210/wil6210.h #define wil_err_ratelimited(wil, fmt, arg...) \ wil 1129 drivers/net/wireless/ath/wil6210/wil6210.h __wil_err_ratelimited(wil, "%s: " fmt, __func__, ##arg) wil 1133 drivers/net/wireless/ath/wil6210/wil6210.h static inline u32 wil_r(struct wil6210_priv *wil, u32 reg) wil 1135 drivers/net/wireless/ath/wil6210/wil6210.h return readl(wil->csr + HOSTADDR(reg)); wil 1139 drivers/net/wireless/ath/wil6210/wil6210.h static inline void wil_w(struct wil6210_priv *wil, u32 reg, u32 val) wil 1141 drivers/net/wireless/ath/wil6210/wil6210.h writel(val, wil->csr + HOSTADDR(reg)); wil 1146 drivers/net/wireless/ath/wil6210/wil6210.h static inline void wil_s(struct wil6210_priv *wil, u32 reg, u32 val) wil 1148 drivers/net/wireless/ath/wil6210/wil6210.h wil_w(wil, reg, wil_r(wil, reg) | val); wil 1152 drivers/net/wireless/ath/wil6210/wil6210.h static inline void wil_c(struct wil6210_priv *wil, u32 reg, u32 val) wil 1154 drivers/net/wireless/ath/wil6210/wil6210.h wil_w(wil, reg, wil_r(wil, reg) & ~val); wil 1160 drivers/net/wireless/ath/wil6210/wil6210.h static inline bool wil_cid_valid(struct wil6210_priv *wil, int cid) wil 1162 drivers/net/wireless/ath/wil6210/wil6210.h return (cid >= 0 && cid < wil->max_assoc_sta); wil 1165 drivers/net/wireless/ath/wil6210/wil6210.h void wil_get_board_file(struct wil6210_priv *wil, char *buf, size_t len); wil 1209 drivers/net/wireless/ath/wil6210/wil6210.h int wil_mem_access_lock(struct wil6210_priv *wil); wil 1210 drivers/net/wireless/ath/wil6210/wil6210.h void wil_mem_access_unlock(struct wil6210_priv *wil); wil 1213 drivers/net/wireless/ath/wil6210/wil6210.h wil_vif_alloc(struct wil6210_priv *wil, const char *name, wil 1217 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_has_other_active_ifaces(struct wil6210_priv *wil, wil 1219 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_has_active_ifaces(struct wil6210_priv *wil, bool up, bool ok); wil 1220 drivers/net/wireless/ath/wil6210/wil6210.h void wil_if_free(struct wil6210_priv *wil); wil 1221 drivers/net/wireless/ath/wil6210/wil6210.h int wil_vif_add(struct wil6210_priv *wil, struct wil6210_vif *vif); wil 1222 drivers/net/wireless/ath/wil6210/wil6210.h int wil_if_add(struct wil6210_priv *wil); wil 1223 drivers/net/wireless/ath/wil6210/wil6210.h void wil_vif_remove(struct wil6210_priv *wil, u8 mid); wil 1224 drivers/net/wireless/ath/wil6210/wil6210.h void wil_if_remove(struct wil6210_priv *wil); wil 1225 drivers/net/wireless/ath/wil6210/wil6210.h int wil_priv_init(struct wil6210_priv *wil); wil 1226 drivers/net/wireless/ath/wil6210/wil6210.h void wil_priv_deinit(struct wil6210_priv *wil); wil 1227 drivers/net/wireless/ath/wil6210/wil6210.h int wil_ps_update(struct wil6210_priv *wil, wil 1229 drivers/net/wireless/ath/wil6210/wil6210.h int wil_reset(struct wil6210_priv *wil, bool no_fw); wil 1230 drivers/net/wireless/ath/wil6210/wil6210.h void wil_fw_error_recovery(struct wil6210_priv *wil); wil 1231 drivers/net/wireless/ath/wil6210/wil6210.h void wil_set_recovery_state(struct wil6210_priv *wil, int state); wil 1232 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_is_recovery_blocked(struct wil6210_priv *wil); wil 1233 drivers/net/wireless/ath/wil6210/wil6210.h int wil_up(struct wil6210_priv *wil); wil 1234 drivers/net/wireless/ath/wil6210/wil6210.h int __wil_up(struct wil6210_priv *wil); wil 1235 drivers/net/wireless/ath/wil6210/wil6210.h int wil_down(struct wil6210_priv *wil); wil 1236 drivers/net/wireless/ath/wil6210/wil6210.h int __wil_down(struct wil6210_priv *wil); wil 1237 drivers/net/wireless/ath/wil6210/wil6210.h void wil_refresh_fw_capabilities(struct wil6210_priv *wil); wil 1239 drivers/net/wireless/ath/wil6210/wil6210.h int wil_find_cid(struct wil6210_priv *wil, u8 mid, const u8 *mac); wil 1240 drivers/net/wireless/ath/wil6210/wil6210.h int wil_find_cid_by_idx(struct wil6210_priv *wil, u8 mid, int idx); wil 1244 drivers/net/wireless/ath/wil6210/wil6210.h void __iomem *wmi_buffer_block(struct wil6210_priv *wil, __le32 ptr, u32 size); wil 1245 drivers/net/wireless/ath/wil6210/wil6210.h void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr); wil 1246 drivers/net/wireless/ath/wil6210/wil6210.h void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr); wil 1247 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr, wil 1249 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_send(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len); wil 1250 drivers/net/wireless/ath/wil6210/wil6210.h void wmi_recv_cmd(struct wil6210_priv *wil); wil 1251 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_call(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len, wil 1254 drivers/net/wireless/ath/wil6210/wil6210.h void wmi_event_flush(struct wil6210_priv *wil); wil 1257 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_set_channel(struct wil6210_priv *wil, int channel); wil 1258 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_get_channel(struct wil6210_priv *wil, int *channel); wil 1264 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_echo(struct wil6210_priv *wil); wil 1266 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_rx_chain_add(struct wil6210_priv *wil, struct wil_ring *vring); wil 1268 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_rxon(struct wil6210_priv *wil, bool on); wil 1269 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_m, u32 *t_r); wil 1270 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_get_all_temperatures(struct wil6210_priv *wil, wil 1275 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_addba(struct wil6210_priv *wil, u8 mid, wil 1277 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_delba_tx(struct wil6210_priv *wil, u8 mid, u8 ringid, u16 reason); wil 1278 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_delba_rx(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, u16 reason); wil 1279 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_addba_rx_resp(struct wil6210_priv *wil, wil 1282 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_ps_dev_profile_cfg(struct wil6210_priv *wil, wil 1284 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_set_mgmt_retry(struct wil6210_priv *wil, u8 retry_short); wil 1285 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_get_mgmt_retry(struct wil6210_priv *wil, u8 *retry_short); wil 1287 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_port_allocate(struct wil6210_priv *wil, u8 mid, wil 1289 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_port_delete(struct wil6210_priv *wil, u8 mid); wil 1291 drivers/net/wireless/ath/wil6210/wil6210.h int wil_addba_rx_request(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, wil 1294 drivers/net/wireless/ath/wil6210/wil6210.h int wil_addba_tx_request(struct wil6210_priv *wil, u8 ringid, u16 wsize); wil 1296 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_clear_irq(struct wil6210_priv *wil); wil 1297 drivers/net/wireless/ath/wil6210/wil6210.h int wil6210_init_irq(struct wil6210_priv *wil, int irq); wil 1298 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_fini_irq(struct wil6210_priv *wil, int irq); wil 1299 drivers/net/wireless/ath/wil6210/wil6210.h void wil_mask_irq(struct wil6210_priv *wil); wil 1300 drivers/net/wireless/ath/wil6210/wil6210.h void wil_unmask_irq(struct wil6210_priv *wil); wil 1301 drivers/net/wireless/ath/wil6210/wil6210.h void wil_configure_interrupt_moderation(struct wil6210_priv *wil); wil 1302 drivers/net/wireless/ath/wil6210/wil6210.h void wil_disable_irq(struct wil6210_priv *wil); wil 1303 drivers/net/wireless/ath/wil6210/wil6210.h void wil_enable_irq(struct wil6210_priv *wil); wil 1304 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_mask_halp(struct wil6210_priv *wil); wil 1310 drivers/net/wireless/ath/wil6210/wil6210.h int wil_p2p_listen(struct wil6210_priv *wil, struct wireless_dev *wdev, wil 1317 drivers/net/wireless/ath/wil6210/wil6210.h void wil_p2p_stop_radio_operations(struct wil6210_priv *wil); wil 1329 drivers/net/wireless/ath/wil6210/wil6210.h void wil_cfg80211_ap_recovery(struct wil6210_priv *wil); wil 1331 drivers/net/wireless/ath/wil6210/wil6210.h struct wil6210_priv *wil, wil 1336 drivers/net/wireless/ath/wil6210/wil6210.h int wil6210_debugfs_init(struct wil6210_priv *wil); wil 1337 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_debugfs_remove(struct wil6210_priv *wil); wil 1339 drivers/net/wireless/ath/wil6210/wil6210.h static inline int wil6210_debugfs_init(struct wil6210_priv *wil) { return 0; } wil 1340 drivers/net/wireless/ath/wil6210/wil6210.h static inline void wil6210_debugfs_remove(struct wil6210_priv *wil) {} wil 1347 drivers/net/wireless/ath/wil6210/wil6210.h void wil_cfg80211_deinit(struct wil6210_priv *wil); wil 1348 drivers/net/wireless/ath/wil6210/wil6210.h void wil_p2p_wdev_free(struct wil6210_priv *wil); wil 1350 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_set_mac_address(struct wil6210_priv *wil, void *addr); wil 1354 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_led_cfg(struct wil6210_priv *wil, bool enable); wil 1357 drivers/net/wireless/ath/wil6210/wil6210.h void wil_abort_scan_all_vifs(struct wil6210_priv *wil, bool sync); wil 1358 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_bus_request(struct wil6210_priv *wil, u32 kbps); wil 1368 drivers/net/wireless/ath/wil6210/wil6210.h void wil_init_txrx_ops(struct wil6210_priv *wil); wil 1375 drivers/net/wireless/ath/wil6210/wil6210.h void wil_bcast_fini_all(struct wil6210_priv *wil); wil 1377 drivers/net/wireless/ath/wil6210/wil6210.h void wil_update_net_queues(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 1379 drivers/net/wireless/ath/wil6210/wil6210.h void wil_update_net_queues_bh(struct wil6210_priv *wil, struct wil6210_vif *vif, wil 1385 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_unmask_irq_tx(struct wil6210_priv *wil); wil 1386 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_unmask_irq_tx_edma(struct wil6210_priv *wil); wil 1389 drivers/net/wireless/ath/wil6210/wil6210.h void wil_rx_handle(struct wil6210_priv *wil, int *quota); wil 1390 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_unmask_irq_rx(struct wil6210_priv *wil); wil 1391 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_unmask_irq_rx_edma(struct wil6210_priv *wil); wil 1398 drivers/net/wireless/ath/wil6210/wil6210.h int wil_request_firmware(struct wil6210_priv *wil, const char *name, wil 1400 drivers/net/wireless/ath/wil6210/wil6210.h int wil_request_board(struct wil6210_priv *wil, const char *name); wil 1401 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_fw_verify_file_exists(struct wil6210_priv *wil, const char *name); wil 1403 drivers/net/wireless/ath/wil6210/wil6210.h void wil_pm_runtime_allow(struct wil6210_priv *wil); wil 1404 drivers/net/wireless/ath/wil6210/wil6210.h void wil_pm_runtime_forbid(struct wil6210_priv *wil); wil 1405 drivers/net/wireless/ath/wil6210/wil6210.h int wil_pm_runtime_get(struct wil6210_priv *wil); wil 1406 drivers/net/wireless/ath/wil6210/wil6210.h void wil_pm_runtime_put(struct wil6210_priv *wil); wil 1408 drivers/net/wireless/ath/wil6210/wil6210.h int wil_can_suspend(struct wil6210_priv *wil, bool is_runtime); wil 1409 drivers/net/wireless/ath/wil6210/wil6210.h int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on); wil 1410 drivers/net/wireless/ath/wil6210/wil6210.h int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on); wil 1411 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_is_wmi_idle(struct wil6210_priv *wil); wil 1412 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_resume(struct wil6210_priv *wil); wil 1413 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_suspend(struct wil6210_priv *wil); wil 1414 drivers/net/wireless/ath/wil6210/wil6210.h bool wil_is_tx_idle(struct wil6210_priv *wil); wil 1416 drivers/net/wireless/ath/wil6210/wil6210.h int wil_fw_copy_crash_dump(struct wil6210_priv *wil, void *dest, u32 size); wil 1417 drivers/net/wireless/ath/wil6210/wil6210.h void wil_fw_core_dump(struct wil6210_priv *wil); wil 1419 drivers/net/wireless/ath/wil6210/wil6210.h void wil_halp_vote(struct wil6210_priv *wil); wil 1420 drivers/net/wireless/ath/wil6210/wil6210.h void wil_halp_unvote(struct wil6210_priv *wil); wil 1421 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_set_halp(struct wil6210_priv *wil); wil 1422 drivers/net/wireless/ath/wil6210/wil6210.h void wil6210_clear_halp(struct wil6210_priv *wil); wil 1424 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_start_sched_scan(struct wil6210_priv *wil, wil 1426 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_stop_sched_scan(struct wil6210_priv *wil); wil 1430 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold); wil 1434 drivers/net/wireless/ath/wil6210/wil6210.h void wil_update_supported_bands(struct wil6210_priv *wil); wil 1439 drivers/net/wireless/ath/wil6210/wil6210.h int wil_wmi_tx_sring_cfg(struct wil6210_priv *wil, int ring_id); wil 1440 drivers/net/wireless/ath/wil6210/wil6210.h int wil_wmi_cfg_def_rx_offload(struct wil6210_priv *wil, wil 1442 drivers/net/wireless/ath/wil6210/wil6210.h int wil_wmi_rx_sring_add(struct wil6210_priv *wil, u16 ring_id); wil 1443 drivers/net/wireless/ath/wil6210/wil6210.h int wil_wmi_rx_desc_ring_add(struct wil6210_priv *wil, int status_ring_id); wil 1447 drivers/net/wireless/ath/wil6210/wil6210.h int wmi_addba_rx_resp_edma(struct wil6210_priv *wil, u8 mid, u8 cid, wil 1451 drivers/net/wireless/ath/wil6210/wil6210.h void update_supported_bands(struct wil6210_priv *wil); wil 1453 drivers/net/wireless/ath/wil6210/wil6210.h void wil_clear_fw_log_addr(struct wil6210_priv *wil); wil 21 drivers/net/wireless/ath/wil6210/wil_crash_dump.c static int wil_fw_get_crash_dump_bounds(struct wil6210_priv *wil, wil 58 drivers/net/wireless/ath/wil6210/wil_crash_dump.c int wil_fw_copy_crash_dump(struct wil6210_priv *wil, void *dest, u32 size) wil 65 drivers/net/wireless/ath/wil6210/wil_crash_dump.c if (wil_fw_get_crash_dump_bounds(wil, &dump_size, &host_min)) { wil 66 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_err(wil, "fail to obtain crash dump size\n"); wil 71 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_err(wil, "not enough space for dump. Need %d have %d\n", wil 76 drivers/net/wireless/ath/wil6210/wil_crash_dump.c rc = wil_mem_access_lock(wil); wil 87 drivers/net/wireless/ath/wil6210/wil_crash_dump.c data = (void * __force)wil->csr + HOSTADDR(map->host); wil 91 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_dbg_misc(wil, wil 98 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_mem_access_unlock(wil); wil 103 drivers/net/wireless/ath/wil6210/wil_crash_dump.c void wil_fw_core_dump(struct wil6210_priv *wil) wil 108 drivers/net/wireless/ath/wil6210/wil_crash_dump.c if (wil_fw_get_crash_dump_bounds(wil, &fw_dump_size, NULL)) { wil 109 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_err(wil, "fail to get fw dump size\n"); wil 117 drivers/net/wireless/ath/wil6210/wil_crash_dump.c if (wil_fw_copy_crash_dump(wil, fw_dump_data, fw_dump_size)) { wil 124 drivers/net/wireless/ath/wil6210/wil_crash_dump.c dev_coredumpv(wil_to_dev(wil), fw_dump_data, fw_dump_size, GFP_KERNEL); wil 125 drivers/net/wireless/ath/wil6210/wil_crash_dump.c wil_info(wil, "fw core dumped, size %d bytes\n", fw_dump_size); wil 288 drivers/net/wireless/ath/wil6210/wmi.c void __iomem *wmi_buffer_block(struct wil6210_priv *wil, __le32 ptr_, u32 size) wil 301 drivers/net/wireless/ath/wil6210/wmi.c if (off > wil->bar_size - 4) wil 303 drivers/net/wireless/ath/wil6210/wmi.c if (size && ((off + size > wil->bar_size) || (off + size < off))) wil 306 drivers/net/wireless/ath/wil6210/wmi.c return wil->csr + off; wil 309 drivers/net/wireless/ath/wil6210/wmi.c void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_) wil 311 drivers/net/wireless/ath/wil6210/wmi.c return wmi_buffer_block(wil, ptr_, 0); wil 317 drivers/net/wireless/ath/wil6210/wmi.c void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr) wil 328 drivers/net/wireless/ath/wil6210/wmi.c if (off > wil->bar_size - 4) wil 331 drivers/net/wireless/ath/wil6210/wmi.c return wil->csr + off; wil 334 drivers/net/wireless/ath/wil6210/wmi.c int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr, wil 337 drivers/net/wireless/ath/wil6210/wmi.c void __iomem *src = wmi_buffer(wil, ptr); wil 643 drivers/net/wireless/ath/wil6210/wmi.c static int __wmi_send(struct wil6210_priv *wil, u16 cmdid, u8 mid, wil 660 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_mbox_ring *r = &wil->mbox_ctl.tx; wil 664 drivers/net/wireless/ath/wil6210/wmi.c void __iomem *head = wmi_addr(wil, r->head); wil 669 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI size too large: %d bytes, max is %d\n", wil 676 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(wil_status_fwready, wil->status)) { wil 677 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI: cannot send command while FW not ready\n"); wil 682 drivers/net/wireless/ath/wil6210/wmi.c if ((test_bit(wil_status_suspending, wil->status) || wil 683 drivers/net/wireless/ath/wil6210/wmi.c test_bit(wil_status_suspended, wil->status) || wil 684 drivers/net/wireless/ath/wil6210/wmi.c test_bit(wil_status_resuming, wil->status)) && wil 687 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI: reject send_command during suspend\n"); wil 692 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI head is garbage: 0x%08x\n", r->head); wil 696 drivers/net/wireless/ath/wil6210/wmi.c wil_halp_vote(wil); wil 706 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI head busy\n"); wil 712 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Head 0x%08x -> 0x%08x\n", r->head, next_head); wil 715 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(wil_status_fwready, wil->status)) { wil 716 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI: cannot send command while FW not ready\n"); wil 720 drivers/net/wireless/ath/wil6210/wmi.c r->tail = wil_r(wil, RGF_MBOX + wil 727 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI ring full\n"); wil 731 drivers/net/wireless/ath/wil6210/wmi.c dst = wmi_buffer(wil, d_head.addr); wil 733 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "invalid WMI buffer: 0x%08x\n", wil 738 drivers/net/wireless/ath/wil6210/wmi.c cmd.hdr.seq = cpu_to_le16(++wil->wmi_seq); wil 740 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending %s (0x%04x) [%d] mid %d\n", wil 749 drivers/net/wireless/ath/wil6210/wmi.c wil_w(wil, r->head + offsetof(struct wil6210_mbox_ring_desc, sync), 1); wil 751 drivers/net/wireless/ath/wil6210/wmi.c wil_w(wil, RGF_MBOX + offsetof(struct wil6210_mbox_ctl, tx.head), wil 757 drivers/net/wireless/ath/wil6210/wmi.c wil_w(wil, RGF_USER_USER_ICR + offsetof(struct RGF_ICR, ICS), wil 761 drivers/net/wireless/ath/wil6210/wmi.c wil_halp_unvote(wil); wil 765 drivers/net/wireless/ath/wil6210/wmi.c int wmi_send(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len) wil 769 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->wmi_mutex); wil 770 drivers/net/wireless/ath/wil6210/wmi.c rc = __wmi_send(wil, cmdid, mid, buf, len); wil 771 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->wmi_mutex); wil 779 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 780 drivers/net/wireless/ath/wil6210/wmi.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 784 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "FW ver. %s(SW %d); MAC %pM; %d MID's\n", wil 785 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_version, le32_to_cpu(evt->sw_version), wil 787 drivers/net/wireless/ath/wil6210/wmi.c if (evt->numof_additional_mids + 1 < wil->max_vifs) { wil 788 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FW does not support enough MIDs (need %d)", wil 789 drivers/net/wireless/ath/wil6210/wmi.c wil->max_vifs - 1); wil 793 drivers/net/wireless/ath/wil6210/wmi.c strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); wil 796 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "rfc calibration result %d\n", wil 798 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_calib_result = evt->rfc_read_calib_result; wil 805 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "fw reported max assoc sta %d\n", wil 809 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 816 drivers/net/wireless/ath/wil6210/wmi.c wil->max_assoc_sta = min_t(uint, max_assoc_sta, fw_max_assoc_sta); wil 817 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "setting max assoc sta to %d\n", wil->max_assoc_sta); wil 819 drivers/net/wireless/ath/wil6210/wmi.c wil_set_recovery_state(wil, fw_recovery_idle); wil 820 drivers/net/wireless/ath/wil6210/wmi.c set_bit(wil_status_fwready, wil->status); wil 822 drivers/net/wireless/ath/wil6210/wmi.c complete(&wil->wmi_ready); wil 827 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 829 drivers/net/wireless/ath/wil6210/wmi.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 842 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "MGMT Rx: short event, len %d\n", len); wil 848 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 857 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) wil 864 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "MGMT Rx: channel %d MCS %d RSSI %d SQI %d%%\n", wil 867 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "status 0x%04x len %d fc 0x%04x\n", d_status, d_len, wil 869 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "qid %d mid %d cid %d\n", wil 875 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Frame on unsupported channel\n"); wil 893 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); wil 894 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "TSF : 0x%016llx\n", tsf); wil 895 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Beacon interval : %d\n", bi); wil 899 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); wil 905 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Added BSS %pM\n", wil 909 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); wil 912 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->vif_mutex); wil 913 drivers/net/wireless/ath/wil6210/wmi.c cfg80211_rx_mgmt(vif_to_radio_wdev(wil, vif), freq, signal, wil 915 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->vif_mutex); wil 933 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 935 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->vif_mutex); wil 944 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", status); wil 945 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", wil 950 drivers/net/wireless/ath/wil6210/wmi.c wil->radio_wdev = wil->main_ndev->ieee80211_ptr; wil 952 drivers/net/wireless/ath/wil6210/wmi.c wake_up_interruptible(&wil->wq); wil 954 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "Scheduling delayed listen\n"); wil 958 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "SCAN_COMPLETE while not scanning\n"); wil 960 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->vif_mutex); wil 965 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 980 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Connect event too short : %d bytes\n", len); wil 985 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 991 drivers/net/wireless/ath/wil6210/wmi.c if (evt->cid >= wil->max_assoc_sta) { wil 992 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Connect CID invalid : %d\n", evt->cid); wil 997 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "Connect %pM channel [%d] cid %d aid %d\n", wil 1020 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(wil_status_resetting, wil->status) || wil 1021 drivers/net/wireless/ath/wil6210/wmi.c !test_bit(wil_status_fwready, wil->status)) { wil 1022 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "status_resetting, cancel connect event, CID %d\n", wil 1028 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->mutex); wil 1033 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Not in connecting state\n"); wil 1034 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1040 drivers/net/wireless/ath/wil6210/wmi.c if (wil->sta[evt->cid].status != wil_sta_unused) { wil 1041 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "AP: Invalid status %d for CID %d\n", wil 1042 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].status, evt->cid); wil 1043 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1048 drivers/net/wireless/ath/wil6210/wmi.c ether_addr_copy(wil->sta[evt->cid].addr, evt->bssid); wil 1049 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].mid = vif->mid; wil 1050 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].status = wil_sta_conn_pending; wil 1054 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "config tx vring failed for CID %d, rc (%d)\n", wil 1056 drivers/net/wireless/ath/wil6210/wmi.c wmi_disconnect_sta(vif, wil->sta[evt->cid].addr, wil 1059 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "successful connection to CID %d\n", evt->cid); wil 1066 drivers/net/wireless/ath/wil6210/wmi.c wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); wil 1067 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "cfg80211_connect_result with failure\n"); wil 1074 drivers/net/wireless/ath/wil6210/wmi.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1100 drivers/net/wireless/ath/wil6210/wmi.c sinfo->generation = wil->sinfo_gen++; wil 1111 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "unhandled iftype %d for CID %d\n", wdev->iftype, wil 1116 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].status = wil_sta_connected; wil 1117 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].aid = evt->aid; wil 1119 drivers/net/wireless/ath/wil6210/wmi.c atomic_inc(&wil->connected_vifs); wil 1120 drivers/net/wireless/ath/wil6210/wmi.c wil_update_net_queues_bh(wil, vif, NULL, false); wil 1124 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].status = wil_sta_unused; wil 1125 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[evt->cid].mid = U8_MAX; wil 1128 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1134 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1138 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "Disconnect %pM reason [proto %d wmi %d]\n", wil 1141 drivers/net/wireless/ath/wil6210/wmi.c wil->sinfo_gen++; wil 1143 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(wil_status_resetting, wil->status) || wil 1144 drivers/net/wireless/ath/wil6210/wmi.c !test_bit(wil_status_fwready, wil->status)) { wil 1145 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "status_resetting, cancel disconnect event\n"); wil 1150 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->mutex); wil 1169 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1178 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1188 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "EAPOL len %d from %pM MID %d\n", eapol_len, wil 1191 drivers/net/wireless/ath/wil6210/wmi.c cid = wil_find_cid(wil, vif->mid, evt->src_mac); wil 1193 drivers/net/wireless/ath/wil6210/wmi.c stats = &wil->sta[cid].stats; wil 1196 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "EAPOL too large\n"); wil 1202 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Failed to allocate skb\n"); wil 1228 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1236 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Enable vring %d MID %d\n", vri, vif->mid); wil 1238 drivers/net/wireless/ath/wil6210/wmi.c if (vri >= ARRAY_SIZE(wil->ring_tx)) { wil 1239 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Enable for invalid vring %d\n", vri); wil 1248 drivers/net/wireless/ath/wil6210/wmi.c wil->ring_tx_data[vri].dot1x_open = true; wil 1252 drivers/net/wireless/ath/wil6210/wmi.c cid = wil->ring2cid_tid[vri][0]; wil 1253 drivers/net/wireless/ath/wil6210/wmi.c if (!wil_cid_valid(wil, cid)) { wil 1254 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "invalid cid %d for vring %d\n", cid, vri); wil 1262 drivers/net/wireless/ath/wil6210/wmi.c sta = &wil->sta[cid]; wil 1271 drivers/net/wireless/ath/wil6210/wmi.c wil_addba_tx_request(wil, vri, agg_wsize); wil 1277 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1281 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "BACK[%d] %s {%d} timeout %d AMSDU%s\n", wil 1288 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "invalid ring id %d\n", evt->ringid); wil 1298 drivers/net/wireless/ath/wil6210/wmi.c txdata = &wil->ring_tx_data[evt->ringid]; wil 1309 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1319 drivers/net/wireless/ath/wil6210/wmi.c wil_addba_rx_request(wil, vif->mid, cid, tid, evt->dialog_token, wil 1327 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1343 drivers/net/wireless/ath/wil6210/wmi.c if (!wil_cid_valid(wil, cid)) { wil 1344 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "DELBA: Invalid CID %d\n", cid); wil 1348 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "DELBA MID %d CID %d TID %d from %s reason %d\n", wil 1355 drivers/net/wireless/ath/wil6210/wmi.c for (i = 0; i < ARRAY_SIZE(wil->ring2cid_tid); i++) { wil 1356 drivers/net/wireless/ath/wil6210/wmi.c if (wil->ring2cid_tid[i][0] == cid && wil 1357 drivers/net/wireless/ath/wil6210/wmi.c wil->ring2cid_tid[i][1] == tid) { wil 1359 drivers/net/wireless/ath/wil6210/wmi.c &wil->ring_tx_data[i]; wil 1361 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "DELBA Tx vring %d\n", i); wil 1369 drivers/net/wireless/ath/wil6210/wmi.c if (i >= ARRAY_SIZE(wil->ring2cid_tid)) wil 1370 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "DELBA: unable to find Tx vring\n"); wil 1374 drivers/net/wireless/ath/wil6210/wmi.c sta = &wil->sta[cid]; wil 1380 drivers/net/wireless/ath/wil6210/wmi.c wil_tid_ampdu_rx_free(wil, r); wil 1388 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1390 drivers/net/wireless/ath/wil6210/wmi.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1407 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "sched scan result event too short, len %d\n", wil 1414 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 1422 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "sched scan result invalid frame, fc 0x%04x\n", wil 1430 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) wil 1435 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sched scan result: channel %d MCS %d RSSI %d\n", wil 1437 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "len %d qid %d mid %d cid %d\n", wil 1443 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Frame on unsupported channel\n"); wil 1452 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Added BSS %pM\n", rx_mgmt_frame->bssid); wil 1455 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); wil 1464 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1468 drivers/net/wireless/ath/wil6210/wmi.c if (cid < 0 || cid >= wil->max_assoc_sta) { wil 1469 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "invalid cid %d\n", cid); wil 1473 drivers/net/wireless/ath/wil6210/wmi.c sta = &wil->sta[cid]; wil 1480 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1482 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_stats_global.stats = *global; wil 1489 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1495 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "link stats wrong event size %zu\n", payload_size); wil 1505 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "link stats payload ended unexpectedly, size %zu < %zu\n", wil 1514 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "link stats invalid basic record size %zu < %zu\n", wil 1535 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "link stats invalid global record size %zu < %zu\n", wil 1540 drivers/net/wireless/ath/wil6210/wmi.c if (wil->fw_stats_global.ready) { wil 1542 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_stats_global.tsf = 0; wil 1543 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_stats_global.ready = 0; wil 1549 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_stats_global.tsf = tsf; wil 1550 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_stats_global.ready = 1; wil 1567 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1572 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "stats event way too short %d\n", len); wil 1577 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "stats event too short %d\n", len); wil 1590 drivers/net/wireless/ath/wil6210/wmi.c static int wil_find_cid_ringid_sta(struct wil6210_priv *wil, wil 1597 drivers/net/wireless/ath/wil6210/wmi.c int min_ring_id = wil_get_min_tx_ring_id(wil); wil 1603 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "invalid interface type %d\n", vif->wdev.iftype); wil 1612 drivers/net/wireless/ath/wil6210/wmi.c ring = &wil->ring_tx[i]; wil 1613 drivers/net/wireless/ath/wil6210/wmi.c txdata = &wil->ring_tx_data[i]; wil 1617 drivers/net/wireless/ath/wil6210/wmi.c lcid = wil->ring2cid_tid[i][0]; wil 1618 drivers/net/wireless/ath/wil6210/wmi.c if (lcid >= wil->max_assoc_sta) /* skip BCAST */ wil 1621 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "find sta -> ringid %d cid %d\n", i, lcid); wil 1627 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "find sta cid while no rings active?\n"); wil 1635 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1648 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: auth failed. status %d\n", data->status); wil 1653 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: auth event too short, len %d\n", len); wil 1659 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 1665 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(wil_vif_ft_roam, wil->status)) { wil 1666 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: Not in roaming state\n"); wil 1671 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: auth error. auth_transaction %d\n", wil 1677 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: auth error. auth_alg %d\n", wil 1682 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "FT: Auth to %pM successfully\n", data->mac_addr); wil 1687 drivers/net/wireless/ath/wil6210/wmi.c rc = wil_find_cid_ringid_sta(wil, vif, &cid, &ringid); wil 1689 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "No valid cid found\n"); wil 1695 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_del_cipher_key(vif, 0, wil->sta[cid].addr, wil 1698 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(PTK) failed\n"); wil 1701 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_del_cipher_key(vif, 0, wil->sta[cid].addr, wil 1704 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_DELETE_CIPHER_KEY_CMD(GTK) failed\n"); wil 1724 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1726 drivers/net/wireless/ath/wil6210/wmi.c struct wiphy *wiphy = wil_to_wiphy(wil); wil 1743 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "ft reassoc event too short, len %d\n", len); wil 1747 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Reasoc Status event: status=%d, aid=%d", wil 1749 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, " mac_addr=%pM, beacon_ie_len=%d", wil 1751 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, " reassoc_req_ie_len=%d, reassoc_resp_ie_len=%d", wil 1759 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 1767 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "ft reassoc failed. status %d\n", data->status); wil 1772 drivers/net/wireless/ath/wil6210/wmi.c rc = wil_find_cid_ringid_sta(wil, vif, &cid, &ringid); wil 1774 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "No valid cid found\n"); wil 1779 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "FT: Roam %pM channel [%d] cid %d aid %d\n", wil 1792 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: reassoc resp ie len is too short, len %d\n", wil 1802 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(wil_status_resetting, wil->status) || wil 1803 drivers/net/wireless/ath/wil6210/wmi.c !test_bit(wil_status_fwready, wil->status)) { wil 1804 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "FT: status_resetting, cancel reassoc event\n"); wil 1809 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->mutex); wil 1812 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 1816 drivers/net/wireless/ath/wil6210/wmi.c rc = wil->txrx_ops.tx_ring_modify(vif, ringid, cid, 0); wil 1818 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "modify TX for CID %d MID %d ring %d failed (%d)\n", wil 1820 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1825 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[cid].aid = data->aid; wil 1826 drivers/net/wireless/ath/wil6210/wmi.c wil->sta[cid].stats.ft_roams++; wil 1827 drivers/net/wireless/ath/wil6210/wmi.c ether_addr_copy(wil->sta[cid].addr, vif->bss->bssid); wil 1828 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->mutex); wil 1856 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 1858 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Ignore event 0x%04x len %d\n", id, len); wil 1891 drivers/net/wireless/ath/wil6210/wmi.c void wmi_recv_cmd(struct wil6210_priv *wil) wil 1895 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; wil 1903 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(wil_status_mbox_ready, wil->status)) { wil 1904 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Reset in progress. Cannot handle WMI event\n"); wil 1908 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(wil_status_suspended, wil->status)) { wil 1909 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "suspended. cannot handle WMI event\n"); wil 1918 drivers/net/wireless/ath/wil6210/wmi.c r->head = wil_r(wil, RGF_MBOX + wil 1923 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Mbox head %08x tail %08x\n", wil 1926 drivers/net/wireless/ath/wil6210/wmi.c wil_memcpy_fromio_32(&d_tail, wil->csr + HOSTADDR(r->tail), wil 1929 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Mbox evt not owned by FW?\n"); wil 1934 drivers/net/wireless/ath/wil6210/wmi.c if (0 != wmi_read_hdr(wil, d_tail.addr, &hdr)) { wil 1935 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Mbox evt at 0x%08x?\n", wil 1940 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n", wil 1945 drivers/net/wireless/ath/wil6210/wmi.c src = wmi_buffer(wil, d_tail.addr) + wil 1957 drivers/net/wireless/ath/wil6210/wmi.c wil_w(wil, r->tail + wil 1966 drivers/net/wireless/ath/wil6210/wmi.c if (test_bit(wil_status_resuming, wil->status)) { wil 1969 drivers/net/wireless/ath/wil6210/wmi.c wil->status); wil 1971 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 1975 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 1976 drivers/net/wireless/ath/wil6210/wmi.c if (wil->reply_id && wil->reply_id == id && wil 1977 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_mid == mid) { wil 1978 drivers/net/wireless/ath/wil6210/wmi.c if (wil->reply_buf) { wil 1979 drivers/net/wireless/ath/wil6210/wmi.c memcpy(wil->reply_buf, wmi, wil 1980 drivers/net/wireless/ath/wil6210/wmi.c min(len, wil->reply_size)); wil 1984 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 1986 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_rcvd = true; wil 1989 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 1991 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "recv %s (0x%04x) MID %d @%d msec\n", wil 2002 drivers/net/wireless/ath/wil6210/wmi.c wil_w(wil, RGF_MBOX + wil 2006 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "recv_cmd: Complete WMI 0x%04x\n", wil 2007 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_id); wil 2010 drivers/net/wireless/ath/wil6210/wmi.c complete(&wil->wmi_call); wil 2013 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 2014 drivers/net/wireless/ath/wil6210/wmi.c list_add_tail(&evt->list, &wil->pending_wmi_ev); wil 2015 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 2016 drivers/net/wireless/ath/wil6210/wmi.c q = queue_work(wil->wmi_wq, &wil->wmi_event_worker); wil 2017 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "queue_work -> %d\n", q); wil 2021 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "recv_cmd: -> %d events queued, %d completed\n", wil 2025 drivers/net/wireless/ath/wil6210/wmi.c int wmi_call(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len, wil 2032 drivers/net/wireless/ath/wil6210/wmi.c mutex_lock(&wil->wmi_mutex); wil 2034 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 2035 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_id = reply_id; wil 2036 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_mid = mid; wil 2037 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_buf = reply; wil 2038 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_size = reply_size; wil 2039 drivers/net/wireless/ath/wil6210/wmi.c reinit_completion(&wil->wmi_call); wil 2040 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 2042 drivers/net/wireless/ath/wil6210/wmi.c rc = __wmi_send(wil, cmdid, mid, buf, len); wil 2046 drivers/net/wireless/ath/wil6210/wmi.c remain = wait_for_completion_timeout(&wil->wmi_call, wil 2049 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "wmi_call(0x%04x->0x%04x) timeout %d msec\n", wil 2053 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 2060 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 2061 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_id = 0; wil 2062 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_mid = U8_MAX; wil 2063 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_buf = NULL; wil 2064 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_size = 0; wil 2065 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 2067 drivers/net/wireless/ath/wil6210/wmi.c mutex_unlock(&wil->wmi_mutex); wil 2072 drivers/net/wireless/ath/wil6210/wmi.c int wmi_echo(struct wil6210_priv *wil) wil 2074 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2079 drivers/net/wireless/ath/wil6210/wmi.c return wmi_call(wil, WMI_ECHO_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2084 drivers/net/wireless/ath/wil6210/wmi.c int wmi_set_mac_address(struct wil6210_priv *wil, void *addr) wil 2086 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2091 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Set MAC %pM\n", addr); wil 2093 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, vif->mid, wil 2097 drivers/net/wireless/ath/wil6210/wmi.c int wmi_led_cfg(struct wil6210_priv *wil, bool enable) wil 2099 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2129 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Invalid led id %d\n", led_id); wil 2134 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 2138 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_LED_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2145 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "led %d cfg failed with status %d\n", wil 2154 drivers/net/wireless/ath/wil6210/wmi.c int wmi_rbufcap_cfg(struct wil6210_priv *wil, bool enable, u16 threshold) wil 2156 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2170 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_RBUFCAP_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2177 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "RBUFCAP_CFG failed. status %d\n", wil 2188 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2197 drivers/net/wireless/ath/wil6210/wmi.c .pcp_max_assoc_sta = wil->max_assoc_sta, wil 2203 drivers/net/wireless/ath/wil6210/wmi.c .abft_len = wil->abft_len, wil 2217 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "unexpected max_assoc_sta %d\n", wil 2224 drivers/net/wireless/ath/wil6210/wmi.c wil->fw_capabilities)) { wil 2225 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "disable_ap_sme not supported by FW\n"); wil 2233 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_PCP_START_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2243 drivers/net/wireless/ath/wil6210/wmi.c wmi_led_cfg(wil, true); wil 2250 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2253 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_led_cfg(wil, false); wil 2257 drivers/net/wireless/ath/wil6210/wmi.c return wmi_call(wil, WMI_PCP_STOP_CMDID, vif->mid, NULL, 0, wil 2264 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2274 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_SET_SSID_CMDID, vif->mid, &cmd, sizeof(cmd)); wil 2279 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2289 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_GET_SSID_CMDID, vif->mid, NULL, 0, wil 2305 drivers/net/wireless/ath/wil6210/wmi.c int wmi_set_channel(struct wil6210_priv *wil, int channel) wil 2307 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2312 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, vif->mid, wil 2316 drivers/net/wireless/ath/wil6210/wmi.c int wmi_get_channel(struct wil6210_priv *wil, int *channel) wil 2318 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2327 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_GET_PCP_CHANNEL_CMDID, vif->mid, NULL, 0, wil 2343 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2357 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending WMI_P2P_CFG_CMDID\n"); wil 2359 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_P2P_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2362 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "P2P_CFG failed. status %d\n", reply.evt.status); wil 2371 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2380 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending WMI_START_LISTEN_CMDID\n"); wil 2382 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0, wil 2385 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "device failed to start listen. status %d\n", wil 2395 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2404 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending WMI_START_SEARCH_CMDID\n"); wil 2406 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_START_SEARCH_CMDID, vif->mid, NULL, 0, wil 2409 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "device failed to start search. status %d\n", wil 2419 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2422 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending WMI_DISCOVERY_STOP_CMDID\n"); wil 2424 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0, wil 2429 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Failed to stop discovery\n"); wil 2437 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2445 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, vif->mid, wil 2453 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2474 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, vif->mid, wil 2480 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2510 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_send(wil, WMI_SET_APPIE_CMDID, vif->mid, cmd, len); wil 2516 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "set_ie(%d %s) failed : %d\n", type, name, rc); wil 2524 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2534 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "wraparound. ie len %d\n", ie_len); wil 2547 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_send(wil, WMI_UPDATE_FT_IES_CMDID, vif->mid, cmd, len); wil 2552 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "update ft ies failed : %d\n", rc); wil 2565 drivers/net/wireless/ath/wil6210/wmi.c int wmi_rxon(struct wil6210_priv *wil, bool on) wil 2567 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2576 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "(%s)\n", on ? "on" : "off"); wil 2579 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0, wil 2586 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0, wil 2594 drivers/net/wireless/ath/wil6210/wmi.c int wmi_rx_chain_add(struct wil6210_priv *wil, struct wil_ring *vring) wil 2596 drivers/net/wireless/ath/wil6210/wmi.c struct net_device *ndev = wil->main_ndev; wil 2603 drivers/net/wireless/ath/wil6210/wmi.c wil_mtu2macbuf(wil->rx_buf_len)), wil 2621 drivers/net/wireless/ath/wil6210/wmi.c struct ieee80211_channel *ch = wil->monitor_chandef.chan; wil 2629 drivers/net/wireless/ath/wil6210/wmi.c cpu_to_le32((wil->monitor_flags & MONITOR_FLAG_CONTROL) wil 2644 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2654 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "Rx init: status %d tail 0x%08x\n", wil 2660 drivers/net/wireless/ath/wil6210/wmi.c int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_bb, u32 *t_rf) wil 2662 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2676 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, vif->mid, &cmd, sizeof(cmd), wil 2690 drivers/net/wireless/ath/wil6210/wmi.c int wmi_get_all_temperatures(struct wil6210_priv *wil, wil 2694 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2707 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Invalid sense_all_evt value\n"); wil 2713 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TEMP_SENSE_ALL_CMDID, vif->mid, &cmd, wil 2720 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Failed geting TEMP_SENSE_ALL\n"); wil 2731 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 2744 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "disconnect_sta: (%pM, reason %d)\n", mac, reason); wil 2750 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_DEL_STA_CMDID, vif->mid, &del_sta_cmd, wil 2755 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_DISCONNECT_STA_CMDID, vif->mid, wil 2762 drivers/net/wireless/ath/wil6210/wmi.c wil_fw_error_recovery(wil); wil 2765 drivers/net/wireless/ath/wil6210/wmi.c wil->sinfo_gen++; wil 2770 drivers/net/wireless/ath/wil6210/wmi.c int wmi_addba(struct wil6210_priv *wil, u8 mid, wil 2773 drivers/net/wireless/ath/wil6210/wmi.c u8 amsdu = wil->use_enhanced_dma_hw && wil->use_rx_hw_reordering && wil 2774 drivers/net/wireless/ath/wil6210/wmi.c test_bit(WMI_FW_CAPABILITY_AMSDU, wil->fw_capabilities) && wil 2775 drivers/net/wireless/ath/wil6210/wmi.c wil->amsdu_en; wil 2783 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "addba: (ring %d size %d timeout %d amsdu %d)\n", wil 2786 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_RING_BA_EN_CMDID, mid, &cmd, sizeof(cmd)); wil 2789 drivers/net/wireless/ath/wil6210/wmi.c int wmi_delba_tx(struct wil6210_priv *wil, u8 mid, u8 ringid, u16 reason) wil 2796 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "delba_tx: (ring %d reason %d)\n", ringid, reason); wil 2798 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_RING_BA_DIS_CMDID, mid, &cmd, sizeof(cmd)); wil 2801 drivers/net/wireless/ath/wil6210/wmi.c int wmi_delba_rx(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, u16 reason) wil 2815 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "delba_rx: (CID %d TID %d reason %d)\n", cid, wil 2818 drivers/net/wireless/ath/wil6210/wmi.c return wmi_send(wil, WMI_RCP_DELBA_CMDID, mid, &cmd, sizeof(cmd)); wil 2821 drivers/net/wireless/ath/wil6210/wmi.c int wmi_addba_rx_resp(struct wil6210_priv *wil, wil 2853 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 2858 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_CMDID, mid, &cmd, sizeof(cmd), wil 2865 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "ADDBA response failed with status %d\n", wil 2873 drivers/net/wireless/ath/wil6210/wmi.c int wmi_addba_rx_resp_edma(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, wil 2901 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, wil 2906 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_EDMA_CMDID, mid, &cmd, wil 2913 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "ADDBA response failed with status %d\n", wil 2921 drivers/net/wireless/ath/wil6210/wmi.c int wmi_ps_dev_profile_cfg(struct wil6210_priv *wil, wil 2924 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2937 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Setting ps dev profile %d\n", ps_profile); wil 2939 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_PS_DEV_PROFILE_CFG_CMDID, vif->mid, wil 2949 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "ps dev profile cfg failed with status %d\n", wil 2957 drivers/net/wireless/ath/wil6210/wmi.c int wmi_set_mgmt_retry(struct wil6210_priv *wil, u8 retry_short) wil 2959 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 2971 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Setting mgmt retry short %d\n", retry_short); wil 2973 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT, wil->fw_capabilities)) wil 2976 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_SET_MGMT_RETRY_LIMIT_CMDID, vif->mid, wil 2984 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "set mgmt retry limit failed with status %d\n", wil 2992 drivers/net/wireless/ath/wil6210/wmi.c int wmi_get_mgmt_retry(struct wil6210_priv *wil, u8 *retry_short) wil 2994 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3001 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "getting mgmt retry short\n"); wil 3003 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT, wil->fw_capabilities)) wil 3007 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_GET_MGMT_RETRY_LIMIT_CMDID, vif->mid, NULL, 0, wil 3021 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3024 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "sending WMI_ABORT_SCAN_CMDID\n"); wil 3026 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_send(wil, WMI_ABORT_SCAN_CMDID, vif->mid, NULL, 0); wil 3028 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Failed to abort scan (%d)\n", rc); wil 3035 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3041 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "new sta %pM, aid %d\n", mac, aid); wil 3045 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_send(wil, WMI_NEW_STA_CMDID, vif->mid, &cmd, sizeof(cmd)); wil 3047 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Failed to send new sta (%d)\n", rc); wil 3052 drivers/net/wireless/ath/wil6210/wmi.c void wmi_event_flush(struct wil6210_priv *wil) wil 3057 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "event_flush\n"); wil 3059 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 3061 drivers/net/wireless/ath/wil6210/wmi.c list_for_each_entry_safe(evt, t, &wil->pending_wmi_ev, list) { wil 3066 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 3083 drivers/net/wireless/ath/wil6210/wmi.c int wmi_suspend(struct wil6210_priv *wil) wil 3085 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3088 drivers/net/wireless/ath/wil6210/wmi.c .wakeup_trigger = wil->wakeup_trigger, wil 3099 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_rcvd = false; wil 3100 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_comp = false; wil 3102 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TRAFFIC_SUSPEND_CMDID, vif->mid, wil 3107 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "wmi_call for suspend req failed, rc=%d\n", rc); wil 3110 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_stats.rejected_by_device++; wil 3112 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_stats.rejected_by_host++; wil 3116 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "waiting for suspend_response_completed\n"); wil 3118 drivers/net/wireless/ath/wil6210/wmi.c rc = wait_event_interruptible_timeout(wil->wq, wil 3119 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_comp, wil 3122 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "TO waiting for suspend_response_completed\n"); wil 3123 drivers/net/wireless/ath/wil6210/wmi.c if (wil->suspend_resp_rcvd) wil 3125 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_stats.rejected_by_host++; wil 3127 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_stats.rejected_by_device++; wil 3132 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "suspend_response_completed rcvd\n"); wil 3134 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_pm(wil, "device rejected the suspend, %s\n", wil 3136 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_stats.rejected_by_device++; wil 3141 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_rcvd = false; wil 3142 drivers/net/wireless/ath/wil6210/wmi.c wil->suspend_resp_comp = false; wil 3172 drivers/net/wireless/ath/wil6210/wmi.c int wmi_resume(struct wil6210_priv *wil) wil 3174 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3186 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TRAFFIC_RESUME_CMDID, vif->mid, NULL, 0, wil 3193 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_pm(wil, "device resume %s, resume triggers:%s (0x%x)\n", wil 3200 drivers/net/wireless/ath/wil6210/wmi.c int wmi_port_allocate(struct wil6210_priv *wil, u8 mid, wil 3214 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "port allocate, mid %d iftype %d, mac %pM\n", wil 3233 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "unsupported iftype: %d\n", iftype); wil 3237 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_PORT_ALLOCATE_CMDID, mid, wil 3242 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "failed to allocate port, status %d\n", rc); wil 3246 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_PORT_ALLOCATE returned status %d\n", wil 3254 drivers/net/wireless/ath/wil6210/wmi.c int wmi_port_delete(struct wil6210_priv *wil, u8 mid) wil 3267 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "port delete, mid %d\n", mid); wil 3269 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_PORT_DELETE_CMDID, mid, wil 3274 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "failed to delete port, status %d\n", rc); wil 3278 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_PORT_DELETE returned status %d\n", wil 3301 drivers/net/wireless/ath/wil6210/wmi.c static void wmi_event_handle(struct wil6210_priv *wil, wil 3314 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "Handle %s (0x%04x) (reply_id 0x%04x,%d)\n", wil 3315 drivers/net/wireless/ath/wil6210/wmi.c eventid2name(id), id, wil->reply_id, wil 3316 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_mid); wil 3320 drivers/net/wireless/ath/wil6210/wmi.c if (mid >= GET_MAX_VIFS(wil)) { wil 3321 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "invalid mid %d, event skipped\n", wil 3325 drivers/net/wireless/ath/wil6210/wmi.c vif = wil->vifs[mid]; wil 3327 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "event for empty VIF(%d), skipped\n", wil 3333 drivers/net/wireless/ath/wil6210/wmi.c if (wil->reply_id && wil->reply_id == id && wil 3334 drivers/net/wireless/ath/wil6210/wmi.c wil->reply_mid == mid) { wil 3335 drivers/net/wireless/ath/wil6210/wmi.c if (wil->reply_buf) { wil 3342 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, wil 3350 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "event_handle: Complete WMI 0x%04x\n", wil 3352 drivers/net/wireless/ath/wil6210/wmi.c complete(&wil->wmi_call); wil 3359 drivers/net/wireless/ath/wil6210/wmi.c wil_info(wil, "Unhandled event 0x%04x\n", id); wil 3362 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Unknown event type\n"); wil 3371 drivers/net/wireless/ath/wil6210/wmi.c static struct list_head *next_wmi_ev(struct wil6210_priv *wil) wil 3376 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 3378 drivers/net/wireless/ath/wil6210/wmi.c if (!list_empty(&wil->pending_wmi_ev)) { wil 3379 drivers/net/wireless/ath/wil6210/wmi.c ret = wil->pending_wmi_ev.next; wil 3383 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 3393 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = container_of(work, struct wil6210_priv, wil 3398 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "event_worker: Start\n"); wil 3399 drivers/net/wireless/ath/wil6210/wmi.c while ((lh = next_wmi_ev(wil)) != NULL) { wil 3401 drivers/net/wireless/ath/wil6210/wmi.c wmi_event_handle(wil, &evt->event.hdr); wil 3404 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "event_worker: Finished\n"); wil 3407 drivers/net/wireless/ath/wil6210/wmi.c bool wil_is_wmi_idle(struct wil6210_priv *wil) wil 3410 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; wil 3413 drivers/net/wireless/ath/wil6210/wmi.c spin_lock_irqsave(&wil->wmi_ev_lock, flags); wil 3416 drivers/net/wireless/ath/wil6210/wmi.c if (!list_empty(&wil->pending_wmi_ev)) { wil 3417 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_pm(wil, "Pending WMI events in queue\n"); wil 3422 drivers/net/wireless/ath/wil6210/wmi.c if (wil->reply_id) { wil 3423 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_pm(wil, "Pending WMI call\n"); wil 3428 drivers/net/wireless/ath/wil6210/wmi.c r->head = wil_r(wil, RGF_MBOX + wil 3431 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_pm(wil, "Pending WMI mbox events\n"); wil 3436 drivers/net/wireless/ath/wil6210/wmi.c spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); wil 3441 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_ssids(struct wil6210_priv *wil, wil 3450 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "too many match sets (%d), use first %d\n", wil 3479 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_channels(struct wil6210_priv *wil, wil 3487 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "too many channels (%d), use first %d\n", wil 3501 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_plans(struct wil6210_priv *wil, wil 3509 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "too many plans (%d), use first %d\n", wil 3524 drivers/net/wireless/ath/wil6210/wmi.c int wmi_start_sched_scan(struct wil6210_priv *wil, wil 3527 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3540 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(WMI_FW_CAPABILITY_PNO, wil->fw_capabilities)) wil 3547 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_ssids(wil, &cmd, request->ssids, request->n_ssids, wil 3549 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_channels(wil, &cmd, wil 3551 drivers/net/wireless/ath/wil6210/wmi.c wmi_sched_scan_set_plans(wil, &cmd, wil 3554 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_START_SCHED_SCAN_CMDID, vif->mid, wil 3562 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "start sched scan failed, result %d\n", wil 3570 drivers/net/wireless/ath/wil6210/wmi.c int wmi_stop_sched_scan(struct wil6210_priv *wil) wil 3572 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3581 drivers/net/wireless/ath/wil6210/wmi.c if (!test_bit(WMI_FW_CAPABILITY_PNO, wil->fw_capabilities)) wil 3584 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_STOP_SCHED_SCAN_CMDID, vif->mid, NULL, 0, wil 3591 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "stop sched scan failed, result %d\n", wil 3602 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3613 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_misc(wil, "mgmt_tx mid %d\n", vif->mid); wil 3622 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "mgmt_tx invalid len %zu\n", len); wil 3634 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_SW_TX_REQ_CMDID, vif->mid, cmd, total, wil 3637 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "mgmt_tx failed with status %d\n", wil 3651 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3662 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "mgmt_tx_ext mid %d channel %d duration %d\n", wil 3668 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "short frame. len %zu\n", len); wil 3674 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "mgmt_tx_ext invalid len %zu\n", len); wil 3688 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_SW_TX_REQ_EXT_CMDID, vif->mid, cmd, total, wil 3691 drivers/net/wireless/ath/wil6210/wmi.c wil_dbg_wmi(wil, "mgmt_tx_ext failed with status %d\n", wil 3701 drivers/net/wireless/ath/wil6210/wmi.c int wil_wmi_tx_sring_cfg(struct wil6210_priv *wil, int ring_id) wil 3704 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); wil 3705 drivers/net/wireless/ath/wil6210/wmi.c struct wil_status_ring *sring = &wil->srings[ring_id]; wil 3722 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TX_STATUS_RING_ADD_CMDID, vif->mid, &cmd, wil 3726 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "TX_STATUS_RING_ADD_CMD failed, rc %d\n", rc); wil 3731 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "TX_STATUS_RING_ADD_CMD failed, status %d\n", wil 3741 drivers/net/wireless/ath/wil6210/wmi.c int wil_wmi_cfg_def_rx_offload(struct wil6210_priv *wil, u16 max_rx_pl_per_desc) wil 3743 drivers/net/wireless/ath/wil6210/wmi.c struct net_device *ndev = wil->main_ndev; wil 3760 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_CFG_DEF_RX_OFFLOAD_CMDID, vif->mid, &cmd, wil 3764 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_CFG_DEF_RX_OFFLOAD_CMD failed, rc %d\n", rc); wil 3769 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_CFG_DEF_RX_OFFLOAD_CMD failed, status %d\n", wil 3777 drivers/net/wireless/ath/wil6210/wmi.c int wil_wmi_rx_sring_add(struct wil6210_priv *wil, u16 ring_id) wil 3779 drivers/net/wireless/ath/wil6210/wmi.c struct net_device *ndev = wil->main_ndev; wil 3781 drivers/net/wireless/ath/wil6210/wmi.c struct wil_status_ring *sring = &wil->srings[ring_id]; wil 3788 drivers/net/wireless/ath/wil6210/wmi.c .rx_msg_type = wil->use_compressed_rx_status ? wil 3801 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_RX_STATUS_RING_ADD_CMDID, vif->mid, &cmd, wil 3805 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "RX_STATUS_RING_ADD_CMD failed, rc %d\n", rc); wil 3810 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "RX_STATUS_RING_ADD_CMD failed, status %d\n", wil 3820 drivers/net/wireless/ath/wil6210/wmi.c int wil_wmi_rx_desc_ring_add(struct wil6210_priv *wil, int status_ring_id) wil 3822 drivers/net/wireless/ath/wil6210/wmi.c struct net_device *ndev = wil->main_ndev; wil 3824 drivers/net/wireless/ath/wil6210/wmi.c struct wil_ring *ring = &wil->ring_rx; wil 3843 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_RX_DESC_RING_ADD_CMDID, vif->mid, &cmd, wil 3847 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_RX_DESC_RING_ADD_CMD failed, rc %d\n", rc); wil 3852 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_RX_DESC_RING_ADD_CMD failed, status %d\n", wil 3865 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3866 drivers/net/wireless/ath/wil6210/wmi.c int sring_id = wil->tx_sring_idx; /* there is only one TX sring */ wil 3868 drivers/net/wireless/ath/wil6210/wmi.c struct wil_ring *ring = &wil->ring_tx[ring_id]; wil 3869 drivers/net/wireless/ath/wil6210/wmi.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; wil 3893 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_TX_DESC_RING_ADD_CMDID, vif->mid, &cmd, wil 3897 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_TX_DESC_RING_ADD_CMD failed, rc %d\n", rc); wil 3902 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_TX_DESC_RING_ADD_CMD failed, status %d\n", wil 3918 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3919 drivers/net/wireless/ath/wil6210/wmi.c struct wil_ring *ring = &wil->ring_tx[ring_id]; wil 3927 drivers/net/wireless/ath/wil6210/wmi.c .status_ring_id = wil->tx_sring_idx, wil 3936 drivers/net/wireless/ath/wil6210/wmi.c struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; wil 3939 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_BCAST_DESC_RING_ADD_CMDID, vif->mid, &cmd, wil 3943 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_BCAST_DESC_RING_ADD_CMD failed, rc %d\n", rc); wil 3948 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Broadcast Tx config failed, status %d\n", wil 3964 drivers/net/wireless/ath/wil6210/wmi.c struct wil6210_priv *wil = vif_to_wil(vif); wil 3979 drivers/net/wireless/ath/wil6210/wmi.c rc = wmi_call(wil, WMI_LINK_STATS_CMDID, vif->mid, &cmd, sizeof(cmd), wil 3983 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "WMI_LINK_STATS_CMDID failed, rc %d\n", rc); wil 3988 drivers/net/wireless/ath/wil6210/wmi.c wil_err(wil, "Link statistics config failed, status %d\n",