Lines Matching refs:wil

42 static void wil_print_desc_edma(struct seq_file *s, struct wil6210_priv *wil,  in wil_print_desc_edma()  argument
55 if (wil->rx_buff_mgmt.buff_arr && in wil_print_desc_edma()
56 wil_val_in_range(buff_id, 0, wil->rx_buff_mgmt.size)) in wil_print_desc_edma()
57 has_skb = wil->rx_buff_mgmt.buff_arr[buff_id].skb; in wil_print_desc_edma()
74 static void wil_print_ring(struct seq_file *s, struct wil6210_priv *wil, in wil_print_ring() argument
85 if (wil->use_enhanced_dma_hw && ring->is_rx) in wil_print_ring()
90 if (wil->use_enhanced_dma_hw) { in wil_print_ring()
92 WIL_RX_DESC_RING_ID : ring - wil->ring_tx; in wil_print_ring()
97 x = wmi_addr(wil, RGF_DMA_SCM_SUBQ_CONS + 4 * (ring_id / 2)); in wil_print_ring()
104 x = wmi_addr(wil, ring->hwtail); in wil_print_ring()
118 if (wil->use_enhanced_dma_hw) { in wil_print_ring()
119 wil_print_desc_edma(s, wil, ring, _s, _h, i); in wil_print_ring()
135 struct wil6210_priv *wil = s->private; in ring_show() local
137 wil_print_ring(s, wil, "rx", &wil->ring_rx, 'S', '_'); in ring_show()
139 for (i = 0; i < ARRAY_SIZE(wil->ring_tx); i++) { in ring_show()
140 struct wil_ring *ring = &wil->ring_tx[i]; in ring_show()
141 struct wil_ring_tx_data *txdata = &wil->ring_tx_data[i]; in ring_show()
144 int cid = wil->ring2cid_tid[i][0]; in ring_show()
145 int tid = wil->ring2cid_tid[i][1]; in ring_show()
170 if (cid < wil->max_assoc_sta) in ring_show()
173 wil->sta[cid].addr, cid, tid, in ring_show()
185 wil_print_ring(s, wil, name, ring, '_', 'H'); in ring_show()
193 static void wil_print_sring(struct seq_file *s, struct wil6210_priv *wil, in wil_print_sring() argument
197 int sring_idx = sring - wil->srings; in wil_print_sring()
207 if (wil->use_enhanced_dma_hw) { in wil_print_sring()
212 x = wmi_addr(wil, RGF_DMA_SCM_COMPQ_PROD + 4 * (sring_idx / 2)); in wil_print_sring()
219 x = wmi_addr(wil, sring->hwtail); in wil_print_sring()
253 struct wil6210_priv *wil = s->private; in srings_show() local
257 if (wil->srings[i].va) in srings_show()
258 wil_print_sring(s, wil, &wil->srings[i]); in srings_show()
273 struct wil6210_priv *wil = s->private; in wil_print_mbox_ring() local
278 wil_halp_vote(wil); in wil_print_mbox_ring()
280 if (wil_mem_access_lock(wil)) { in wil_print_mbox_ring()
281 wil_halp_unvote(wil); in wil_print_mbox_ring()
306 if (!wmi_addr(wil, r.base) || in wil_print_mbox_ring()
307 !wmi_addr(wil, r.tail) || in wil_print_mbox_ring()
308 !wmi_addr(wil, r.head)) { in wil_print_mbox_ring()
317 void __iomem *x = wil->csr + HOSTADDR(r.base) + delta; in wil_print_mbox_ring()
326 if (0 == wmi_read_hdr(wil, d.addr, &hdr)) { in wil_print_mbox_ring()
334 void __iomem *src = wmi_buffer(wil, d.addr) + in wil_print_mbox_ring()
350 wil_mem_access_unlock(wil); in wil_print_mbox_ring()
351 wil_halp_unvote(wil); in wil_print_mbox_ring()
356 struct wil6210_priv *wil = s->private; in mbox_show() local
359 ret = wil_pm_runtime_get(wil); in mbox_show()
363 wil_print_mbox_ring(s, "tx", wil->csr + HOST_MBOX + in mbox_show()
365 wil_print_mbox_ring(s, "rx", wil->csr + HOST_MBOX + in mbox_show()
368 wil_pm_runtime_put(wil); in mbox_show()
378 struct wil6210_priv *wil = d->wil; in wil_debugfs_iomem_x32_set() local
381 ret = wil_pm_runtime_get(wil); in wil_debugfs_iomem_x32_set()
389 wil_pm_runtime_put(wil); in wil_debugfs_iomem_x32_set()
398 struct wil6210_priv *wil = d->wil; in wil_debugfs_iomem_x32_get() local
401 ret = wil_pm_runtime_get(wil); in wil_debugfs_iomem_x32_get()
407 wil_pm_runtime_put(wil); in wil_debugfs_iomem_x32_get()
417 struct wil6210_priv *wil) in wil_debugfs_create_iomem_x32() argument
419 struct wil_debugfs_iomem_data *data = &wil->dbg_data.data_arr[ in wil_debugfs_create_iomem_x32()
420 wil->dbg_data.iomem_data_count]; in wil_debugfs_create_iomem_x32()
422 data->wil = wil; in wil_debugfs_create_iomem_x32()
426 wil->dbg_data.iomem_data_count++; in wil_debugfs_create_iomem_x32()
453 static void wil6210_debugfs_init_offset(struct wil6210_priv *wil, in wil6210_debugfs_init_offset() argument
477 wil); in wil6210_debugfs_init_offset()
498 static void wil6210_debugfs_create_ISR(struct wil6210_priv *wil, in wil6210_debugfs_create_ISR() argument
504 wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr + off, in wil6210_debugfs_create_ISR()
515 static void wil6210_debugfs_create_pseudo_ISR(struct wil6210_priv *wil, in wil6210_debugfs_create_pseudo_ISR() argument
520 wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr, in wil6210_debugfs_create_pseudo_ISR()
563 static int wil6210_debugfs_create_ITR_CNT(struct wil6210_priv *wil, in wil6210_debugfs_create_ITR_CNT() argument
573 wil6210_debugfs_init_offset(wil, d, (void * __force)wil->csr, in wil6210_debugfs_create_ITR_CNT()
576 wil6210_debugfs_init_offset(wil, dtx, (void * __force)wil->csr, in wil6210_debugfs_create_ITR_CNT()
579 wil6210_debugfs_init_offset(wil, drx, (void * __force)wil->csr, in wil6210_debugfs_create_ITR_CNT()
586 struct wil6210_priv *wil = s->private; in memread_show() local
590 ret = wil_pm_runtime_get(wil); in memread_show()
594 ret = wil_mem_access_lock(wil); in memread_show()
596 wil_pm_runtime_put(wil); in memread_show()
600 a = wmi_buffer(wil, cpu_to_le32(mem_addr)); in memread_show()
607 wil_mem_access_unlock(wil); in memread_show()
608 wil_pm_runtime_put(wil); in memread_show()
619 struct wil6210_priv *wil = wil_blob->wil; in wil_read_file_ioblob() local
646 rc = wil_pm_runtime_get(wil); in wil_read_file_ioblob()
652 rc = wil_mem_access_lock(wil); in wil_read_file_ioblob()
655 wil_pm_runtime_put(wil); in wil_read_file_ioblob()
664 wil_mem_access_unlock(wil); in wil_read_file_ioblob()
665 wil_pm_runtime_put(wil); in wil_read_file_ioblob()
696 struct wil6210_priv *wil = file->private_data; in wil_write_file_rxon() local
711 wil_err(wil, "Invalid channel %ld\n", channel); in wil_write_file_rxon()
717 rc = wmi_set_channel(wil, (int)channel); in wil_write_file_rxon()
722 rc = wmi_rxon(wil, on); in wil_write_file_rxon()
738 struct wil6210_priv *wil = file->private_data; in wil_write_file_rbufcap() local
744 wil_err(wil, "Invalid argument\n"); in wil_write_file_rbufcap()
750 wil_info(wil, "%s RBUFCAP, descriptors threshold - %d\n", in wil_write_file_rbufcap()
753 if (!wil->ring_rx.va || val > wil->ring_rx.size) { in wil_write_file_rbufcap()
754 wil_err(wil, "Invalid descriptors threshold, %d\n", val); in wil_write_file_rbufcap()
758 rc = wmi_rbufcap_cfg(wil, val < 0 ? 0 : 1, val < 0 ? 0 : val); in wil_write_file_rbufcap()
760 wil_err(wil, "RBUFCAP config failed: %d\n", rc); in wil_write_file_rbufcap()
780 struct wil6210_priv *wil = file->private_data; in wil_write_back() local
809 wil_err(wil, "BACK: invalid ring id %d\n", p1); in wil_write_back()
812 txdata = &wil->ring_tx_data[p1]; in wil_write_back()
815 wil_err(wil, "BACK: add require at least 2 params\n"); in wil_write_back()
820 wmi_addba(wil, txdata->mid, p1, p2, p3); in wil_write_back()
824 wmi_delba_tx(wil, txdata->mid, p1, p2); in wil_write_back()
830 wil_err(wil, in wil_write_back()
834 if (p1 < 0 || p1 >= wil->max_assoc_sta) { in wil_write_back()
835 wil_err(wil, "BACK: invalid CID %d\n", p1); in wil_write_back()
840 sta = &wil->sta[p1]; in wil_write_back()
841 wmi_delba_rx(wil, sta->mid, p1, p2, p3); in wil_write_back()
843 wil_err(wil, "BACK: Unrecognized command \"%s\"\n", cmd); in wil_write_back()
877 struct wil6210_priv *wil = file->private_data; in wil_write_pmccfg() local
900 wil_err(wil, "pmccfg: no params given\n"); in wil_write_pmccfg()
906 wil_err(wil, "pmccfg: alloc requires 2 params\n"); in wil_write_pmccfg()
909 wil_pmc_alloc(wil, num_descs, desc_size); in wil_write_pmccfg()
912 wil_err(wil, "pmccfg: free does not have any params\n"); in wil_write_pmccfg()
915 wil_pmc_free(wil, true); in wil_write_pmccfg()
917 wil_err(wil, "pmccfg: Unrecognized command \"%s\"\n", cmd); in wil_write_pmccfg()
927 struct wil6210_priv *wil = file->private_data; in wil_read_pmccfg() local
934 wil_pmc_last_cmd_status(wil), help); in wil_read_pmccfg()
969 struct wil6210_priv *wil = file->private_data; in wil_write_file_txmgmt() local
970 struct wiphy *wiphy = wil_to_wiphy(wil); in wil_write_file_txmgmt()
971 struct wireless_dev *wdev = wil->main_ndev->ieee80211_ptr; in wil_write_file_txmgmt()
991 wil_info(wil, "-> %d\n", rc); in wil_write_file_txmgmt()
1007 struct wil6210_priv *wil = file->private_data; in wil_write_file_wmi() local
1008 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wil_write_file_wmi()
1025 rc1 = wmi_send(wil, cmdid, vif->mid, cmd, cmdlen); in wil_write_file_wmi()
1028 wil_info(wil, "0x%04x[%d] -> %d\n", cmdid, cmdlen, rc1); in wil_write_file_wmi()
1064 struct wil6210_priv *wil = s->private; in txdesc_show() local
1073 if (wil->use_enhanced_dma_hw) { in txdesc_show()
1089 ring = tx ? &wil->ring_tx[ring_idx] : &wil->ring_rx; in txdesc_show()
1116 if (wil->use_enhanced_dma_hw) { in txdesc_show()
1119 } else if (wil->rx_buff_mgmt.buff_arr) { in txdesc_show()
1126 wil->rx_buff_mgmt.size)) in txdesc_show()
1129 skb = wil->rx_buff_mgmt.buff_arr[buff_id].skb; in txdesc_show()
1159 struct wil6210_priv *wil = s->private; in status_msg_show() local
1171 sring = &wil->srings[sring_idx]; in status_msg_show()
1192 if (!tx && !wil->use_compressed_rx_status) in status_msg_show()
1220 struct wil6210_priv *wil = s->private; in rx_buff_mgmt_show() local
1221 struct wil_rx_buff_mgmt *rbm = &wil->rx_buff_mgmt; in rx_buff_mgmt_show()
1277 struct wil6210_priv *wil = s->private; in bf_show() local
1278 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in bf_show()
1289 for (i = 0; i < wil->max_assoc_sta; i++) { in bf_show()
1294 rc = wmi_call(wil, WMI_NOTIFY_REQ_CMDID, vif->mid, in bf_show()
1348 struct wil6210_priv *wil = s->private; in temp_show() local
1352 wil->fw_capabilities)) { in temp_show()
1355 wil_dbg_misc(wil, in temp_show()
1357 rc = wmi_get_all_temperatures(wil, &sense_all_evt); in temp_show()
1374 wil_dbg_misc(wil, in temp_show()
1376 rc = wmi_get_temperature(wil, &t_m, &t_r); in temp_show()
1391 struct wil6210_priv *wil = s->private; in link_show() local
1399 for (i = 0; i < wil->max_assoc_sta; i++) { in link_show()
1400 struct wil_sta_info *p = &wil->sta[i]; in link_show()
1423 vif = (mid < GET_MAX_VIFS(wil)) ? wil->vifs[mid] : NULL; in link_show()
1448 struct wil6210_priv *wil = s->private; in info_show() local
1449 struct net_device *ndev = wil->main_ndev; in info_show()
1451 int rx = atomic_xchg(&wil->isr_count_rx, 0); in info_show()
1452 int tx = atomic_xchg(&wil->isr_count_tx, 0); in info_show()
1490 struct wil6210_priv *wil = file->private_data; in wil_read_file_recovery() local
1497 sstate[wil->recovery_state]); in wil_read_file_recovery()
1509 struct wil6210_priv *wil = file->private_data; in wil_write_file_recovery() local
1514 if (wil->recovery_state != fw_recovery_pending) { in wil_write_file_recovery()
1515 wil_err(wil, "No recovery pending\n"); in wil_write_file_recovery()
1520 wil_err(wil, "Offset [%d]\n", (int)*ppos); in wil_write_file_recovery()
1525 wil_err(wil, "Input too long, len = %d\n", (int)count); in wil_write_file_recovery()
1535 wil_set_recovery_state(wil, fw_recovery_running); in wil_write_file_recovery()
1537 wil_err(wil, "Bad recovery command \"%s\"\n", buf); in wil_write_file_recovery()
1600 struct wil6210_priv *wil = s->private; in sta_show() local
1603 for (i = 0; i < wil->max_assoc_sta; i++) { in sta_show()
1604 struct wil_sta_info *p = &wil->sta[i]; in sta_show()
1623 if (mid < GET_MAX_VIFS(wil)) { in sta_show()
1624 struct wil6210_vif *vif = wil->vifs[mid]; in sta_show()
1683 struct wil6210_priv *wil = s->private; in mids_show() local
1688 mutex_lock(&wil->vif_mutex); in mids_show()
1689 for (i = 0; i < GET_MAX_VIFS(wil); i++) { in mids_show()
1690 vif = wil->vifs[i]; in mids_show()
1700 mutex_unlock(&wil->vif_mutex); in mids_show()
1709 struct wil6210_priv *wil = s->private; in wil_tx_latency_debugfs_show() local
1712 for (i = 0; i < wil->max_assoc_sta; i++) { in wil_tx_latency_debugfs_show()
1713 struct wil_sta_info *p = &wil->sta[i]; in wil_tx_latency_debugfs_show()
1773 struct wil6210_priv *wil = s->private; in wil_tx_latency_write() local
1779 wil_err(wil, "Invalid argument\n"); in wil_tx_latency_write()
1786 wil_err(wil, "Invalid resolution %d\n", val); in wil_tx_latency_write()
1791 if (wil->tx_latency == enable) in wil_tx_latency_write()
1794 wil_info(wil, "%s TX latency measurements (resolution %dusec)\n", in wil_tx_latency_write()
1800 wil->tx_latency_res = val; in wil_tx_latency_write()
1801 for (i = 0; i < wil->max_assoc_sta; i++) { in wil_tx_latency_write()
1802 struct wil_sta_info *sta = &wil->sta[i]; in wil_tx_latency_write()
1813 wil->tx_latency = enable; in wil_tx_latency_write()
1855 static void wil_link_stats_print_global(struct wil6210_priv *wil, in wil_link_stats_print_global() argument
1877 struct wil6210_priv *wil = vif_to_wil(vif); in wil_link_stats_debugfs_show_vif() local
1887 for (i = 0; i < wil->max_assoc_sta; i++) { in wil_link_stats_debugfs_show_vif()
1888 if (wil->sta[i].status == wil_sta_unused) in wil_link_stats_debugfs_show_vif()
1890 if (wil->sta[i].mid != vif->mid) in wil_link_stats_debugfs_show_vif()
1893 stats = &wil->sta[i].fw_stats_basic; in wil_link_stats_debugfs_show_vif()
1900 struct wil6210_priv *wil = s->private; in wil_link_stats_debugfs_show() local
1904 rc = mutex_lock_interruptible(&wil->vif_mutex); in wil_link_stats_debugfs_show()
1911 for (i = 0; i < GET_MAX_VIFS(wil); i++) { in wil_link_stats_debugfs_show()
1912 vif = wil->vifs[i]; in wil_link_stats_debugfs_show()
1923 mutex_unlock(&wil->vif_mutex); in wil_link_stats_debugfs_show()
1937 struct wil6210_priv *wil = s->private; in wil_link_stats_write() local
1960 wil_info(wil, "request link statistics, cid %d interval %d\n", in wil_link_stats_write()
1963 rc = mutex_lock_interruptible(&wil->vif_mutex); in wil_link_stats_write()
1967 for (i = 0; i < GET_MAX_VIFS(wil); i++) { in wil_link_stats_write()
1968 vif = wil->vifs[i]; in wil_link_stats_write()
1975 wil_err(wil, "link statistics failed for mid %d\n", i); in wil_link_stats_write()
1977 mutex_unlock(&wil->vif_mutex); in wil_link_stats_write()
1993 struct wil6210_priv *wil = s->private; in wil_link_stats_global_debugfs_show() local
1995 if (!wil->fw_stats_global.ready) in wil_link_stats_global_debugfs_show()
1998 seq_printf(s, "TSF %lld\n", wil->fw_stats_global.tsf); in wil_link_stats_global_debugfs_show()
1999 wil_link_stats_print_global(wil, s, &wil->fw_stats_global.stats); in wil_link_stats_global_debugfs_show()
2016 struct wil6210_priv *wil = s->private; in wil_link_stats_global_write() local
2018 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wil_link_stats_global_write()
2023 wil_err(wil, "Invalid argument\n"); in wil_link_stats_global_write()
2027 wil_info(wil, "request global link stats, interval %d\n", interval); in wil_link_stats_global_write()
2031 wil_err(wil, "global link stats failed %d\n", rc); in wil_link_stats_global_write()
2064 struct wil6210_priv *wil = file->private_data; in wil_write_file_led_cfg() local
2070 wil_err(wil, "Invalid argument\n"); in wil_write_file_led_cfg()
2074 wil_info(wil, "%s led %d\n", val ? "Enabling" : "Disabling", led_id); in wil_write_file_led_cfg()
2075 rc = wmi_led_cfg(wil, val); in wil_write_file_led_cfg()
2077 wil_info(wil, "%s led %d failed\n", in wil_write_file_led_cfg()
2159 struct wil6210_priv *wil = s->private; in fw_capabilities_show() local
2162 wil->fw_capabilities); in fw_capabilities_show()
2171 struct wil6210_priv *wil = s->private; in fw_version_show() local
2173 if (wil->fw_version[0]) in fw_version_show()
2174 seq_printf(s, "%s\n", wil->fw_version); in fw_version_show()
2187 struct wil6210_priv *wil = file->private_data; in wil_write_suspend_stats() local
2189 memset(&wil->suspend_stats, 0, sizeof(wil->suspend_stats)); in wil_write_suspend_stats()
2198 struct wil6210_priv *wil = file->private_data; in wil_read_suspend_stats() local
2216 wil->suspend_stats.r_on.successful_suspends, in wil_read_suspend_stats()
2217 wil->suspend_stats.r_on.failed_suspends, in wil_read_suspend_stats()
2218 wil->suspend_stats.r_on.successful_resumes, in wil_read_suspend_stats()
2219 wil->suspend_stats.r_on.failed_resumes, in wil_read_suspend_stats()
2220 wil->suspend_stats.rejected_by_device, in wil_read_suspend_stats()
2221 wil->suspend_stats.r_off.successful_suspends, in wil_read_suspend_stats()
2222 wil->suspend_stats.r_off.failed_suspends, in wil_read_suspend_stats()
2223 wil->suspend_stats.r_off.successful_resumes, in wil_read_suspend_stats()
2224 wil->suspend_stats.r_off.failed_resumes, in wil_read_suspend_stats()
2225 wil->suspend_stats.rejected_by_host); in wil_read_suspend_stats()
2248 struct wil6210_priv *wil = s->private; in wil_compressed_rx_status_write() local
2254 wil_err(wil, "Invalid argument\n"); in wil_compressed_rx_status_write()
2258 if (wil_has_active_ifaces(wil, true, false)) { in wil_compressed_rx_status_write()
2259 wil_err(wil, "cannot change edma config after iface is up\n"); in wil_compressed_rx_status_write()
2263 wil_info(wil, "%sable compressed_rx_status\n", in wil_compressed_rx_status_write()
2266 wil->use_compressed_rx_status = compressed_rx_status; in wil_compressed_rx_status_write()
2274 struct wil6210_priv *wil = s->private; in wil_compressed_rx_status_show() local
2276 seq_printf(s, "%d\n", wil->use_compressed_rx_status); in wil_compressed_rx_status_show()
2297 static void wil6210_debugfs_init_blobs(struct wil6210_priv *wil, in wil6210_debugfs_init_blobs() argument
2304 struct wil_blob_wrapper *wil_blob = &wil->blobs[i]; in wil6210_debugfs_init_blobs()
2311 wil_blob->wil = wil; in wil6210_debugfs_init_blobs()
2312 blob->data = (void * __force)wil->csr + HOSTADDR(map->host); in wil6210_debugfs_init_blobs()
2358 static void wil6210_debugfs_init_files(struct wil6210_priv *wil, in wil6210_debugfs_init_files() argument
2365 wil, dbg_files[i].fops); in wil6210_debugfs_init_files()
2379 static void wil6210_debugfs_init_isr(struct wil6210_priv *wil, in wil6210_debugfs_init_isr() argument
2385 wil6210_debugfs_create_ISR(wil, dbg_icr[i].name, dbg, in wil6210_debugfs_init_isr()
2437 int wil6210_debugfs_init(struct wil6210_priv *wil) in wil6210_debugfs_init() argument
2439 struct dentry *dbg = wil->debug = debugfs_create_dir(WIL_NAME, in wil6210_debugfs_init()
2440 wil_to_wiphy(wil)->debugfsdir); in wil6210_debugfs_init()
2444 wil->dbg_data.data_arr = kcalloc(dbg_off_count, in wil6210_debugfs_init()
2447 if (!wil->dbg_data.data_arr) { in wil6210_debugfs_init()
2449 wil->debug = NULL; in wil6210_debugfs_init()
2453 wil->dbg_data.iomem_data_count = 0; in wil6210_debugfs_init()
2455 wil_pmc_init(wil); in wil6210_debugfs_init()
2457 wil6210_debugfs_init_files(wil, dbg); in wil6210_debugfs_init()
2458 wil6210_debugfs_init_isr(wil, dbg); in wil6210_debugfs_init()
2459 wil6210_debugfs_init_blobs(wil, dbg); in wil6210_debugfs_init()
2460 wil6210_debugfs_init_offset(wil, dbg, wil, dbg_wil_off); in wil6210_debugfs_init()
2461 wil6210_debugfs_init_offset(wil, dbg, (void * __force)wil->csr, in wil6210_debugfs_init()
2463 wil6210_debugfs_init_offset(wil, dbg, NULL, dbg_statics); in wil6210_debugfs_init()
2465 wil6210_debugfs_create_pseudo_ISR(wil, dbg); in wil6210_debugfs_init()
2467 wil6210_debugfs_create_ITR_CNT(wil, dbg); in wil6210_debugfs_init()
2472 void wil6210_debugfs_remove(struct wil6210_priv *wil) in wil6210_debugfs_remove() argument
2476 debugfs_remove_recursive(wil->debug); in wil6210_debugfs_remove()
2477 wil->debug = NULL; in wil6210_debugfs_remove()
2479 kfree(wil->dbg_data.data_arr); in wil6210_debugfs_remove()
2480 for (i = 0; i < wil->max_assoc_sta; i++) in wil6210_debugfs_remove()
2481 kfree(wil->sta[i].tx_latency_bins); in wil6210_debugfs_remove()
2486 wil_pmc_free(wil, false); in wil6210_debugfs_remove()