|
|
@@ -2816,7 +2816,18 @@ static void wmi_event_handle(struct wil6210_priv *wil,
|
|
|
/* check if someone waits for this event */
|
|
|
if (wil->reply_id && wil->reply_id == id &&
|
|
|
wil->reply_mid == mid) {
|
|
|
- WARN_ON(wil->reply_buf);
|
|
|
+ if (wil->reply_buf) {
|
|
|
+ /* event received while wmi_call is waiting
|
|
|
+ * with a buffer. Such event should be handled
|
|
|
+ * in wmi_recv_cmd function. Handling the event
|
|
|
+ * here means a previous wmi_call was timeout.
|
|
|
+ * Drop the event and do not handle it.
|
|
|
+ */
|
|
|
+ wil_err(wil,
|
|
|
+ "Old event (%d, %s) while wmi_call is waiting. Drop it and Continue waiting\n",
|
|
|
+ id, eventid2name(id));
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
wmi_evt_call_handler(vif, id, evt_data,
|
|
|
len - sizeof(*wmi));
|