Lines Matching refs:wil

123 void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_)  in wmi_buffer()  argument
139 return wil->csr + off; in wmi_buffer()
145 void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr) in wmi_addr() argument
159 return wil->csr + off; in wmi_addr()
162 int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr, in wmi_read_hdr() argument
165 void __iomem *src = wmi_buffer(wil, ptr); in wmi_read_hdr()
175 static int __wmi_send(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len) in __wmi_send() argument
191 struct wil6210_mbox_ring *r = &wil->mbox_ctl.tx; in __wmi_send()
195 void __iomem *head = wmi_addr(wil, r->head); in __wmi_send()
199 wil_err(wil, "WMI size too large: %d bytes, max is %d\n", in __wmi_send()
206 if (!test_bit(wil_status_fwready, wil->status)) { in __wmi_send()
207 wil_err(wil, "WMI: cannot send command while FW not ready\n"); in __wmi_send()
212 wil_err(wil, "WMI head is garbage: 0x%08x\n", r->head); in __wmi_send()
223 wil_err(wil, "WMI head busy\n"); in __wmi_send()
228 wil_dbg_wmi(wil, "Head 0x%08x -> 0x%08x\n", r->head, next_head); in __wmi_send()
231 r->tail = wil_r(wil, RGF_MBOX + in __wmi_send()
238 wil_err(wil, "WMI ring full\n"); in __wmi_send()
241 dst = wmi_buffer(wil, d_head.addr); in __wmi_send()
243 wil_err(wil, "invalid WMI buffer: 0x%08x\n", in __wmi_send()
247 cmd.hdr.seq = cpu_to_le16(++wil->wmi_seq); in __wmi_send()
249 wil_dbg_wmi(wil, "WMI command 0x%04x [%d]\n", cmdid, len); in __wmi_send()
257 wil_w(wil, r->head + offsetof(struct wil6210_mbox_ring_desc, sync), 1); in __wmi_send()
259 wil_w(wil, RGF_MBOX + offsetof(struct wil6210_mbox_ctl, tx.head), in __wmi_send()
265 wil_w(wil, RGF_USER_USER_ICR + offsetof(struct RGF_ICR, ICS), in __wmi_send()
271 int wmi_send(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len) in wmi_send() argument
275 mutex_lock(&wil->wmi_mutex); in wmi_send()
276 rc = __wmi_send(wil, cmdid, buf, len); in wmi_send()
277 mutex_unlock(&wil->wmi_mutex); in wmi_send()
283 static void wmi_evt_ready(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_ready() argument
285 struct wireless_dev *wdev = wil->wdev; in wmi_evt_ready()
288 wil->fw_version = le32_to_cpu(evt->sw_version); in wmi_evt_ready()
289 wil->n_mids = evt->numof_additional_mids; in wmi_evt_ready()
291 wil_info(wil, "FW ver. %d; MAC %pM; %d MID's\n", wil->fw_version, in wmi_evt_ready()
292 evt->mac, wil->n_mids); in wmi_evt_ready()
295 "%d", wil->fw_version); in wmi_evt_ready()
297 wil_set_recovery_state(wil, fw_recovery_idle); in wmi_evt_ready()
298 set_bit(wil_status_fwready, wil->status); in wmi_evt_ready()
300 complete(&wil->wmi_ready); in wmi_evt_ready()
303 static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_rx_mgmt() argument
306 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_rx_mgmt()
319 wil_err(wil, "MGMT Rx: short event, len %d\n", len); in wmi_evt_rx_mgmt()
325 wil_err(wil, in wmi_evt_rx_mgmt()
338 wil_dbg_wmi(wil, "MGMT Rx: channel %d MCS %d SNR %d SQI %d%%\n", in wmi_evt_rx_mgmt()
341 wil_dbg_wmi(wil, "status 0x%04x len %d fc 0x%04x\n", d_status, d_len, in wmi_evt_rx_mgmt()
343 wil_dbg_wmi(wil, "qid %d mid %d cid %d\n", in wmi_evt_rx_mgmt()
349 wil_err(wil, "Frame on unsupported channel\n"); in wmi_evt_rx_mgmt()
361 wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); in wmi_evt_rx_mgmt()
362 wil_dbg_wmi(wil, "TSF : 0x%016llx\n", tsf); in wmi_evt_rx_mgmt()
363 wil_dbg_wmi(wil, "Beacon interval : %d\n", bi); in wmi_evt_rx_mgmt()
370 wil_dbg_wmi(wil, "Added BSS %pM\n", in wmi_evt_rx_mgmt()
374 wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); in wmi_evt_rx_mgmt()
377 cfg80211_rx_mgmt(wil->wdev, freq, signal, in wmi_evt_rx_mgmt()
382 static void wmi_evt_tx_mgmt(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_tx_mgmt() argument
393 static void wmi_evt_scan_complete(struct wil6210_priv *wil, int id, in wmi_evt_scan_complete() argument
396 if (wil->scan_request) { in wmi_evt_scan_complete()
400 wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", data->status); in wmi_evt_scan_complete()
401 wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", in wmi_evt_scan_complete()
402 wil->scan_request, aborted); in wmi_evt_scan_complete()
404 del_timer_sync(&wil->scan_timer); in wmi_evt_scan_complete()
405 cfg80211_scan_done(wil->scan_request, aborted); in wmi_evt_scan_complete()
406 wil->scan_request = NULL; in wmi_evt_scan_complete()
408 wil_err(wil, "SCAN_COMPLETE while not scanning\n"); in wmi_evt_scan_complete()
412 static void wmi_evt_connect(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_connect() argument
414 struct net_device *ndev = wil_to_ndev(wil); in wmi_evt_connect()
415 struct wireless_dev *wdev = wil->wdev; in wmi_evt_connect()
427 wil_err(wil, "Connect event too short : %d bytes\n", len); in wmi_evt_connect()
432 wil_err(wil, in wmi_evt_connect()
439 wil_err(wil, "Connect CID invalid : %d\n", evt->cid); in wmi_evt_connect()
444 wil_dbg_wmi(wil, "Connect %pM channel [%d] cid %d\n", in wmi_evt_connect()
469 if (!test_bit(wil_status_fwconnecting, wil->status)) { in wmi_evt_connect()
470 wil_err(wil, "Not in connecting state\n"); in wmi_evt_connect()
473 del_timer_sync(&wil->connect_timer); in wmi_evt_connect()
483 sinfo.generation = wil->sinfo_gen++; in wmi_evt_connect()
492 clear_bit(wil_status_fwconnecting, wil->status); in wmi_evt_connect()
493 set_bit(wil_status_fwconnected, wil->status); in wmi_evt_connect()
497 ether_addr_copy(wil->sta[evt->cid].addr, evt->bssid); in wmi_evt_connect()
498 wil->sta[evt->cid].status = wil_sta_conn_pending; in wmi_evt_connect()
500 wil->pending_connect_cid = evt->cid; in wmi_evt_connect()
501 queue_work(wil->wq_service, &wil->connect_worker); in wmi_evt_connect()
504 static void wmi_evt_disconnect(struct wil6210_priv *wil, int id, in wmi_evt_disconnect() argument
510 wil_dbg_wmi(wil, "Disconnect %pM reason [proto %d wmi %d]\n", in wmi_evt_disconnect()
513 wil->sinfo_gen++; in wmi_evt_disconnect()
515 mutex_lock(&wil->mutex); in wmi_evt_disconnect()
516 wil6210_disconnect(wil, evt->bssid, reason_code, true); in wmi_evt_disconnect()
517 mutex_unlock(&wil->mutex); in wmi_evt_disconnect()
524 static void wmi_evt_eapol_rx(struct wil6210_priv *wil, int id, in wmi_evt_eapol_rx() argument
527 struct net_device *ndev = wil_to_ndev(wil); in wmi_evt_eapol_rx()
536 wil_dbg_wmi(wil, "EAPOL len %d from %pM\n", eapol_len, in wmi_evt_eapol_rx()
539 cid = wil_find_cid(wil, evt->src_mac); in wmi_evt_eapol_rx()
541 stats = &wil->sta[cid].stats; in wmi_evt_eapol_rx()
544 wil_err(wil, "EAPOL too large\n"); in wmi_evt_eapol_rx()
550 wil_err(wil, "Failed to allocate skb\n"); in wmi_evt_eapol_rx()
574 static void wmi_evt_vring_en(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_vring_en() argument
579 wil_dbg_wmi(wil, "Enable vring %d\n", vri); in wmi_evt_vring_en()
581 if (vri >= ARRAY_SIZE(wil->vring_tx)) { in wmi_evt_vring_en()
582 wil_err(wil, "Enable for invalid vring %d\n", vri); in wmi_evt_vring_en()
585 wil->vring_tx_data[vri].dot1x_open = true; in wmi_evt_vring_en()
586 if (vri == wil->bcast_vring) /* no BA for bcast */ in wmi_evt_vring_en()
589 wil_addba_tx_request(wil, vri, agg_wsize); in wmi_evt_vring_en()
592 static void wmi_evt_ba_status(struct wil6210_priv *wil, int id, void *d, in wmi_evt_ba_status() argument
598 wil_dbg_wmi(wil, "BACK[%d] %s {%d} timeout %d AMSDU%s\n", in wmi_evt_ba_status()
605 wil_err(wil, "invalid ring id %d\n", evt->ringid); in wmi_evt_ba_status()
615 txdata = &wil->vring_tx_data[evt->ringid]; in wmi_evt_ba_status()
623 static void wmi_evt_addba_rx_req(struct wil6210_priv *wil, int id, void *d, in wmi_evt_addba_rx_req() argument
628 wil_addba_rx_request(wil, evt->cidxtid, evt->dialog_token, in wmi_evt_addba_rx_req()
633 static void wmi_evt_delba(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_delba() argument
644 wil_dbg_wmi(wil, "DELBA CID %d TID %d from %s reason %d\n", in wmi_evt_delba()
651 for (i = 0; i < ARRAY_SIZE(wil->vring2cid_tid); i++) { in wmi_evt_delba()
652 if ((wil->vring2cid_tid[i][0] == cid) && in wmi_evt_delba()
653 (wil->vring2cid_tid[i][1] == tid)) { in wmi_evt_delba()
655 &wil->vring_tx_data[i]; in wmi_evt_delba()
657 wil_dbg_wmi(wil, "DELBA Tx vring %d\n", i); in wmi_evt_delba()
665 if (i >= ARRAY_SIZE(wil->vring2cid_tid)) in wmi_evt_delba()
666 wil_err(wil, "DELBA: unable to find Tx vring\n"); in wmi_evt_delba()
670 sta = &wil->sta[cid]; in wmi_evt_delba()
676 wil_tid_ampdu_rx_free(wil, r); in wmi_evt_delba()
685 static void wmi_evt_ignore(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_ignore() argument
687 wil_dbg_wmi(wil, "Ignore event 0x%04x len %d\n", id, len); in wmi_evt_ignore()
692 void (*handler)(struct wil6210_priv *wil, int eventid,
716 void wmi_recv_cmd(struct wil6210_priv *wil) in wmi_recv_cmd() argument
720 struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; in wmi_recv_cmd()
727 if (!test_bit(wil_status_mbox_ready, wil->status)) { in wmi_recv_cmd()
728 wil_err(wil, "Reset in progress. Cannot handle WMI event\n"); in wmi_recv_cmd()
736 r->head = wil_r(wil, RGF_MBOX + in wmi_recv_cmd()
741 wil_dbg_wmi(wil, "Mbox head %08x tail %08x\n", in wmi_recv_cmd()
744 wil_memcpy_fromio_32(&d_tail, wil->csr + HOSTADDR(r->tail), in wmi_recv_cmd()
747 wil_err(wil, "Mbox evt not owned by FW?\n"); in wmi_recv_cmd()
752 if (0 != wmi_read_hdr(wil, d_tail.addr, &hdr)) { in wmi_recv_cmd()
753 wil_err(wil, "Mbox evt at 0x%08x?\n", in wmi_recv_cmd()
758 wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n", in wmi_recv_cmd()
763 src = wmi_buffer(wil, d_tail.addr) + in wmi_recv_cmd()
775 wil_w(wil, r->tail + in wmi_recv_cmd()
784 wil_dbg_wmi(wil, "WMI event 0x%04x MID %d @%d msec\n", in wmi_recv_cmd()
795 wil_w(wil, RGF_MBOX + in wmi_recv_cmd()
799 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
800 list_add_tail(&evt->list, &wil->pending_wmi_ev); in wmi_recv_cmd()
801 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
802 q = queue_work(wil->wmi_wq, &wil->wmi_event_worker); in wmi_recv_cmd()
803 wil_dbg_wmi(wil, "queue_work -> %d\n", q); in wmi_recv_cmd()
806 wil_dbg_wmi(wil, "%s -> %d events queued\n", __func__, n); in wmi_recv_cmd()
809 int wmi_call(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len, in wmi_call() argument
815 mutex_lock(&wil->wmi_mutex); in wmi_call()
817 rc = __wmi_send(wil, cmdid, buf, len); in wmi_call()
821 wil->reply_id = reply_id; in wmi_call()
822 wil->reply_buf = reply; in wmi_call()
823 wil->reply_size = reply_size; in wmi_call()
824 remain = wait_for_completion_timeout(&wil->wmi_call, in wmi_call()
827 wil_err(wil, "wmi_call(0x%04x->0x%04x) timeout %d msec\n", in wmi_call()
831 wil_dbg_wmi(wil, in wmi_call()
836 wil->reply_id = 0; in wmi_call()
837 wil->reply_buf = NULL; in wmi_call()
838 wil->reply_size = 0; in wmi_call()
840 mutex_unlock(&wil->wmi_mutex); in wmi_call()
845 int wmi_echo(struct wil6210_priv *wil) in wmi_echo() argument
851 return wmi_call(wil, WMI_ECHO_CMDID, &cmd, sizeof(cmd), in wmi_echo()
855 int wmi_set_mac_address(struct wil6210_priv *wil, void *addr) in wmi_set_mac_address() argument
861 wil_dbg_wmi(wil, "Set MAC %pM\n", addr); in wmi_set_mac_address()
863 return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, &cmd, sizeof(cmd)); in wmi_set_mac_address()
866 int wmi_pcp_start(struct wil6210_priv *wil, int bi, u8 wmi_nettype, in wmi_pcp_start() argument
884 if (!wil->privacy) in wmi_pcp_start()
889 wil_info(wil, in wmi_pcp_start()
899 rc = wmi_call(wil, WMI_PCP_START_CMDID, &cmd, sizeof(cmd), in wmi_pcp_start()
910 int wmi_pcp_stop(struct wil6210_priv *wil) in wmi_pcp_stop() argument
912 return wmi_call(wil, WMI_PCP_STOP_CMDID, NULL, 0, in wmi_pcp_stop()
916 int wmi_set_ssid(struct wil6210_priv *wil, u8 ssid_len, const void *ssid) in wmi_set_ssid() argument
927 return wmi_send(wil, WMI_SET_SSID_CMDID, &cmd, sizeof(cmd)); in wmi_set_ssid()
930 int wmi_get_ssid(struct wil6210_priv *wil, u8 *ssid_len, void *ssid) in wmi_get_ssid() argument
939 rc = wmi_call(wil, WMI_GET_SSID_CMDID, NULL, 0, WMI_GET_SSID_EVENTID, in wmi_get_ssid()
954 int wmi_set_channel(struct wil6210_priv *wil, int channel) in wmi_set_channel() argument
960 return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, &cmd, sizeof(cmd)); in wmi_set_channel()
963 int wmi_get_channel(struct wil6210_priv *wil, int *channel) in wmi_get_channel() argument
971 rc = wmi_call(wil, WMI_GET_PCP_CHANNEL_CMDID, NULL, 0, in wmi_get_channel()
984 int wmi_p2p_cfg(struct wil6210_priv *wil, int channel) in wmi_p2p_cfg() argument
991 return wmi_send(wil, WMI_P2P_CFG_CMDID, &cmd, sizeof(cmd)); in wmi_p2p_cfg()
994 int wmi_del_cipher_key(struct wil6210_priv *wil, u8 key_index, in wmi_del_cipher_key() argument
1004 return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); in wmi_del_cipher_key()
1007 int wmi_add_cipher_key(struct wil6210_priv *wil, u8 key_index, in wmi_add_cipher_key() argument
1024 return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); in wmi_add_cipher_key()
1027 int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie) in wmi_set_ie() argument
1051 rc = wmi_send(wil, WMI_SET_APPIE_CMDID, cmd, len); in wmi_set_ie()
1057 wil_err(wil, "set_ie(%d %s) failed : %d\n", type, name, rc); in wmi_set_ie()
1071 int wmi_rxon(struct wil6210_priv *wil, bool on) in wmi_rxon() argument
1079 wil_info(wil, "%s(%s)\n", __func__, on ? "on" : "off"); in wmi_rxon()
1082 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, NULL, 0, in wmi_rxon()
1088 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, NULL, 0, in wmi_rxon()
1095 int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring) in wmi_rx_chain_add() argument
1097 struct wireless_dev *wdev = wil->wdev; in wmi_rx_chain_add()
1098 struct net_device *ndev = wil_to_ndev(wil); in wmi_rx_chain_add()
1126 cpu_to_le32((wil->monitor_flags & MONITOR_FLAG_CONTROL) in wmi_rx_chain_add()
1141 rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, &cmd, sizeof(cmd), in wmi_rx_chain_add()
1148 wil_dbg_misc(wil, "Rx init: status %d tail 0x%08x\n", in wmi_rx_chain_add()
1157 int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_bb, u32 *t_rf) in wmi_get_temperature() argument
1170 rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, &cmd, sizeof(cmd), in wmi_get_temperature()
1183 int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac, u16 reason) in wmi_disconnect_sta() argument
1197 wil_dbg_wmi(wil, "%s(%pM, reason %d)\n", __func__, mac, reason); in wmi_disconnect_sta()
1199 rc = wmi_call(wil, WMI_DISCONNECT_STA_CMDID, &cmd, sizeof(cmd), in wmi_disconnect_sta()
1203 wil_fw_error_recovery(wil); in wmi_disconnect_sta()
1213 wil_dbg_wmi(wil, "Disconnect %pM reason [proto %d wmi %d]\n", in wmi_disconnect_sta()
1217 wil->sinfo_gen++; in wmi_disconnect_sta()
1218 wil6210_disconnect(wil, reply.evt.bssid, reason_code, true); in wmi_disconnect_sta()
1223 int wmi_addba(struct wil6210_priv *wil, u8 ringid, u8 size, u16 timeout) in wmi_addba() argument
1232 wil_dbg_wmi(wil, "%s(ring %d size %d timeout %d)\n", __func__, in wmi_addba()
1235 return wmi_send(wil, WMI_VRING_BA_EN_CMDID, &cmd, sizeof(cmd)); in wmi_addba()
1238 int wmi_delba_tx(struct wil6210_priv *wil, u8 ringid, u16 reason) in wmi_delba_tx() argument
1245 wil_dbg_wmi(wil, "%s(ring %d reason %d)\n", __func__, in wmi_delba_tx()
1248 return wmi_send(wil, WMI_VRING_BA_DIS_CMDID, &cmd, sizeof(cmd)); in wmi_delba_tx()
1251 int wmi_delba_rx(struct wil6210_priv *wil, u8 cidxtid, u16 reason) in wmi_delba_rx() argument
1258 wil_dbg_wmi(wil, "%s(CID %d TID %d reason %d)\n", __func__, in wmi_delba_rx()
1261 return wmi_send(wil, WMI_RCP_DELBA_CMDID, &cmd, sizeof(cmd)); in wmi_delba_rx()
1264 int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token, in wmi_addba_rx_resp() argument
1286 wil_dbg_wmi(wil, in wmi_addba_rx_resp()
1290 rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_CMDID, &cmd, sizeof(cmd), in wmi_addba_rx_resp()
1297 wil_err(wil, "ADDBA response failed with status %d\n", in wmi_addba_rx_resp()
1305 void wmi_event_flush(struct wil6210_priv *wil) in wmi_event_flush() argument
1309 wil_dbg_wmi(wil, "%s()\n", __func__); in wmi_event_flush()
1311 list_for_each_entry_safe(evt, t, &wil->pending_wmi_ev, list) { in wmi_event_flush()
1317 static bool wmi_evt_call_handler(struct wil6210_priv *wil, int id, in wmi_evt_call_handler() argument
1324 wmi_evt_handlers[i].handler(wil, id, d, len); in wmi_evt_call_handler()
1332 static void wmi_event_handle(struct wil6210_priv *wil, in wmi_event_handle() argument
1343 wil_dbg_wmi(wil, "Handle WMI 0x%04x (reply_id 0x%04x)\n", in wmi_event_handle()
1344 id, wil->reply_id); in wmi_event_handle()
1346 if (wil->reply_id && wil->reply_id == id) { in wmi_event_handle()
1347 if (wil->reply_buf) { in wmi_event_handle()
1348 memcpy(wil->reply_buf, wmi, in wmi_event_handle()
1349 min(len, wil->reply_size)); in wmi_event_handle()
1351 wmi_evt_call_handler(wil, id, evt_data, in wmi_event_handle()
1354 wil_dbg_wmi(wil, "Complete WMI 0x%04x\n", id); in wmi_event_handle()
1355 complete(&wil->wmi_call); in wmi_event_handle()
1360 if (!wmi_evt_call_handler(wil, id, evt_data, in wmi_event_handle()
1362 wil_info(wil, "Unhandled event 0x%04x\n", id); in wmi_event_handle()
1365 wil_err(wil, "Unknown event type\n"); in wmi_event_handle()
1374 static struct list_head *next_wmi_ev(struct wil6210_priv *wil) in next_wmi_ev() argument
1379 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in next_wmi_ev()
1381 if (!list_empty(&wil->pending_wmi_ev)) { in next_wmi_ev()
1382 ret = wil->pending_wmi_ev.next; in next_wmi_ev()
1386 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in next_wmi_ev()
1396 struct wil6210_priv *wil = container_of(work, struct wil6210_priv, in wmi_event_worker() local
1401 wil_dbg_wmi(wil, "Start %s\n", __func__); in wmi_event_worker()
1402 while ((lh = next_wmi_ev(wil)) != NULL) { in wmi_event_worker()
1404 wmi_event_handle(wil, &evt->event.hdr); in wmi_event_worker()
1407 wil_dbg_wmi(wil, "Finished %s\n", __func__); in wmi_event_worker()