Lines Matching refs:wil
122 void __iomem *wmi_buffer(struct wil6210_priv *wil, __le32 ptr_) in wmi_buffer() argument
138 return wil->csr + off; in wmi_buffer()
144 void __iomem *wmi_addr(struct wil6210_priv *wil, u32 ptr) in wmi_addr() argument
158 return wil->csr + off; in wmi_addr()
161 int wmi_read_hdr(struct wil6210_priv *wil, __le32 ptr, in wmi_read_hdr() argument
164 void __iomem *src = wmi_buffer(wil, ptr); in wmi_read_hdr()
174 static int __wmi_send(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len) in __wmi_send() argument
190 struct wil6210_mbox_ring *r = &wil->mbox_ctl.tx; in __wmi_send()
194 void __iomem *head = wmi_addr(wil, r->head); in __wmi_send()
198 wil_err(wil, "WMI size too large: %d bytes, max is %d\n", in __wmi_send()
205 if (!test_bit(wil_status_fwready, wil->status)) { in __wmi_send()
206 wil_err(wil, "WMI: cannot send command while FW not ready\n"); in __wmi_send()
211 wil_err(wil, "WMI head is garbage: 0x%08x\n", r->head); in __wmi_send()
222 wil_err(wil, "WMI head busy\n"); in __wmi_send()
227 wil_dbg_wmi(wil, "Head 0x%08x -> 0x%08x\n", r->head, next_head); in __wmi_send()
230 r->tail = ioread32(wil->csr + HOST_MBOX + in __wmi_send()
237 wil_err(wil, "WMI ring full\n"); in __wmi_send()
240 dst = wmi_buffer(wil, d_head.addr); in __wmi_send()
242 wil_err(wil, "invalid WMI buffer: 0x%08x\n", in __wmi_send()
246 cmd.hdr.seq = cpu_to_le16(++wil->wmi_seq); in __wmi_send()
248 wil_dbg_wmi(wil, "WMI command 0x%04x [%d]\n", cmdid, len); in __wmi_send()
256 iowrite32(1, wil->csr + HOSTADDR(r->head) + in __wmi_send()
259 iowrite32(r->head = next_head, wil->csr + HOST_MBOX + in __wmi_send()
265 iowrite32(SW_INT_MBOX, wil->csr + HOST_SW_INT); in __wmi_send()
270 int wmi_send(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len) in wmi_send() argument
274 mutex_lock(&wil->wmi_mutex); in wmi_send()
275 rc = __wmi_send(wil, cmdid, buf, len); in wmi_send()
276 mutex_unlock(&wil->wmi_mutex); in wmi_send()
282 static void wmi_evt_ready(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_ready() argument
284 struct wireless_dev *wdev = wil->wdev; in wmi_evt_ready()
287 wil->fw_version = le32_to_cpu(evt->sw_version); in wmi_evt_ready()
288 wil->n_mids = evt->numof_additional_mids; in wmi_evt_ready()
290 wil_info(wil, "FW ver. %d; MAC %pM; %d MID's\n", wil->fw_version, in wmi_evt_ready()
291 evt->mac, wil->n_mids); in wmi_evt_ready()
294 "%d", wil->fw_version); in wmi_evt_ready()
297 static void wmi_evt_fw_ready(struct wil6210_priv *wil, int id, void *d, in wmi_evt_fw_ready() argument
300 wil_dbg_wmi(wil, "WMI: got FW ready event\n"); in wmi_evt_fw_ready()
302 wil_set_recovery_state(wil, fw_recovery_idle); in wmi_evt_fw_ready()
303 set_bit(wil_status_fwready, wil->status); in wmi_evt_fw_ready()
305 complete(&wil->wmi_ready); in wmi_evt_fw_ready()
308 static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_rx_mgmt() argument
311 struct wiphy *wiphy = wil_to_wiphy(wil); in wmi_evt_rx_mgmt()
323 wil_dbg_wmi(wil, "MGMT: channel %d MCS %d SNR %d SQI %d%%\n", in wmi_evt_rx_mgmt()
326 wil_dbg_wmi(wil, "status 0x%04x len %d fc 0x%04x\n", d_status, d_len, in wmi_evt_rx_mgmt()
328 wil_dbg_wmi(wil, "qid %d mid %d cid %d\n", in wmi_evt_rx_mgmt()
332 wil_err(wil, "Frame on unsupported channel\n"); in wmi_evt_rx_mgmt()
344 wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap); in wmi_evt_rx_mgmt()
345 wil_dbg_wmi(wil, "TSF : 0x%016llx\n", tsf); in wmi_evt_rx_mgmt()
346 wil_dbg_wmi(wil, "Beacon interval : %d\n", bi); in wmi_evt_rx_mgmt()
353 wil_dbg_wmi(wil, "Added BSS %pM\n", in wmi_evt_rx_mgmt()
357 wil_err(wil, "cfg80211_inform_bss_frame() failed\n"); in wmi_evt_rx_mgmt()
360 cfg80211_rx_mgmt(wil->wdev, freq, signal, in wmi_evt_rx_mgmt()
365 static void wmi_evt_scan_complete(struct wil6210_priv *wil, int id, in wmi_evt_scan_complete() argument
368 if (wil->scan_request) { in wmi_evt_scan_complete()
372 wil_dbg_wmi(wil, "SCAN_COMPLETE(0x%08x)\n", data->status); in wmi_evt_scan_complete()
373 wil_dbg_misc(wil, "Complete scan_request 0x%p aborted %d\n", in wmi_evt_scan_complete()
374 wil->scan_request, aborted); in wmi_evt_scan_complete()
376 del_timer_sync(&wil->scan_timer); in wmi_evt_scan_complete()
377 cfg80211_scan_done(wil->scan_request, aborted); in wmi_evt_scan_complete()
378 wil->scan_request = NULL; in wmi_evt_scan_complete()
380 wil_err(wil, "SCAN_COMPLETE while not scanning\n"); in wmi_evt_scan_complete()
384 static void wmi_evt_connect(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_connect() argument
386 struct net_device *ndev = wil_to_ndev(wil); in wmi_evt_connect()
387 struct wireless_dev *wdev = wil->wdev; in wmi_evt_connect()
399 wil_err(wil, "Connect event too short : %d bytes\n", len); in wmi_evt_connect()
404 wil_err(wil, in wmi_evt_connect()
411 wil_err(wil, "Connect CID invalid : %d\n", evt->cid); in wmi_evt_connect()
416 wil_dbg_wmi(wil, "Connect %pM channel [%d] cid %d\n", in wmi_evt_connect()
441 if (!test_bit(wil_status_fwconnecting, wil->status)) { in wmi_evt_connect()
442 wil_err(wil, "Not in connecting state\n"); in wmi_evt_connect()
445 del_timer_sync(&wil->connect_timer); in wmi_evt_connect()
455 sinfo.generation = wil->sinfo_gen++; in wmi_evt_connect()
464 clear_bit(wil_status_fwconnecting, wil->status); in wmi_evt_connect()
465 set_bit(wil_status_fwconnected, wil->status); in wmi_evt_connect()
469 ether_addr_copy(wil->sta[evt->cid].addr, evt->bssid); in wmi_evt_connect()
470 wil->sta[evt->cid].status = wil_sta_conn_pending; in wmi_evt_connect()
472 wil->pending_connect_cid = evt->cid; in wmi_evt_connect()
473 queue_work(wil->wq_service, &wil->connect_worker); in wmi_evt_connect()
476 static void wmi_evt_disconnect(struct wil6210_priv *wil, int id, in wmi_evt_disconnect() argument
482 wil_dbg_wmi(wil, "Disconnect %pM reason [proto %d wmi %d]\n", in wmi_evt_disconnect()
485 wil->sinfo_gen++; in wmi_evt_disconnect()
487 mutex_lock(&wil->mutex); in wmi_evt_disconnect()
488 wil6210_disconnect(wil, evt->bssid, reason_code, true); in wmi_evt_disconnect()
489 mutex_unlock(&wil->mutex); in wmi_evt_disconnect()
496 static void wmi_evt_eapol_rx(struct wil6210_priv *wil, int id, in wmi_evt_eapol_rx() argument
499 struct net_device *ndev = wil_to_ndev(wil); in wmi_evt_eapol_rx()
508 wil_dbg_wmi(wil, "EAPOL len %d from %pM\n", eapol_len, in wmi_evt_eapol_rx()
511 cid = wil_find_cid(wil, evt->src_mac); in wmi_evt_eapol_rx()
513 stats = &wil->sta[cid].stats; in wmi_evt_eapol_rx()
516 wil_err(wil, "EAPOL too large\n"); in wmi_evt_eapol_rx()
522 wil_err(wil, "Failed to allocate skb\n"); in wmi_evt_eapol_rx()
546 static void wil_addba_tx_cid(struct wil6210_priv *wil, u8 cid, u16 wsize) in wil_addba_tx_cid() argument
552 if (cid != wil->vring2cid_tid[i][0]) in wil_addba_tx_cid()
554 t = &wil->vring_tx_data[i]; in wil_addba_tx_cid()
558 wil_addba_tx_request(wil, i, wsize); in wil_addba_tx_cid()
562 static void wmi_evt_linkup(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_linkup() argument
567 wil_dbg_wmi(wil, "Link UP for CID %d\n", cid); in wmi_evt_linkup()
569 if (cid >= ARRAY_SIZE(wil->sta)) { in wmi_evt_linkup()
570 wil_err(wil, "Link UP for invalid CID %d\n", cid); in wmi_evt_linkup()
574 wil->sta[cid].data_port_open = true; in wmi_evt_linkup()
576 wil_addba_tx_cid(wil, cid, agg_wsize); in wmi_evt_linkup()
579 static void wmi_evt_linkdown(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_linkdown() argument
581 struct net_device *ndev = wil_to_ndev(wil); in wmi_evt_linkdown()
585 wil_dbg_wmi(wil, "Link DOWN for CID %d, reason %d\n", in wmi_evt_linkdown()
588 if (cid >= ARRAY_SIZE(wil->sta)) { in wmi_evt_linkdown()
589 wil_err(wil, "Link DOWN for invalid CID %d\n", cid); in wmi_evt_linkdown()
593 wil->sta[cid].data_port_open = false; in wmi_evt_linkdown()
597 static void wmi_evt_ba_status(struct wil6210_priv *wil, int id, void *d, in wmi_evt_ba_status() argument
603 wil_dbg_wmi(wil, "BACK[%d] %s {%d} timeout %d AMSDU%s\n", in wmi_evt_ba_status()
610 wil_err(wil, "invalid ring id %d\n", evt->ringid); in wmi_evt_ba_status()
620 txdata = &wil->vring_tx_data[evt->ringid]; in wmi_evt_ba_status()
628 static void wmi_evt_addba_rx_req(struct wil6210_priv *wil, int id, void *d, in wmi_evt_addba_rx_req() argument
633 wil_addba_rx_request(wil, evt->cidxtid, evt->dialog_token, in wmi_evt_addba_rx_req()
638 static void wmi_evt_delba(struct wil6210_priv *wil, int id, void *d, int len) in wmi_evt_delba() argument
649 wil_dbg_wmi(wil, "DELBA CID %d TID %d from %s reason %d\n", in wmi_evt_delba()
656 for (i = 0; i < ARRAY_SIZE(wil->vring2cid_tid); i++) { in wmi_evt_delba()
657 if ((wil->vring2cid_tid[i][0] == cid) && in wmi_evt_delba()
658 (wil->vring2cid_tid[i][1] == tid)) { in wmi_evt_delba()
660 &wil->vring_tx_data[i]; in wmi_evt_delba()
662 wil_dbg_wmi(wil, "DELBA Tx vring %d\n", i); in wmi_evt_delba()
670 if (i >= ARRAY_SIZE(wil->vring2cid_tid)) in wmi_evt_delba()
671 wil_err(wil, "DELBA: unable to find Tx vring\n"); in wmi_evt_delba()
675 sta = &wil->sta[cid]; in wmi_evt_delba()
681 wil_tid_ampdu_rx_free(wil, r); in wmi_evt_delba()
688 void (*handler)(struct wil6210_priv *wil, int eventid,
711 void wmi_recv_cmd(struct wil6210_priv *wil) in wmi_recv_cmd() argument
715 struct wil6210_mbox_ring *r = &wil->mbox_ctl.rx; in wmi_recv_cmd()
722 if (!test_bit(wil_status_reset_done, wil->status)) { in wmi_recv_cmd()
723 wil_err(wil, "Reset in progress. Cannot handle WMI event\n"); in wmi_recv_cmd()
731 r->head = ioread32(wil->csr + HOST_MBOX + in wmi_recv_cmd()
736 wil_dbg_wmi(wil, "Mbox head %08x tail %08x\n", in wmi_recv_cmd()
739 wil_memcpy_fromio_32(&d_tail, wil->csr + HOSTADDR(r->tail), in wmi_recv_cmd()
742 wil_err(wil, "Mbox evt not owned by FW?\n"); in wmi_recv_cmd()
747 if (0 != wmi_read_hdr(wil, d_tail.addr, &hdr)) { in wmi_recv_cmd()
748 wil_err(wil, "Mbox evt at 0x%08x?\n", in wmi_recv_cmd()
753 wil_dbg_wmi(wil, "Mbox evt %04x %04x %04x %02x\n", in wmi_recv_cmd()
758 src = wmi_buffer(wil, d_tail.addr) + in wmi_recv_cmd()
770 iowrite32(0, wil->csr + HOSTADDR(r->tail) + in wmi_recv_cmd()
779 wil_dbg_wmi(wil, "WMI event 0x%04x MID %d @%d msec\n", in wmi_recv_cmd()
790 iowrite32(r->tail, wil->csr + HOST_MBOX + in wmi_recv_cmd()
794 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
795 list_add_tail(&evt->list, &wil->pending_wmi_ev); in wmi_recv_cmd()
796 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in wmi_recv_cmd()
797 q = queue_work(wil->wmi_wq, &wil->wmi_event_worker); in wmi_recv_cmd()
798 wil_dbg_wmi(wil, "queue_work -> %d\n", q); in wmi_recv_cmd()
801 wil_dbg_wmi(wil, "%s -> %d events queued\n", __func__, n); in wmi_recv_cmd()
804 int wmi_call(struct wil6210_priv *wil, u16 cmdid, void *buf, u16 len, in wmi_call() argument
810 mutex_lock(&wil->wmi_mutex); in wmi_call()
812 rc = __wmi_send(wil, cmdid, buf, len); in wmi_call()
816 wil->reply_id = reply_id; in wmi_call()
817 wil->reply_buf = reply; in wmi_call()
818 wil->reply_size = reply_size; in wmi_call()
819 remain = wait_for_completion_timeout(&wil->wmi_call, in wmi_call()
822 wil_err(wil, "wmi_call(0x%04x->0x%04x) timeout %d msec\n", in wmi_call()
826 wil_dbg_wmi(wil, in wmi_call()
831 wil->reply_id = 0; in wmi_call()
832 wil->reply_buf = NULL; in wmi_call()
833 wil->reply_size = 0; in wmi_call()
835 mutex_unlock(&wil->wmi_mutex); in wmi_call()
840 int wmi_echo(struct wil6210_priv *wil) in wmi_echo() argument
846 return wmi_call(wil, WMI_ECHO_CMDID, &cmd, sizeof(cmd), in wmi_echo()
850 int wmi_set_mac_address(struct wil6210_priv *wil, void *addr) in wmi_set_mac_address() argument
856 wil_dbg_wmi(wil, "Set MAC %pM\n", addr); in wmi_set_mac_address()
858 return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, &cmd, sizeof(cmd)); in wmi_set_mac_address()
861 int wmi_pcp_start(struct wil6210_priv *wil, int bi, u8 wmi_nettype, u8 chan) in wmi_pcp_start() argument
877 if (!wil->privacy) in wmi_pcp_start()
882 wil_info(wil, in wmi_pcp_start()
892 rc = wmi_call(wil, WMI_PCP_START_CMDID, &cmd, sizeof(cmd), in wmi_pcp_start()
903 int wmi_pcp_stop(struct wil6210_priv *wil) in wmi_pcp_stop() argument
905 return wmi_call(wil, WMI_PCP_STOP_CMDID, NULL, 0, in wmi_pcp_stop()
909 int wmi_set_ssid(struct wil6210_priv *wil, u8 ssid_len, const void *ssid) in wmi_set_ssid() argument
920 return wmi_send(wil, WMI_SET_SSID_CMDID, &cmd, sizeof(cmd)); in wmi_set_ssid()
923 int wmi_get_ssid(struct wil6210_priv *wil, u8 *ssid_len, void *ssid) in wmi_get_ssid() argument
932 rc = wmi_call(wil, WMI_GET_SSID_CMDID, NULL, 0, WMI_GET_SSID_EVENTID, in wmi_get_ssid()
947 int wmi_set_channel(struct wil6210_priv *wil, int channel) in wmi_set_channel() argument
953 return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, &cmd, sizeof(cmd)); in wmi_set_channel()
956 int wmi_get_channel(struct wil6210_priv *wil, int *channel) in wmi_get_channel() argument
964 rc = wmi_call(wil, WMI_GET_PCP_CHANNEL_CMDID, NULL, 0, in wmi_get_channel()
977 int wmi_p2p_cfg(struct wil6210_priv *wil, int channel) in wmi_p2p_cfg() argument
984 return wmi_send(wil, WMI_P2P_CFG_CMDID, &cmd, sizeof(cmd)); in wmi_p2p_cfg()
987 int wmi_del_cipher_key(struct wil6210_priv *wil, u8 key_index, in wmi_del_cipher_key() argument
997 return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); in wmi_del_cipher_key()
1000 int wmi_add_cipher_key(struct wil6210_priv *wil, u8 key_index, in wmi_add_cipher_key() argument
1016 return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, &cmd, sizeof(cmd)); in wmi_add_cipher_key()
1019 int wmi_set_ie(struct wil6210_priv *wil, u8 type, u16 ie_len, const void *ie) in wmi_set_ie() argument
1034 rc = wmi_send(wil, WMI_SET_APPIE_CMDID, cmd, len); in wmi_set_ie()
1048 int wmi_rxon(struct wil6210_priv *wil, bool on) in wmi_rxon() argument
1056 wil_info(wil, "%s(%s)\n", __func__, on ? "on" : "off"); in wmi_rxon()
1059 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, NULL, 0, in wmi_rxon()
1065 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, NULL, 0, in wmi_rxon()
1072 int wmi_rx_chain_add(struct wil6210_priv *wil, struct vring *vring) in wmi_rx_chain_add() argument
1074 struct wireless_dev *wdev = wil->wdev; in wmi_rx_chain_add()
1075 struct net_device *ndev = wil_to_ndev(wil); in wmi_rx_chain_add()
1103 cpu_to_le32((wil->monitor_flags & MONITOR_FLAG_CONTROL) in wmi_rx_chain_add()
1118 rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, &cmd, sizeof(cmd), in wmi_rx_chain_add()
1125 wil_dbg_misc(wil, "Rx init: status %d tail 0x%08x\n", in wmi_rx_chain_add()
1134 int wmi_get_temperature(struct wil6210_priv *wil, u32 *t_bb, u32 *t_rf) in wmi_get_temperature() argument
1147 rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, &cmd, sizeof(cmd), in wmi_get_temperature()
1160 int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac, u16 reason) in wmi_disconnect_sta() argument
1168 wil_dbg_wmi(wil, "%s(%pM, reason %d)\n", __func__, mac, reason); in wmi_disconnect_sta()
1170 return wmi_send(wil, WMI_DISCONNECT_STA_CMDID, &cmd, sizeof(cmd)); in wmi_disconnect_sta()
1173 int wmi_addba(struct wil6210_priv *wil, u8 ringid, u8 size, u16 timeout) in wmi_addba() argument
1182 wil_dbg_wmi(wil, "%s(ring %d size %d timeout %d)\n", __func__, in wmi_addba()
1185 return wmi_send(wil, WMI_VRING_BA_EN_CMDID, &cmd, sizeof(cmd)); in wmi_addba()
1188 int wmi_delba_tx(struct wil6210_priv *wil, u8 ringid, u16 reason) in wmi_delba_tx() argument
1195 wil_dbg_wmi(wil, "%s(ring %d reason %d)\n", __func__, in wmi_delba_tx()
1198 return wmi_send(wil, WMI_VRING_BA_DIS_CMDID, &cmd, sizeof(cmd)); in wmi_delba_tx()
1201 int wmi_delba_rx(struct wil6210_priv *wil, u8 cidxtid, u16 reason) in wmi_delba_rx() argument
1208 wil_dbg_wmi(wil, "%s(CID %d TID %d reason %d)\n", __func__, in wmi_delba_rx()
1211 return wmi_send(wil, WMI_RCP_DELBA_CMDID, &cmd, sizeof(cmd)); in wmi_delba_rx()
1214 int wmi_addba_rx_resp(struct wil6210_priv *wil, u8 cid, u8 tid, u8 token, in wmi_addba_rx_resp() argument
1236 wil_dbg_wmi(wil, in wmi_addba_rx_resp()
1240 rc = wmi_call(wil, WMI_RCP_ADDBA_RESP_CMDID, &cmd, sizeof(cmd), in wmi_addba_rx_resp()
1246 wil_err(wil, "ADDBA response failed with status %d\n", in wmi_addba_rx_resp()
1254 void wmi_event_flush(struct wil6210_priv *wil) in wmi_event_flush() argument
1258 wil_dbg_wmi(wil, "%s()\n", __func__); in wmi_event_flush()
1260 list_for_each_entry_safe(evt, t, &wil->pending_wmi_ev, list) { in wmi_event_flush()
1266 static bool wmi_evt_call_handler(struct wil6210_priv *wil, int id, in wmi_evt_call_handler() argument
1273 wmi_evt_handlers[i].handler(wil, id, d, len); in wmi_evt_call_handler()
1281 static void wmi_event_handle(struct wil6210_priv *wil, in wmi_event_handle() argument
1292 wil_dbg_wmi(wil, "Handle WMI 0x%04x (reply_id 0x%04x)\n", in wmi_event_handle()
1293 id, wil->reply_id); in wmi_event_handle()
1295 if (wil->reply_id && wil->reply_id == id) { in wmi_event_handle()
1296 if (wil->reply_buf) { in wmi_event_handle()
1297 memcpy(wil->reply_buf, wmi, in wmi_event_handle()
1298 min(len, wil->reply_size)); in wmi_event_handle()
1300 wmi_evt_call_handler(wil, id, evt_data, in wmi_event_handle()
1303 wil_dbg_wmi(wil, "Complete WMI 0x%04x\n", id); in wmi_event_handle()
1304 complete(&wil->wmi_call); in wmi_event_handle()
1309 if (!wmi_evt_call_handler(wil, id, evt_data, in wmi_event_handle()
1311 wil_err(wil, "Unhandled event 0x%04x\n", id); in wmi_event_handle()
1314 wil_err(wil, "Unknown event type\n"); in wmi_event_handle()
1323 static struct list_head *next_wmi_ev(struct wil6210_priv *wil) in next_wmi_ev() argument
1328 spin_lock_irqsave(&wil->wmi_ev_lock, flags); in next_wmi_ev()
1330 if (!list_empty(&wil->pending_wmi_ev)) { in next_wmi_ev()
1331 ret = wil->pending_wmi_ev.next; in next_wmi_ev()
1335 spin_unlock_irqrestore(&wil->wmi_ev_lock, flags); in next_wmi_ev()
1345 struct wil6210_priv *wil = container_of(work, struct wil6210_priv, in wmi_event_worker() local
1350 wil_dbg_wmi(wil, "Start %s\n", __func__); in wmi_event_worker()
1351 while ((lh = next_wmi_ev(wil)) != NULL) { in wmi_event_worker()
1353 wmi_event_handle(wil, &evt->event.hdr); in wmi_event_worker()
1356 wil_dbg_wmi(wil, "Finished %s\n", __func__); in wmi_event_worker()