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