Merge "wil6210: stop TX queues when suspending"
This commit is contained in:
commit
ceffb12dba
2 changed files with 16 additions and 2 deletions
|
@ -98,6 +98,10 @@ static int wil_resume_keep_radio_on(struct wil6210_priv *wil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Wake all queues */
|
||||||
|
if (test_bit(wil_status_fwconnected, wil->status))
|
||||||
|
wil_update_net_queues_bh(wil, NULL, false);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (rc)
|
if (rc)
|
||||||
set_bit(wil_status_suspended, wil->status);
|
set_bit(wil_status_suspended, wil->status);
|
||||||
|
@ -113,6 +117,7 @@ static int wil_suspend_keep_radio_on(struct wil6210_priv *wil)
|
||||||
|
|
||||||
/* Prevent handling of new tx and wmi commands */
|
/* Prevent handling of new tx and wmi commands */
|
||||||
set_bit(wil_status_suspending, wil->status);
|
set_bit(wil_status_suspending, wil->status);
|
||||||
|
wil_update_net_queues_bh(wil, NULL, true);
|
||||||
|
|
||||||
if (!wil_is_tx_idle(wil)) {
|
if (!wil_is_tx_idle(wil)) {
|
||||||
wil_dbg_pm(wil, "Pending TX data, reject suspend\n");
|
wil_dbg_pm(wil, "Pending TX data, reject suspend\n");
|
||||||
|
@ -201,13 +206,17 @@ resume_after_fail:
|
||||||
clear_bit(wil_status_suspending, wil->status);
|
clear_bit(wil_status_suspending, wil->status);
|
||||||
rc = wmi_resume(wil);
|
rc = wmi_resume(wil);
|
||||||
/* if resume succeeded, reject the suspend */
|
/* if resume succeeded, reject the suspend */
|
||||||
if (!rc)
|
if (!rc) {
|
||||||
rc = -EBUSY;
|
rc = -EBUSY;
|
||||||
|
if (test_bit(wil_status_fwconnected, wil->status))
|
||||||
|
wil_update_net_queues_bh(wil, NULL, false);
|
||||||
|
}
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
reject_suspend:
|
reject_suspend:
|
||||||
clear_bit(wil_status_suspending, wil->status);
|
clear_bit(wil_status_suspending, wil->status);
|
||||||
|
if (test_bit(wil_status_fwconnected, wil->status))
|
||||||
|
wil_update_net_queues_bh(wil, NULL, false);
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1930,6 +1930,11 @@ static inline void __wil_update_net_queues(struct wil6210_priv *wil,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Do not wake the queues in suspend flow */
|
||||||
|
if (test_bit(wil_status_suspending, wil->status) ||
|
||||||
|
test_bit(wil_status_suspended, wil->status))
|
||||||
|
return;
|
||||||
|
|
||||||
/* check wake */
|
/* check wake */
|
||||||
for (i = 0; i < WIL6210_MAX_TX_RINGS; i++) {
|
for (i = 0; i < WIL6210_MAX_TX_RINGS; i++) {
|
||||||
struct vring *cur_vring = &wil->vring_tx[i];
|
struct vring *cur_vring = &wil->vring_tx[i];
|
||||||
|
|
Loading…
Add table
Reference in a new issue