Lines Matching refs:wil
279 void __iomem *wmi_buffer_block(struct wil6210_priv *wil, __le32 ptr_, u32 size) in wmi_buffer_block() argument
292 if (off > wil->bar_size - 4) in wmi_buffer_block()
294 if (size && ((off + size > wil->bar_size) || (off + size < off))) in wmi_buffer_block()
297 return wil->csr + off; in wmi_buffer_block()
300 void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_) in wmi_buffer() argument
302 return wmi_buffer_block(wil, ptr_, 0); in wmi_buffer()
308 void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr) in wmi_addr() argument
319 if (off > wil->bar_size - 4) in wmi_addr()
322 return wil->csr + off; in wmi_addr()
325 int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr, in wmi_read_hdr() argument
328 void __iomem *src = wmi_buffer(wil, ptr); in wmi_read_hdr()
614 static int __wmi_send(struct wil6210_priv *wil, u16 cmdid, u8 mid, in __wmi_send() argument
631 struct wil6210_mbox_ring *r = &wil->mbox_ctl.tx; in __wmi_send()
635 void __iomem *head = wmi_addr(wil, r->head); in __wmi_send()
640 wil_err(wil, "WMI size too large: %d bytes, max is %d\n", in __wmi_send()
647 if (!test_bit(wil_status_fwready, wil->status)) { in __wmi_send()
648 wil_err(wil, "WMI: cannot send command while FW not ready\n"); in __wmi_send()
653 if ((test_bit(wil_status_suspending, wil->status) || in __wmi_send()
654 test_bit(wil_status_suspended, wil->status) || in __wmi_send()
655 test_bit(wil_status_resuming, wil->status)) && in __wmi_send()
658 wil_err(wil, "WMI: reject send_command during suspend\n"); in __wmi_send()
663 wil_err(wil, "WMI head is garbage: 0x%08x\n", r->head); in __wmi_send()
667 wil_halp_vote(wil); in __wmi_send()
677 wil_err(wil, "WMI head busy\n"); in __wmi_send()
683 wil_dbg_wmi(wil, "Head 0x%08x -> 0x%08x\n", r->head, next_head); in __wmi_send()
686 if (!test_bit(wil_status_fwready, wil->status)) { in __wmi_send()
687 wil_err(wil, "WMI: cannot send command while FW not ready\n"); in __wmi_send()
691 r->tail = wil_r(wil, RGF_MBOX + in __wmi_send()
698 wil_err(wil, "WMI ring full\n"); in __wmi_send()
702 dst = wmi_buffer(wil, d_head.addr); in __wmi_send()
704 wil_err(wil, "invalid WMI buffer: 0x%08x\n", in __wmi_send()
709 cmd.hdr.seq = cpu_to_le16(++wil->wmi_seq); in __wmi_send()
711 wil_dbg_wmi(wil, "sending %s (0x%04x) [%d] mid %d\n", in __wmi_send()
720 wil_w(wil, r->head + offsetof(struct wil6210_mbox_ring_desc, sync), 1); in __wmi_send()
722 wil_w(wil, RGF_MBOX + offsetof(struct wil6210_mbox_ctl, tx.head), in __wmi_send()
728 wil_w(wil, RGF_USER_USER_ICR + offsetof(struct RGF_ICR, ICS), in __wmi_send()
732 wil_halp_unvote(wil); in __wmi_send()
736 int wmi_send(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len) in wmi_send() argument
740 mutex_lock(&wil->wmi_mutex); in wmi_send()
741 rc = __wmi_send(wil, cmdid, mid, buf, len); in wmi_send()
742 mutex_unlock(&wil->wmi_mutex); in wmi_send()
750 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_ready() local
751 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_ready()
754 wil_info(wil, "FW ver. %s(SW %d); MAC %pM; %d MID's\n", in wmi_evt_ready()
755 wil->fw_version, le32_to_cpu(evt->sw_version), in wmi_evt_ready()
757 if (evt->numof_additional_mids + 1 < wil->max_vifs) { in wmi_evt_ready()
758 wil_err(wil, "FW does not support enough MIDs (need %d)", in wmi_evt_ready()
759 wil->max_vifs - 1); in wmi_evt_ready()
763 strlcpy(wiphy->fw_version, wil->fw_version, sizeof(wiphy->fw_version)); in wmi_evt_ready()
766 wil_dbg_wmi(wil, "rfc calibration result %d\n", in wmi_evt_ready()
768 wil->fw_calib_result = evt->rfc_read_calib_result; in wmi_evt_ready()
770 wil_set_recovery_state(wil, fw_recovery_idle); in wmi_evt_ready()
771 set_bit(wil_status_fwready, wil->status); in wmi_evt_ready()
773 complete(&wil->wmi_ready); in wmi_evt_ready()
778 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_rx_mgmt() local
780 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_rx_mgmt()
793 wil_err(wil, "MGMT Rx: short event, len %d\n", len); in wmi_evt_rx_mgmt()
799 wil_err(wil, in wmi_evt_rx_mgmt()
808 if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) in wmi_evt_rx_mgmt()
815 wil_dbg_wmi(wil, "MGMT Rx: channel %d MCS %d RSSI %d SQI %d%%\n", in wmi_evt_rx_mgmt()
818 wil_dbg_wmi(wil, "status 0x%04x len %d fc 0x%04x\n", d_status, d_len, in wmi_evt_rx_mgmt()
820 wil_dbg_wmi(wil, "qid %d mid %d cid %d\n", in wmi_evt_rx_mgmt()
826 wil_err(wil, "Frame on unsupported channel\n"); in wmi_evt_rx_mgmt()
838 wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); in wmi_evt_rx_mgmt()
839 wil_dbg_wmi(wil, "TSF : 0x%016llx\n", tsf); in wmi_evt_rx_mgmt()
840 wil_dbg_wmi(wil, "Beacon interval : %d\n", bi); in wmi_evt_rx_mgmt()
844 wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); in wmi_evt_rx_mgmt()
849 wil_dbg_wmi(wil, "Added BSS %pM\n", in wmi_evt_rx_mgmt()
853 wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); in wmi_evt_rx_mgmt()
856 mutex_lock(&wil->vif_mutex); in wmi_evt_rx_mgmt()
857 cfg80211_rx_mgmt(vif_to_radio_wdev(wil, vif), freq, signal, in wmi_evt_rx_mgmt()
859 mutex_unlock(&wil->vif_mutex); in wmi_evt_rx_mgmt()
877 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_scan_complete() local
879 mutex_lock(&wil->vif_mutex); in wmi_evt_scan_complete()
888 wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", status); in wmi_evt_scan_complete()
889 wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", in wmi_evt_scan_complete()
894 wil->radio_wdev = wil->main_ndev->ieee80211_ptr; in wmi_evt_scan_complete()
896 wake_up_interruptible(&wil->wq); in wmi_evt_scan_complete()
898 wil_dbg_misc(wil, "Scheduling delayed listen\n"); in wmi_evt_scan_complete()
902 wil_err(wil, "SCAN_COMPLETE while not scanning\n"); in wmi_evt_scan_complete()
904 mutex_unlock(&wil->vif_mutex); in wmi_evt_scan_complete()
909 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_connect() local
924 wil_err(wil, "Connect event too short : %d bytes\n", len); in wmi_evt_connect()
929 wil_err(wil, in wmi_evt_connect()
936 wil_err(wil, "Connect CID invalid : %d\n", evt->cid); in wmi_evt_connect()
941 wil_info(wil, "Connect %pM channel [%d] cid %d aid %d\n", in wmi_evt_connect()
964 if (test_bit(wil_status_resetting, wil->status) || in wmi_evt_connect()
965 !test_bit(wil_status_fwready, wil->status)) { in wmi_evt_connect()
966 wil_err(wil, "status_resetting, cancel connect event, CID %d\n", in wmi_evt_connect()
972 mutex_lock(&wil->mutex); in wmi_evt_connect()
977 wil_err(wil, "Not in connecting state\n"); in wmi_evt_connect()
978 mutex_unlock(&wil->mutex); in wmi_evt_connect()
984 if (wil->sta[evt->cid].status != wil_sta_unused) { in wmi_evt_connect()
985 wil_err(wil, "AP: Invalid status %d for CID %d\n", in wmi_evt_connect()
986 wil->sta[evt->cid].status, evt->cid); in wmi_evt_connect()
987 mutex_unlock(&wil->mutex); in wmi_evt_connect()
992 ether_addr_copy(wil->sta[evt->cid].addr, evt->bssid); in wmi_evt_connect()
993 wil->sta[evt->cid].mid = vif->mid; in wmi_evt_connect()
994 wil->sta[evt->cid].status = wil_sta_conn_pending; in wmi_evt_connect()
998 wil_err(wil, "config tx vring failed for CID %d, rc (%d)\n", in wmi_evt_connect()
1000 wmi_disconnect_sta(vif, wil->sta[evt->cid].addr, in wmi_evt_connect()
1003 wil_info(wil, "successful connection to CID %d\n", evt->cid); in wmi_evt_connect()
1010 wil6210_bus_request(wil, WIL_DEFAULT_BUS_REQUEST_KBPS); in wmi_evt_connect()
1011 wil_err(wil, "cfg80211_connect_result with failure\n"); in wmi_evt_connect()
1018 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_connect()
1044 sinfo->generation = wil->sinfo_gen++; in wmi_evt_connect()
1055 wil_err(wil, "unhandled iftype %d for CID %d\n", wdev->iftype, in wmi_evt_connect()
1060 wil->sta[evt->cid].status = wil_sta_connected; in wmi_evt_connect()
1061 wil->sta[evt->cid].aid = evt->aid; in wmi_evt_connect()
1063 atomic_inc(&wil->connected_vifs); in wmi_evt_connect()
1064 wil_update_net_queues_bh(wil, vif, NULL, false); in wmi_evt_connect()
1068 wil->sta[evt->cid].status = wil_sta_unused; in wmi_evt_connect()
1069 wil->sta[evt->cid].mid = U8_MAX; in wmi_evt_connect()
1072 mutex_unlock(&wil->mutex); in wmi_evt_connect()
1078 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_disconnect() local
1082 wil_info(wil, "Disconnect %pM reason [proto %d wmi %d]\n", in wmi_evt_disconnect()
1085 wil->sinfo_gen++; in wmi_evt_disconnect()
1087 if (test_bit(wil_status_resetting, wil->status) || in wmi_evt_disconnect()
1088 !test_bit(wil_status_fwready, wil->status)) { in wmi_evt_disconnect()
1089 wil_err(wil, "status_resetting, cancel disconnect event\n"); in wmi_evt_disconnect()
1094 mutex_lock(&wil->mutex); in wmi_evt_disconnect()
1096 mutex_unlock(&wil->mutex); in wmi_evt_disconnect()
1105 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_eapol_rx() local
1115 wil_dbg_wmi(wil, "EAPOL len %d from %pM MID %d\n", eapol_len, in wmi_evt_eapol_rx()
1118 cid = wil_find_cid(wil, vif->mid, evt->src_mac); in wmi_evt_eapol_rx()
1120 stats = &wil->sta[cid].stats; in wmi_evt_eapol_rx()
1123 wil_err(wil, "EAPOL too large\n"); in wmi_evt_eapol_rx()
1129 wil_err(wil, "Failed to allocate skb\n"); in wmi_evt_eapol_rx()
1155 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_ring_en() local
1160 wil_dbg_wmi(wil, "Enable vring %d MID %d\n", vri, vif->mid); in wmi_evt_ring_en()
1162 if (vri >= ARRAY_SIZE(wil->ring_tx)) { in wmi_evt_ring_en()
1163 wil_err(wil, "Enable for invalid vring %d\n", vri); in wmi_evt_ring_en()
1171 wil->ring_tx_data[vri].dot1x_open = true; in wmi_evt_ring_en()
1175 wil_addba_tx_request(wil, vri, agg_wsize); in wmi_evt_ring_en()
1181 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_ba_status() local
1185 wil_dbg_wmi(wil, "BACK[%d] %s {%d} timeout %d AMSDU%s\n", in wmi_evt_ba_status()
1192 wil_err(wil, "invalid ring id %d\n", evt->ringid); in wmi_evt_ba_status()
1202 txdata = &wil->ring_tx_data[evt->ringid]; in wmi_evt_ba_status()
1213 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_addba_rx_req() local
1216 wil_addba_rx_request(wil, vif->mid, evt->cidxtid, evt->dialog_token, in wmi_evt_addba_rx_req()
1224 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_delba() local
1233 wil_dbg_wmi(wil, "DELBA MID %d CID %d TID %d from %s reason %d\n", in wmi_evt_delba()
1240 for (i = 0; i < ARRAY_SIZE(wil->ring2cid_tid); i++) { in wmi_evt_delba()
1241 if (wil->ring2cid_tid[i][0] == cid && in wmi_evt_delba()
1242 wil->ring2cid_tid[i][1] == tid) { in wmi_evt_delba()
1244 &wil->ring_tx_data[i]; in wmi_evt_delba()
1246 wil_dbg_wmi(wil, "DELBA Tx vring %d\n", i); in wmi_evt_delba()
1254 if (i >= ARRAY_SIZE(wil->ring2cid_tid)) in wmi_evt_delba()
1255 wil_err(wil, "DELBA: unable to find Tx vring\n"); in wmi_evt_delba()
1259 sta = &wil->sta[cid]; in wmi_evt_delba()
1265 wil_tid_ampdu_rx_free(wil, r); in wmi_evt_delba()
1273 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_sched_scan_result() local
1275 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_sched_scan_result()
1288 wil_err(wil, "sched scan result event too short, len %d\n", in wmi_evt_sched_scan_result()
1295 wil_err(wil, in wmi_evt_sched_scan_result()
1303 wil_err(wil, "sched scan result invalid frame, fc 0x%04x\n", in wmi_evt_sched_scan_result()
1311 if (test_bit(WMI_FW_CAPABILITY_RSSI_REPORTING, wil->fw_capabilities)) in wmi_evt_sched_scan_result()
1316 wil_dbg_wmi(wil, "sched scan result: channel %d MCS %d RSSI %d\n", in wmi_evt_sched_scan_result()
1318 wil_dbg_wmi(wil, "len %d qid %d mid %d cid %d\n", in wmi_evt_sched_scan_result()
1324 wil_err(wil, "Frame on unsupported channel\n"); in wmi_evt_sched_scan_result()
1331 wil_dbg_wmi(wil, "Added BSS %pM\n", rx_mgmt_frame->bssid); in wmi_evt_sched_scan_result()
1334 wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); in wmi_evt_sched_scan_result()
1343 struct wil6210_priv *wil = vif_to_wil(vif); in wil_link_stats_store_basic() local
1348 wil_err(wil, "invalid cid %d\n", cid); in wil_link_stats_store_basic()
1352 sta = &wil->sta[cid]; in wil_link_stats_store_basic()
1359 struct wil6210_priv *wil = vif_to_wil(vif); in wil_link_stats_store_global() local
1361 wil->fw_stats_global.stats = *global; in wil_link_stats_store_global()
1368 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_link_stats_parse() local
1374 wil_err(wil, "link stats wrong event size %zu\n", payload_size); in wmi_link_stats_parse()
1384 wil_err(wil, "link stats payload ended unexpectedly, size %zu < %zu\n", in wmi_link_stats_parse()
1393 wil_err(wil, "link stats invalid basic record size %zu < %zu\n", in wmi_link_stats_parse()
1414 wil_err(wil, "link stats invalid global record size %zu < %zu\n", in wmi_link_stats_parse()
1419 if (wil->fw_stats_global.ready) { in wmi_link_stats_parse()
1421 wil->fw_stats_global.tsf = 0; in wmi_link_stats_parse()
1422 wil->fw_stats_global.ready = 0; in wmi_link_stats_parse()
1428 wil->fw_stats_global.tsf = tsf; in wmi_link_stats_parse()
1429 wil->fw_stats_global.ready = 1; in wmi_link_stats_parse()
1446 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_link_stats() local
1451 wil_err(wil, "stats event way too short %d\n", len); in wmi_evt_link_stats()
1456 wil_err(wil, "stats event too short %d\n", len); in wmi_evt_link_stats()
1470 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_evt_ignore() local
1472 wil_dbg_wmi(wil, "Ignore event 0x%04x len %d\n", id, len); in wmi_evt_ignore()
1503 void wmi_recv_cmd(struct wil6210_priv *wil) in wmi_recv_cmd() argument
1507 struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; in wmi_recv_cmd()
1515 if (!test_bit(wil_status_mbox_ready, wil->status)) { in wmi_recv_cmd()
1516 wil_err(wil, "Reset in progress. Cannot handle WMI event\n"); in wmi_recv_cmd()
1520 if (test_bit(wil_status_suspended, wil->status)) { in wmi_recv_cmd()
1521 wil_err(wil, "suspended. cannot handle WMI event\n"); in wmi_recv_cmd()
1530 r->head = wil_r(wil, RGF_MBOX + in wmi_recv_cmd()
1535 wil_dbg_wmi(wil, "Mbox head %08x tail %08x\n", in wmi_recv_cmd()
1538 wil_memcpy_fromio_32(&d_tail, wil->csr + HOSTADDR(r->tail), in wmi_recv_cmd()
1541 wil_err(wil, "Mbox evt not owned by FW?\n"); in wmi_recv_cmd()
1546 if (0 != wmi_read_hdr(wil, d_tail.addr, &hdr)) { in wmi_recv_cmd()
1547 wil_err(wil, "Mbox evt at 0x%08x?\n", in wmi_recv_cmd()
1552 wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n", in wmi_recv_cmd()
1557 src = wmi_buffer(wil, d_tail.addr) + in wmi_recv_cmd()
1569 wil_w(wil, r->tail + in wmi_recv_cmd()
1578 if (test_bit(wil_status_resuming, wil->status)) { in wmi_recv_cmd()
1581 wil->status); in wmi_recv_cmd()
1583 wil_err(wil, in wmi_recv_cmd()
1587 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
1588 if (wil->reply_id && wil->reply_id == id && in wmi_recv_cmd()
1589 wil->reply_mid == mid) { in wmi_recv_cmd()
1590 if (wil->reply_buf) { in wmi_recv_cmd()
1591 memcpy(wil->reply_buf, wmi, in wmi_recv_cmd()
1592 min(len, wil->reply_size)); in wmi_recv_cmd()
1596 wil_dbg_wmi(wil, in wmi_recv_cmd()
1598 wil->suspend_resp_rcvd = true; in wmi_recv_cmd()
1601 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
1603 wil_dbg_wmi(wil, "recv %s (0x%04x) MID %d @%d msec\n", in wmi_recv_cmd()
1614 wil_w(wil, RGF_MBOX + in wmi_recv_cmd()
1618 wil_dbg_wmi(wil, "recv_cmd: Complete WMI 0x%04x\n", in wmi_recv_cmd()
1619 wil->reply_id); in wmi_recv_cmd()
1622 complete(&wil->wmi_call); in wmi_recv_cmd()
1625 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
1626 list_add_tail(&evt->list, &wil->pending_wmi_ev); in wmi_recv_cmd()
1627 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
1628 q = queue_work(wil->wmi_wq, &wil->wmi_event_worker); in wmi_recv_cmd()
1629 wil_dbg_wmi(wil, "queue_work -> %d\n", q); in wmi_recv_cmd()
1633 wil_dbg_wmi(wil, "recv_cmd: -> %d events queued, %d completed\n", in wmi_recv_cmd()
1637 int wmi_call(struct wil6210_priv *wil, u16 cmdid, u8 mid, void *buf, u16 len, in wmi_call() argument
1643 mutex_lock(&wil->wmi_mutex); in wmi_call()
1645 spin_lock(&wil->wmi_ev_lock); in wmi_call()
1646 wil->reply_id = reply_id; in wmi_call()
1647 wil->reply_mid = mid; in wmi_call()
1648 wil->reply_buf = reply; in wmi_call()
1649 wil->reply_size = reply_size; in wmi_call()
1650 reinit_completion(&wil->wmi_call); in wmi_call()
1651 spin_unlock(&wil->wmi_ev_lock); in wmi_call()
1653 rc = __wmi_send(wil, cmdid, mid, buf, len); in wmi_call()
1657 remain = wait_for_completion_timeout(&wil->wmi_call, in wmi_call()
1660 wil_err(wil, "wmi_call(0x%04x->0x%04x) timeout %d msec\n", in wmi_call()
1664 wil_dbg_wmi(wil, in wmi_call()
1671 spin_lock(&wil->wmi_ev_lock); in wmi_call()
1672 wil->reply_id = 0; in wmi_call()
1673 wil->reply_mid = U8_MAX; in wmi_call()
1674 wil->reply_buf = NULL; in wmi_call()
1675 wil->reply_size = 0; in wmi_call()
1676 spin_unlock(&wil->wmi_ev_lock); in wmi_call()
1678 mutex_unlock(&wil->wmi_mutex); in wmi_call()
1683 int wmi_echo(struct wil6210_priv *wil) in wmi_echo() argument
1685 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_echo()
1690 return wmi_call(wil, WMI_ECHO_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_echo()
1694 int wmi_set_mac_address(struct wil6210_priv *wil, void *addr) in wmi_set_mac_address() argument
1696 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_set_mac_address()
1701 wil_dbg_wmi(wil, "Set MAC %pM\n", addr); in wmi_set_mac_address()
1703 return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, vif->mid, in wmi_set_mac_address()
1707 int wmi_led_cfg(struct wil6210_priv *wil, bool enable) in wmi_led_cfg() argument
1709 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_led_cfg()
1739 wil_err(wil, "Invalid led id %d\n", led_id); in wmi_led_cfg()
1744 wil_dbg_wmi(wil, in wmi_led_cfg()
1748 rc = wmi_call(wil, WMI_LED_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_led_cfg()
1755 wil_err(wil, "led %d cfg failed with status %d\n", in wmi_led_cfg()
1767 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_pcp_start() local
1781 .abft_len = wil->abft_len, in wmi_pcp_start()
1795 wil_info(wil, in wmi_pcp_start()
1803 wil->fw_capabilities)) { in wmi_pcp_start()
1804 wil_err(wil, "disable_ap_sme not supported by FW\n"); in wmi_pcp_start()
1812 rc = wmi_call(wil, WMI_PCP_START_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_pcp_start()
1822 wmi_led_cfg(wil, true); in wmi_pcp_start()
1829 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_pcp_stop() local
1832 rc = wmi_led_cfg(wil, false); in wmi_pcp_stop()
1836 return wmi_call(wil, WMI_PCP_STOP_CMDID, vif->mid, NULL, 0, in wmi_pcp_stop()
1842 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_set_ssid() local
1852 return wmi_send(wil, WMI_SET_SSID_CMDID, vif->mid, &cmd, sizeof(cmd)); in wmi_set_ssid()
1857 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_get_ssid() local
1867 rc = wmi_call(wil, WMI_GET_SSID_CMDID, vif->mid, NULL, 0, in wmi_get_ssid()
1882 int wmi_set_channel(struct wil6210_priv *wil, int channel) in wmi_set_channel() argument
1884 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_set_channel()
1889 return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, vif->mid, in wmi_set_channel()
1893 int wmi_get_channel(struct wil6210_priv *wil, int *channel) in wmi_get_channel() argument
1895 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_get_channel()
1904 rc = wmi_call(wil, WMI_GET_PCP_CHANNEL_CMDID, vif->mid, NULL, 0, in wmi_get_channel()
1919 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_p2p_cfg() local
1933 wil_dbg_wmi(wil, "sending WMI_P2P_CFG_CMDID\n"); in wmi_p2p_cfg()
1935 rc = wmi_call(wil, WMI_P2P_CFG_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_p2p_cfg()
1938 wil_err(wil, "P2P_CFG failed. status %d\n", reply.evt.status); in wmi_p2p_cfg()
1947 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_start_listen() local
1956 wil_dbg_wmi(wil, "sending WMI_START_LISTEN_CMDID\n"); in wmi_start_listen()
1958 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0, in wmi_start_listen()
1961 wil_err(wil, "device failed to start listen. status %d\n", in wmi_start_listen()
1971 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_start_search() local
1980 wil_dbg_wmi(wil, "sending WMI_START_SEARCH_CMDID\n"); in wmi_start_search()
1982 rc = wmi_call(wil, WMI_START_SEARCH_CMDID, vif->mid, NULL, 0, in wmi_start_search()
1985 wil_err(wil, "device failed to start search. status %d\n", in wmi_start_search()
1995 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_stop_discovery() local
1998 wil_dbg_wmi(wil, "sending WMI_DISCOVERY_STOP_CMDID\n"); in wmi_stop_discovery()
2000 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0, in wmi_stop_discovery()
2004 wil_err(wil, "Failed to stop discovery\n"); in wmi_stop_discovery()
2012 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_del_cipher_key() local
2020 return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, vif->mid, in wmi_del_cipher_key()
2028 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_add_cipher_key() local
2042 return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, vif->mid, in wmi_add_cipher_key()
2048 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_set_ie() local
2077 rc = wmi_send(wil, WMI_SET_APPIE_CMDID, vif->mid, cmd, len); in wmi_set_ie()
2083 wil_err(wil, "set_ie(%d %s) failed : %d\n", type, name, rc); in wmi_set_ie()
2097 int wmi_rxon(struct wil6210_priv *wil, bool on) in wmi_rxon() argument
2099 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_rxon()
2108 wil_info(wil, "(%s)\n", on ? "on" : "off"); in wmi_rxon()
2111 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0, in wmi_rxon()
2117 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0, in wmi_rxon()
2124 int wmi_rx_chain_add(struct wil6210_priv *wil, struct wil_ring *vring) in wmi_rx_chain_add() argument
2126 struct net_device *ndev = wil->main_ndev; in wmi_rx_chain_add()
2133 wil_mtu2macbuf(wil->rx_buf_len)), in wmi_rx_chain_add()
2151 struct ieee80211_channel *ch = wil->monitor_chandef.chan; in wmi_rx_chain_add()
2159 cpu_to_le32((wil->monitor_flags & MONITOR_FLAG_CONTROL) in wmi_rx_chain_add()
2174 rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_rx_chain_add()
2184 wil_dbg_misc(wil, "Rx init: status %d tail 0x%08x\n", in wmi_rx_chain_add()
2190 int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_bb, u32 *t_rf) in wmi_get_temperature() argument
2192 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_get_temperature()
2206 rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_get_temperature()
2222 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_disconnect_sta() local
2236 wil_dbg_wmi(wil, "disconnect_sta: (%pM, reason %d)\n", mac, reason); in wmi_disconnect_sta()
2242 rc = wmi_call(wil, WMI_DEL_STA_CMDID, vif->mid, &del_sta_cmd, in wmi_disconnect_sta()
2247 rc = wmi_call(wil, WMI_DISCONNECT_STA_CMDID, vif->mid, in wmi_disconnect_sta()
2254 wil_fw_error_recovery(wil); in wmi_disconnect_sta()
2265 wil_dbg_wmi(wil, "Disconnect %pM reason [proto %d wmi %d]\n", in wmi_disconnect_sta()
2269 wil->sinfo_gen++; in wmi_disconnect_sta()
2275 int wmi_addba(struct wil6210_priv *wil, u8 mid, in wmi_addba() argument
2278 u8 amsdu = wil->use_enhanced_dma_hw && wil->use_rx_hw_reordering && in wmi_addba()
2279 test_bit(WMI_FW_CAPABILITY_AMSDU, wil->fw_capabilities) && in wmi_addba()
2280 wil->amsdu_en; in wmi_addba()
2288 wil_dbg_wmi(wil, "addba: (ring %d size %d timeout %d amsdu %d)\n", in wmi_addba()
2291 return wmi_send(wil, WMI_RING_BA_EN_CMDID, mid, &cmd, sizeof(cmd)); in wmi_addba()
2294 int wmi_delba_tx(struct wil6210_priv *wil, u8 mid, u8 ringid, u16 reason) in wmi_delba_tx() argument
2301 wil_dbg_wmi(wil, "delba_tx: (ring %d reason %d)\n", ringid, reason); in wmi_delba_tx()
2303 return wmi_send(wil, WMI_RING_BA_DIS_CMDID, mid, &cmd, sizeof(cmd)); in wmi_delba_tx()
2306 int wmi_delba_rx(struct wil6210_priv *wil, u8 mid, u8 cidxtid, u16 reason) in wmi_delba_rx() argument
2313 wil_dbg_wmi(wil, "delba_rx: (CID %d TID %d reason %d)\n", cidxtid & 0xf, in wmi_delba_rx()
2316 return wmi_send(wil, WMI_RCP_DELBA_CMDID, mid, &cmd, sizeof(cmd)); in wmi_delba_rx()
2319 int wmi_addba_rx_resp(struct wil6210_priv *wil, in wmi_addba_rx_resp() argument
2344 wil_dbg_wmi(wil, in wmi_addba_rx_resp()
2349 rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_CMDID, mid, &cmd, sizeof(cmd), in wmi_addba_rx_resp()
2356 wil_err(wil, "ADDBA response failed with status %d\n", in wmi_addba_rx_resp()
2364 int wmi_addba_rx_resp_edma(struct wil6210_priv *wil, u8 mid, u8 cid, u8 tid, in wmi_addba_rx_resp_edma() argument
2392 wil_dbg_wmi(wil, in wmi_addba_rx_resp_edma()
2397 rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_EDMA_CMDID, mid, &cmd, in wmi_addba_rx_resp_edma()
2404 wil_err(wil, "ADDBA response failed with status %d\n", in wmi_addba_rx_resp_edma()
2412 int wmi_ps_dev_profile_cfg(struct wil6210_priv *wil, in wmi_ps_dev_profile_cfg() argument
2415 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_ps_dev_profile_cfg()
2428 wil_dbg_wmi(wil, "Setting ps dev profile %d\n", ps_profile); in wmi_ps_dev_profile_cfg()
2430 rc = wmi_call(wil, WMI_PS_DEV_PROFILE_CFG_CMDID, vif->mid, in wmi_ps_dev_profile_cfg()
2440 wil_err(wil, "ps dev profile cfg failed with status %d\n", in wmi_ps_dev_profile_cfg()
2448 int wmi_set_mgmt_retry(struct wil6210_priv *wil, u8 retry_short) in wmi_set_mgmt_retry() argument
2450 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_set_mgmt_retry()
2462 wil_dbg_wmi(wil, "Setting mgmt retry short %d\n", retry_short); in wmi_set_mgmt_retry()
2464 if (!test_bit(WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT, wil->fw_capabilities)) in wmi_set_mgmt_retry()
2467 rc = wmi_call(wil, WMI_SET_MGMT_RETRY_LIMIT_CMDID, vif->mid, in wmi_set_mgmt_retry()
2475 wil_err(wil, "set mgmt retry limit failed with status %d\n", in wmi_set_mgmt_retry()
2483 int wmi_get_mgmt_retry(struct wil6210_priv *wil, u8 *retry_short) in wmi_get_mgmt_retry() argument
2485 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_get_mgmt_retry()
2492 wil_dbg_wmi(wil, "getting mgmt retry short\n"); in wmi_get_mgmt_retry()
2494 if (!test_bit(WMI_FW_CAPABILITY_MGMT_RETRY_LIMIT, wil->fw_capabilities)) in wmi_get_mgmt_retry()
2498 rc = wmi_call(wil, WMI_GET_MGMT_RETRY_LIMIT_CMDID, vif->mid, NULL, 0, in wmi_get_mgmt_retry()
2512 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_abort_scan() local
2515 wil_dbg_wmi(wil, "sending WMI_ABORT_SCAN_CMDID\n"); in wmi_abort_scan()
2517 rc = wmi_send(wil, WMI_ABORT_SCAN_CMDID, vif->mid, NULL, 0); in wmi_abort_scan()
2519 wil_err(wil, "Failed to abort scan (%d)\n", rc); in wmi_abort_scan()
2526 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_new_sta() local
2532 wil_dbg_wmi(wil, "new sta %pM, aid %d\n", mac, aid); in wmi_new_sta()
2536 rc = wmi_send(wil, WMI_NEW_STA_CMDID, vif->mid, &cmd, sizeof(cmd)); in wmi_new_sta()
2538 wil_err(wil, "Failed to send new sta (%d)\n", rc); in wmi_new_sta()
2543 void wmi_event_flush(struct wil6210_priv *wil) in wmi_event_flush() argument
2548 wil_dbg_wmi(wil, "event_flush\n"); in wmi_event_flush()
2550 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wmi_event_flush()
2552 list_for_each_entry_safe(evt, t, &wil->pending_wmi_ev, list) { in wmi_event_flush()
2557 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wmi_event_flush()
2570 int wmi_suspend(struct wil6210_priv *wil) in wmi_suspend() argument
2572 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_suspend()
2575 .wakeup_trigger = wil->wakeup_trigger, in wmi_suspend()
2586 wil->suspend_resp_rcvd = false; in wmi_suspend()
2587 wil->suspend_resp_comp = false; in wmi_suspend()
2589 rc = wmi_call(wil, WMI_TRAFFIC_SUSPEND_CMDID, vif->mid, in wmi_suspend()
2594 wil_err(wil, "wmi_call for suspend req failed, rc=%d\n", rc); in wmi_suspend()
2597 wil->suspend_stats.rejected_by_device++; in wmi_suspend()
2599 wil->suspend_stats.rejected_by_host++; in wmi_suspend()
2603 wil_dbg_wmi(wil, "waiting for suspend_response_completed\n"); in wmi_suspend()
2605 rc = wait_event_interruptible_timeout(wil->wq, in wmi_suspend()
2606 wil->suspend_resp_comp, in wmi_suspend()
2609 wil_err(wil, "TO waiting for suspend_response_completed\n"); in wmi_suspend()
2610 if (wil->suspend_resp_rcvd) in wmi_suspend()
2612 wil->suspend_stats.rejected_by_host++; in wmi_suspend()
2614 wil->suspend_stats.rejected_by_device++; in wmi_suspend()
2619 wil_dbg_wmi(wil, "suspend_response_completed rcvd\n"); in wmi_suspend()
2621 wil_dbg_pm(wil, "device rejected the suspend, %s\n", in wmi_suspend()
2623 wil->suspend_stats.rejected_by_device++; in wmi_suspend()
2628 wil->suspend_resp_rcvd = false; in wmi_suspend()
2629 wil->suspend_resp_comp = false; in wmi_suspend()
2656 int wmi_resume(struct wil6210_priv *wil) in wmi_resume() argument
2658 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_resume()
2670 rc = wmi_call(wil, WMI_TRAFFIC_RESUME_CMDID, vif->mid, NULL, 0, in wmi_resume()
2677 wil_dbg_pm(wil, "device resume %s, resume triggers:%s (0x%x)\n", in wmi_resume()
2684 int wmi_port_allocate(struct wil6210_priv *wil, u8 mid, in wmi_port_allocate() argument
2698 wil_dbg_misc(wil, "port allocate, mid %d iftype %d, mac %pM\n", in wmi_port_allocate()
2717 wil_err(wil, "unsupported iftype: %d\n", iftype); in wmi_port_allocate()
2721 rc = wmi_call(wil, WMI_PORT_ALLOCATE_CMDID, mid, in wmi_port_allocate()
2726 wil_err(wil, "failed to allocate port, status %d\n", rc); in wmi_port_allocate()
2730 wil_err(wil, "WMI_PORT_ALLOCATE returned status %d\n", in wmi_port_allocate()
2738 int wmi_port_delete(struct wil6210_priv *wil, u8 mid) in wmi_port_delete() argument
2751 wil_dbg_misc(wil, "port delete, mid %d\n", mid); in wmi_port_delete()
2753 rc = wmi_call(wil, WMI_PORT_DELETE_CMDID, mid, in wmi_port_delete()
2758 wil_err(wil, "failed to delete port, status %d\n", rc); in wmi_port_delete()
2762 wil_err(wil, "WMI_PORT_DELETE returned status %d\n", in wmi_port_delete()
2785 static void wmi_event_handle(struct wil6210_priv *wil, in wmi_event_handle() argument
2798 wil_dbg_wmi(wil, "Handle %s (0x%04x) (reply_id 0x%04x,%d)\n", in wmi_event_handle()
2799 eventid2name(id), id, wil->reply_id, in wmi_event_handle()
2800 wil->reply_mid); in wmi_event_handle()
2804 if (mid >= wil->max_vifs) { in wmi_event_handle()
2805 wil_dbg_wmi(wil, "invalid mid %d, event skipped\n", in wmi_event_handle()
2809 vif = wil->vifs[mid]; in wmi_event_handle()
2811 wil_dbg_wmi(wil, "event for empty VIF(%d), skipped\n", in wmi_event_handle()
2817 if (wil->reply_id && wil->reply_id == id && in wmi_event_handle()
2818 wil->reply_mid == mid) { in wmi_event_handle()
2819 WARN_ON(wil->reply_buf); in wmi_event_handle()
2823 wil_dbg_wmi(wil, "event_handle: Complete WMI 0x%04x\n", in wmi_event_handle()
2825 complete(&wil->wmi_call); in wmi_event_handle()
2832 wil_info(wil, "Unhandled event 0x%04x\n", id); in wmi_event_handle()
2835 wil_err(wil, "Unknown event type\n"); in wmi_event_handle()
2844 static struct list_head *next_wmi_ev(struct wil6210_priv *wil) in next_wmi_ev() argument
2849 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in next_wmi_ev()
2851 if (!list_empty(&wil->pending_wmi_ev)) { in next_wmi_ev()
2852 ret = wil->pending_wmi_ev.next; in next_wmi_ev()
2856 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in next_wmi_ev()
2866 struct wil6210_priv *wil = container_of(work, struct wil6210_priv, in wmi_event_worker() local
2871 wil_dbg_wmi(wil, "event_worker: Start\n"); in wmi_event_worker()
2872 while ((lh = next_wmi_ev(wil)) != NULL) { in wmi_event_worker()
2874 wmi_event_handle(wil, &evt->event.hdr); in wmi_event_worker()
2877 wil_dbg_wmi(wil, "event_worker: Finished\n"); in wmi_event_worker()
2880 bool wil_is_wmi_idle(struct wil6210_priv *wil) in wil_is_wmi_idle() argument
2883 struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; in wil_is_wmi_idle()
2886 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wil_is_wmi_idle()
2889 if (!list_empty(&wil->pending_wmi_ev)) { in wil_is_wmi_idle()
2890 wil_dbg_pm(wil, "Pending WMI events in queue\n"); in wil_is_wmi_idle()
2895 if (wil->reply_id) { in wil_is_wmi_idle()
2896 wil_dbg_pm(wil, "Pending WMI call\n"); in wil_is_wmi_idle()
2901 r->head = wil_r(wil, RGF_MBOX + in wil_is_wmi_idle()
2904 wil_dbg_pm(wil, "Pending WMI mbox events\n"); in wil_is_wmi_idle()
2909 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wil_is_wmi_idle()
2914 wmi_sched_scan_set_ssids(struct wil6210_priv *wil, in wmi_sched_scan_set_ssids() argument
2923 wil_dbg_wmi(wil, "too many match sets (%d), use first %d\n", in wmi_sched_scan_set_ssids()
2952 wmi_sched_scan_set_channels(struct wil6210_priv *wil, in wmi_sched_scan_set_channels() argument
2960 wil_dbg_wmi(wil, "too many channels (%d), use first %d\n", in wmi_sched_scan_set_channels()
2974 wmi_sched_scan_set_plans(struct wil6210_priv *wil, in wmi_sched_scan_set_plans() argument
2982 wil_dbg_wmi(wil, "too many plans (%d), use first %d\n", in wmi_sched_scan_set_plans()
2997 int wmi_start_sched_scan(struct wil6210_priv *wil, in wmi_start_sched_scan() argument
3000 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_start_sched_scan()
3013 if (!test_bit(WMI_FW_CAPABILITY_PNO, wil->fw_capabilities)) in wmi_start_sched_scan()
3020 wmi_sched_scan_set_ssids(wil, &cmd, request->ssids, request->n_ssids, in wmi_start_sched_scan()
3022 wmi_sched_scan_set_channels(wil, &cmd, in wmi_start_sched_scan()
3024 wmi_sched_scan_set_plans(wil, &cmd, in wmi_start_sched_scan()
3027 rc = wmi_call(wil, WMI_START_SCHED_SCAN_CMDID, vif->mid, in wmi_start_sched_scan()
3035 wil_err(wil, "start sched scan failed, result %d\n", in wmi_start_sched_scan()
3043 int wmi_stop_sched_scan(struct wil6210_priv *wil) in wmi_stop_sched_scan() argument
3045 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wmi_stop_sched_scan()
3054 if (!test_bit(WMI_FW_CAPABILITY_PNO, wil->fw_capabilities)) in wmi_stop_sched_scan()
3057 rc = wmi_call(wil, WMI_STOP_SCHED_SCAN_CMDID, vif->mid, NULL, 0, in wmi_stop_sched_scan()
3064 wil_err(wil, "stop sched scan failed, result %d\n", in wmi_stop_sched_scan()
3075 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_mgmt_tx() local
3086 wil_dbg_misc(wil, "mgmt_tx mid %d\n", vif->mid); in wmi_mgmt_tx()
3095 wil_err(wil, "mgmt_tx invalid len %zu\n", len); in wmi_mgmt_tx()
3107 rc = wmi_call(wil, WMI_SW_TX_REQ_CMDID, vif->mid, cmd, total, in wmi_mgmt_tx()
3110 wil_err(wil, "mgmt_tx failed with status %d\n", evt.evt.status); in wmi_mgmt_tx()
3123 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_mgmt_tx_ext() local
3134 wil_dbg_wmi(wil, "mgmt_tx_ext mid %d channel %d duration %d\n", in wmi_mgmt_tx_ext()
3140 wil_err(wil, "short frame. len %zu\n", len); in wmi_mgmt_tx_ext()
3146 wil_err(wil, "mgmt_tx_ext invalid len %zu\n", len); in wmi_mgmt_tx_ext()
3160 rc = wmi_call(wil, WMI_SW_TX_REQ_EXT_CMDID, vif->mid, cmd, total, in wmi_mgmt_tx_ext()
3163 wil_err(wil, "mgmt_tx_ext failed with status %d\n", in wmi_mgmt_tx_ext()
3173 int wil_wmi_tx_sring_cfg(struct wil6210_priv *wil, int ring_id) in wil_wmi_tx_sring_cfg() argument
3176 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev); in wil_wmi_tx_sring_cfg()
3177 struct wil_status_ring *sring = &wil->srings[ring_id]; in wil_wmi_tx_sring_cfg()
3194 rc = wmi_call(wil, WMI_TX_STATUS_RING_ADD_CMDID, vif->mid, &cmd, in wil_wmi_tx_sring_cfg()
3198 wil_err(wil, "TX_STATUS_RING_ADD_CMD failed, rc %d\n", rc); in wil_wmi_tx_sring_cfg()
3203 wil_err(wil, "TX_STATUS_RING_ADD_CMD failed, status %d\n", in wil_wmi_tx_sring_cfg()
3213 int wil_wmi_cfg_def_rx_offload(struct wil6210_priv *wil, u16 max_rx_pl_per_desc) in wil_wmi_cfg_def_rx_offload() argument
3215 struct net_device *ndev = wil->main_ndev; in wil_wmi_cfg_def_rx_offload()
3232 rc = wmi_call(wil, WMI_CFG_DEF_RX_OFFLOAD_CMDID, vif->mid, &cmd, in wil_wmi_cfg_def_rx_offload()
3236 wil_err(wil, "WMI_CFG_DEF_RX_OFFLOAD_CMD failed, rc %d\n", rc); in wil_wmi_cfg_def_rx_offload()
3241 wil_err(wil, "WMI_CFG_DEF_RX_OFFLOAD_CMD failed, status %d\n", in wil_wmi_cfg_def_rx_offload()
3249 int wil_wmi_rx_sring_add(struct wil6210_priv *wil, u16 ring_id) in wil_wmi_rx_sring_add() argument
3251 struct net_device *ndev = wil->main_ndev; in wil_wmi_rx_sring_add()
3253 struct wil_status_ring *sring = &wil->srings[ring_id]; in wil_wmi_rx_sring_add()
3260 .rx_msg_type = wil->use_compressed_rx_status ? in wil_wmi_rx_sring_add()
3273 rc = wmi_call(wil, WMI_RX_STATUS_RING_ADD_CMDID, vif->mid, &cmd, in wil_wmi_rx_sring_add()
3277 wil_err(wil, "RX_STATUS_RING_ADD_CMD failed, rc %d\n", rc); in wil_wmi_rx_sring_add()
3282 wil_err(wil, "RX_STATUS_RING_ADD_CMD failed, status %d\n", in wil_wmi_rx_sring_add()
3292 int wil_wmi_rx_desc_ring_add(struct wil6210_priv *wil, int status_ring_id) in wil_wmi_rx_desc_ring_add() argument
3294 struct net_device *ndev = wil->main_ndev; in wil_wmi_rx_desc_ring_add()
3296 struct wil_ring *ring = &wil->ring_rx; in wil_wmi_rx_desc_ring_add()
3315 rc = wmi_call(wil, WMI_RX_DESC_RING_ADD_CMDID, vif->mid, &cmd, in wil_wmi_rx_desc_ring_add()
3319 wil_err(wil, "WMI_RX_DESC_RING_ADD_CMD failed, rc %d\n", rc); in wil_wmi_rx_desc_ring_add()
3324 wil_err(wil, "WMI_RX_DESC_RING_ADD_CMD failed, status %d\n", in wil_wmi_rx_desc_ring_add()
3337 struct wil6210_priv *wil = vif_to_wil(vif); in wil_wmi_tx_desc_ring_add() local
3338 int sring_id = wil->tx_sring_idx; /* there is only one TX sring */ in wil_wmi_tx_desc_ring_add()
3340 struct wil_ring *ring = &wil->ring_tx[ring_id]; in wil_wmi_tx_desc_ring_add()
3341 struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; in wil_wmi_tx_desc_ring_add()
3365 rc = wmi_call(wil, WMI_TX_DESC_RING_ADD_CMDID, vif->mid, &cmd, in wil_wmi_tx_desc_ring_add()
3369 wil_err(wil, "WMI_TX_DESC_RING_ADD_CMD failed, rc %d\n", rc); in wil_wmi_tx_desc_ring_add()
3374 wil_err(wil, "WMI_TX_DESC_RING_ADD_CMD failed, status %d\n", in wil_wmi_tx_desc_ring_add()
3390 struct wil6210_priv *wil = vif_to_wil(vif); in wil_wmi_bcast_desc_ring_add() local
3391 struct wil_ring *ring = &wil->ring_tx[ring_id]; in wil_wmi_bcast_desc_ring_add()
3398 .status_ring_id = wil->tx_sring_idx, in wil_wmi_bcast_desc_ring_add()
3407 struct wil_ring_tx_data *txdata = &wil->ring_tx_data[ring_id]; in wil_wmi_bcast_desc_ring_add()
3410 rc = wmi_call(wil, WMI_BCAST_DESC_RING_ADD_CMDID, vif->mid, &cmd, in wil_wmi_bcast_desc_ring_add()
3414 wil_err(wil, "WMI_BCAST_DESC_RING_ADD_CMD failed, rc %d\n", rc); in wil_wmi_bcast_desc_ring_add()
3419 wil_err(wil, "Broadcast Tx config failed, status %d\n", in wil_wmi_bcast_desc_ring_add()
3435 struct wil6210_priv *wil = vif_to_wil(vif); in wmi_link_stats_cfg() local
3450 rc = wmi_call(wil, WMI_LINK_STATS_CMDID, vif->mid, &cmd, sizeof(cmd), in wmi_link_stats_cfg()
3454 wil_err(wil, "WMI_LINK_STATS_CMDID failed, rc %d\n", rc); in wmi_link_stats_cfg()
3459 wil_err(wil, "Link statistics config failed, status %d\n", in wmi_link_stats_cfg()