|
@@ -5124,6 +5124,7 @@ static void ath10k_wmi_10_2_op_rx(struct ath10k *ar, struct sk_buff *skb)
|
|
|
{
|
|
|
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(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID);
|
|
@@ -5133,6 +5134,18 @@ static void ath10k_wmi_10_2_op_rx(struct ath10k *ar, struct sk_buff *skb)
|
|
|
|
|
|
trace_ath10k_wmi_event(ar, id, skb->data, skb->len);
|
|
|
|
|
|
+ consumed = ath10k_tm_event_wmi(ar, id, skb);
|
|
|
+
|
|
|
+ /* 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
|
|
|
+ * events to testmode.
|
|
|
+ */
|
|
|
+ if (consumed && id != WMI_10_2_READY_EVENTID) {
|
|
|
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
|
|
|
+ "wmi testmode consumed 0x%x\n", id);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
switch (id) {
|
|
|
case WMI_10_2_MGMT_RX_EVENTID:
|
|
|
ath10k_wmi_event_mgmt_rx(ar, skb);
|
|
@@ -5248,6 +5261,7 @@ 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;
|
|
|
+ bool consumed;
|
|
|
|
|
|
cmd_hdr = (struct wmi_cmd_hdr *)skb->data;
|
|
|
id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID);
|
|
@@ -5257,6 +5271,18 @@ static void ath10k_wmi_10_4_op_rx(struct ath10k *ar, struct sk_buff *skb)
|
|
|
|
|
|
trace_ath10k_wmi_event(ar, id, skb->data, skb->len);
|
|
|
|
|
|
+ consumed = ath10k_tm_event_wmi(ar, id, skb);
|
|
|
+
|
|
|
+ /* 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
|
|
|
+ * events to testmode.
|
|
|
+ */
|
|
|
+ if (consumed && id != WMI_10_4_READY_EVENTID) {
|
|
|
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
|
|
|
+ "wmi testmode consumed 0x%x\n", id);
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
switch (id) {
|
|
|
case WMI_10_4_MGMT_RX_EVENTID:
|
|
|
ath10k_wmi_event_mgmt_rx(ar, skb);
|