diff --git a/drivers/wlan/third_party/atheros/ath10k/wmi.c b/drivers/wlan/third_party/atheros/ath10k/wmi.c
index 98af079..6d7f6bf 100644
--- a/drivers/wlan/third_party/atheros/ath10k/wmi.c
+++ b/drivers/wlan/third_party/atheros/ath10k/wmi.c
@@ -5260,22 +5260,22 @@
 out:
     dev_kfree_skb(skb);
 }
+#endif // NEEDS PORTING
 
-static void ath10k_wmi_10_2_op_rx(struct ath10k* ar, struct sk_buff* skb) {
+static void ath10k_wmi_10_2_op_rx(struct ath10k* ar, struct ath10k_msg_buf* msg_buf) {
     struct wmi_cmd_hdr* cmd_hdr;
     enum wmi_10_2_event_id id;
     bool consumed;
 
-    cmd_hdr = (struct wmi_cmd_hdr*)skb->data;
-    id = MS(cmd_hdr->cmd_id, WMI_CMD_HDR_CMD_ID);
-
-    if (skb_pull(skb, sizeof(struct wmi_cmd_hdr)) == NULL) {
+    if (ath10k_msg_buf_get_payload_offset(ATH10K_MSG_TYPE_WMI) > msg_buf->used) {
         goto out;
     }
 
-    trace_ath10k_wmi_event(ar, id, skb->data, skb->len);
+    msg_buf->type = ATH10K_MSG_TYPE_WMI;
+    cmd_hdr = ath10k_msg_buf_get_header(msg_buf, ATH10K_MSG_TYPE_WMI);
+    id = MS(cmd_hdr->cmd_id, WMI_CMD_HDR_CMD_ID);
 
-    consumed = ath10k_tm_event_wmi(ar, id, skb);
+    consumed = ath10k_tm_event_wmi(ar, id, msg_buf);
 
     /* Ready event must be handled normally also in UTF mode so that we
      * know the UTF firmware has booted, others we are just bypass WMI
@@ -5289,104 +5289,132 @@
 
     switch (id) {
     case WMI_10_2_MGMT_RX_EVENTID:
-        ath10k_wmi_event_mgmt_rx(ar, skb);
+        ath10k_wmi_event_mgmt_rx(ar, msg_buf);
         /* mgmt_rx() owns the skb now! */
         return;
     case WMI_10_2_SCAN_EVENTID:
-        ath10k_wmi_event_scan(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_SCAN_EVENTID unimplemented\n");
+        // ath10k_wmi_event_scan(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_CHAN_INFO_EVENTID:
-        ath10k_wmi_event_chan_info(ar, skb);
+        ath10k_err("WMI_10_2_CHAN_INFO_EVENTID unimplemented\n");
+        // ath10k_wmi_event_chan_info(ar, skb);
         break;
     case WMI_10_2_ECHO_EVENTID:
-        ath10k_wmi_event_echo(ar, skb);
+        ath10k_wmi_event_echo(ar, msg_buf);
         break;
     case WMI_10_2_DEBUG_MESG_EVENTID:
-        ath10k_wmi_event_debug_mesg(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_DEBUG_MESG_EVENTID unimplemented\n");
+        // ath10k_wmi_event_debug_mesg(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_UPDATE_STATS_EVENTID:
-        ath10k_wmi_event_update_stats(ar, skb);
+        ath10k_err("WMI_10_2_UPDATE_STATS_EVENTID unimplemented\n");
+        // ath10k_wmi_event_update_stats(ar, skb);
         break;
     case WMI_10_2_VDEV_START_RESP_EVENTID:
-        ath10k_wmi_event_vdev_start_resp(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_VDEV_START_RESP_EVENTID unimplemented\n");
+        // ath10k_wmi_event_vdev_start_resp(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_VDEV_STOPPED_EVENTID:
-        ath10k_wmi_event_vdev_stopped(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_VDEV_STOPPED_EVENTID unimplemented\n");
+        // ath10k_wmi_event_vdev_stopped(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_PEER_STA_KICKOUT_EVENTID:
-        ath10k_wmi_event_peer_sta_kickout(ar, skb);
+        ath10k_err("WMI_10_2_PEER_STA_KICKOUT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_peer_sta_kickout(ar, skb);
         break;
     case WMI_10_2_HOST_SWBA_EVENTID:
-        ath10k_wmi_event_host_swba(ar, skb);
+        ath10k_err("WMI_10_2_HOST_SWBA_EVENTID unimplemented\n");
+        // ath10k_wmi_event_host_swba(ar, skb);
         break;
     case WMI_10_2_TBTTOFFSET_UPDATE_EVENTID:
-        ath10k_wmi_event_tbttoffset_update(ar, skb);
+        ath10k_err("WMI_10_2_TBTTOFFSET_UPDATE_EVENTID unimplemented\n");
+        // ath10k_wmi_event_tbttoffset_update(ar, skb);
         break;
     case WMI_10_2_PHYERR_EVENTID:
-        ath10k_wmi_event_phyerr(ar, skb);
+        ath10k_err("WMI_10_2_PHYERR_EVENTID unimplemented\n");
+        // ath10k_wmi_event_phyerr(ar, skb);
         break;
     case WMI_10_2_ROAM_EVENTID:
-        ath10k_wmi_event_roam(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_ROAM_EVENTID unimplemented\n");
+        // ath10k_wmi_event_roam(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_PROFILE_MATCH:
-        ath10k_wmi_event_profile_match(ar, skb);
+        ath10k_err("WMI_10_2_PROFILE_MATCH unimplemented\n");
+        // ath10k_wmi_event_profile_match(ar, skb);
         break;
     case WMI_10_2_DEBUG_PRINT_EVENTID:
-        ath10k_wmi_event_debug_print(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_DEBUG_PRINT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_debug_print(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_PDEV_QVIT_EVENTID:
-        ath10k_wmi_event_pdev_qvit(ar, skb);
+        ath10k_err("WMI_10_2_PDEV_QVIT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_pdev_qvit(ar, skb);
         break;
     case WMI_10_2_WLAN_PROFILE_DATA_EVENTID:
-        ath10k_wmi_event_wlan_profile_data(ar, skb);
+        ath10k_err("WMI_10_2_WLAN_PROFILE_DATA_EVENTID unimplemented\n");
+        // ath10k_wmi_event_wlan_profile_data(ar, skb);
         break;
     case WMI_10_2_RTT_MEASUREMENT_REPORT_EVENTID:
-        ath10k_wmi_event_rtt_measurement_report(ar, skb);
+        ath10k_err("WMI_10_2_RTT_MEASUREMENT_REPORT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_rtt_measurement_report(ar, skb);
         break;
     case WMI_10_2_TSF_MEASUREMENT_REPORT_EVENTID:
-        ath10k_wmi_event_tsf_measurement_report(ar, skb);
+        ath10k_err("WMI_10_2_TSF_MEASUREMENT_REPORT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_tsf_measurement_report(ar, skb);
         break;
     case WMI_10_2_RTT_ERROR_REPORT_EVENTID:
-        ath10k_wmi_event_rtt_error_report(ar, skb);
+        ath10k_err("WMI_10_2_RTT_ERROR_REPORT_EVENTID unimplemented\n");
+        // ath10k_wmi_event_rtt_error_report(ar, skb);
         break;
     case WMI_10_2_WOW_WAKEUP_HOST_EVENTID:
-        ath10k_wmi_event_wow_wakeup_host(ar, skb);
+        ath10k_err("WMI_10_2_WOW_WAKEUP_HOST_EVENTID unimplemented\n");
+        // ath10k_wmi_event_wow_wakeup_host(ar, skb);
         break;
     case WMI_10_2_DCS_INTERFERENCE_EVENTID:
-        ath10k_wmi_event_dcs_interference(ar, skb);
+        ath10k_err("WMI_10_2_DCS_INTERFERENCE_EVENTID unimplemented\n");
+        // ath10k_wmi_event_dcs_interference(ar, skb);
         break;
     case WMI_10_2_PDEV_TPC_CONFIG_EVENTID:
-        ath10k_wmi_event_pdev_tpc_config(ar, skb);
+        ath10k_err("WMI_10_2_PDEV_TPC_CONFIG_EVENTID unimplemented\n");
+        // ath10k_wmi_event_pdev_tpc_config(ar, skb);
         break;
     case WMI_10_2_INST_RSSI_STATS_EVENTID:
-        ath10k_wmi_event_inst_rssi_stats(ar, skb);
+        ath10k_err("WMI_10_2_INST_RSSI_STATS_EVENTID unimplemented\n");
+        // ath10k_wmi_event_inst_rssi_stats(ar, skb);
         break;
     case WMI_10_2_VDEV_STANDBY_REQ_EVENTID:
-        ath10k_wmi_event_vdev_standby_req(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_VDEV_STANDBY_REQ_EVENTID unimplemented\n");
+        // ath10k_wmi_event_vdev_standby_req(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_VDEV_RESUME_REQ_EVENTID:
-        ath10k_wmi_event_vdev_resume_req(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_VDEV_RESUME_REQ_EVENTID unimplemented\n");
+        // ath10k_wmi_event_vdev_resume_req(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_SERVICE_READY_EVENTID:
-        ath10k_wmi_event_service_ready(ar, skb);
+        ath10k_err("WMI_10_2_SERVICE_READY_EVENTID unimplemented\n");
+        // ath10k_wmi_event_service_ready(ar, skb);
         return;
     case WMI_10_2_READY_EVENTID:
-        ath10k_wmi_event_ready(ar, skb);
-        ath10k_wmi_queue_set_coverage_class_work(ar);
+        ath10k_err("WMI_10_2_READY_EVENTID unimplemented\n");
+        // ath10k_wmi_event_ready(ar, skb);
+        // ath10k_wmi_queue_set_coverage_class_work(ar);
         break;
     case WMI_10_2_PDEV_TEMPERATURE_EVENTID:
-        ath10k_wmi_event_temperature(ar, skb);
+        ath10k_err("WMI_10_2_PDEV_TEMPERATURE_EVENTID unimplemented\n");
+        // ath10k_wmi_event_temperature(ar, skb);
         break;
     case WMI_10_2_PDEV_BSS_CHAN_INFO_EVENTID:
-        ath10k_wmi_event_pdev_bss_chan_info(ar, skb);
+        ath10k_err("WMI_10_2_PDEV_BSS_CHAN_INFO_EVENTID unimplemented\n");
+        // ath10k_wmi_event_pdev_bss_chan_info(ar, skb);
         break;
     case WMI_10_2_RTT_KEEPALIVE_EVENTID:
     case WMI_10_2_GPIO_INPUT_EVENTID:
@@ -5404,9 +5432,10 @@
     }
 
 out:
-    dev_kfree_skb(skb);
+    ath10k_msg_buf_free(msg_buf);
 }
 
+#if 0 // NEEDS PORTING
 static void ath10k_wmi_10_4_op_rx(struct ath10k* ar, struct sk_buff* skb) {
     struct wmi_cmd_hdr* cmd_hdr;
     enum wmi_10_4_event_id id;
@@ -8149,8 +8178,8 @@
 };
 
 static const struct wmi_ops wmi_10_2_4_ops = {
-#if 0 // NEEDS PORTING
     .rx = ath10k_wmi_10_2_op_rx,
+#if 0 // NEEDS PORTING
     .pull_fw_stats = ath10k_wmi_10_2_4_op_pull_fw_stats,
     .gen_init = ath10k_wmi_10_2_op_gen_init,
     .gen_peer_assoc = ath10k_wmi_10_2_op_gen_peer_assoc,
@@ -8213,8 +8242,7 @@
     .gen_delba_send = ath10k_wmi_op_gen_delba_send,
     .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
     .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
-    .gen_pdev_enable_adaptive_cca =
-    ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
+    .gen_pdev_enable_adaptive_cca = ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
     .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
 #endif // NEEDS PORTING
     /* .gen_bcn_tmpl not implemented */
