int rc = 0;
        struct pci_dev *pdev = to_pci_dev(dev);
        struct wil6210_priv *wil = pci_get_drvdata(pdev);
+       struct net_device *ndev = wil_to_ndev(wil);
+       bool keep_radio_on = ndev->flags & IFF_UP &&
+                            wil->keep_radio_on_during_sleep;
 
        wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system");
 
        if (rc)
                goto out;
 
-       rc = wil_suspend(wil, is_runtime);
+       rc = wil_suspend(wil, is_runtime, keep_radio_on);
        if (!rc) {
                wil->suspend_stats.successful_suspends++;
 
-               /* If platform device supports keep_radio_on_during_sleep
-                * it will control PCIe master
+               /* In case radio stays on, platform device will control
+                * PCIe master
                 */
-               if (!wil->keep_radio_on_during_sleep)
+               if (!keep_radio_on)
                        /* disable bus mastering */
                        pci_clear_master(pdev);
        }
        int rc = 0;
        struct pci_dev *pdev = to_pci_dev(dev);
        struct wil6210_priv *wil = pci_get_drvdata(pdev);
+       struct net_device *ndev = wil_to_ndev(wil);
+       bool keep_radio_on = ndev->flags & IFF_UP &&
+                            wil->keep_radio_on_during_sleep;
 
        wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system");
 
-       /* If platform device supports keep_radio_on_during_sleep it will
-        * control PCIe master
+       /* In case radio stays on, platform device will control
+        * PCIe master
         */
-       if (!wil->keep_radio_on_during_sleep)
+       if (!keep_radio_on)
                /* allow master */
                pci_set_master(pdev);
-       rc = wil_resume(wil, is_runtime);
+       rc = wil_resume(wil, is_runtime, keep_radio_on);
        if (rc) {
                wil_err(wil, "device failed to resume (%d)\n", rc);
                wil->suspend_stats.failed_resumes++;
-               if (!wil->keep_radio_on_during_sleep)
+               if (!keep_radio_on)
                        pci_clear_master(pdev);
        } else {
                wil->suspend_stats.successful_resumes++;
 
        return rc;
 }
 
-int wil_suspend(struct wil6210_priv *wil, bool is_runtime)
+int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on)
 {
        int rc = 0;
-       struct net_device *ndev = wil_to_ndev(wil);
-       bool keep_radio_on = ndev->flags & IFF_UP &&
-                            wil->keep_radio_on_during_sleep;
 
        wil_dbg_pm(wil, "suspend: %s\n", is_runtime ? "runtime" : "system");
 
        return rc;
 }
 
-int wil_resume(struct wil6210_priv *wil, bool is_runtime)
+int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on)
 {
        int rc = 0;
-       struct net_device *ndev = wil_to_ndev(wil);
-       bool keep_radio_on = ndev->flags & IFF_UP &&
-                            wil->keep_radio_on_during_sleep;
        unsigned long long suspend_time_usec = 0;
 
        wil_dbg_pm(wil, "resume: %s\n", is_runtime ? "runtime" : "system");
 
 void wil_pm_runtime_put(struct wil6210_priv *wil);
 
 int wil_can_suspend(struct wil6210_priv *wil, bool is_runtime);
-int wil_suspend(struct wil6210_priv *wil, bool is_runtime);
-int wil_resume(struct wil6210_priv *wil, bool is_runtime);
+int wil_suspend(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on);
+int wil_resume(struct wil6210_priv *wil, bool is_runtime, bool keep_radio_on);
 bool wil_is_wmi_idle(struct wil6210_priv *wil);
 int wmi_resume(struct wil6210_priv *wil);
 int wmi_suspend(struct wil6210_priv *wil);