When the driver's resume function can't completely
restore the configuration in the device, it returns
1 from the callback which will be treated like a HW
restart request, but done directly.
In this case, also call the driver's restart_complete()
function so it can finish the reconfiguration there.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  *
  * @restart_complete: Called after a call to ieee80211_restart_hw(), when the
  *     reconfiguration has completed. This can help the driver implement the
- *     reconfiguration step. This callback may sleep.
+ *     reconfiguration step. Also called when reconfiguring because the
+ *     driver's resume function returned 1, as this is just like an "inline"
+ *     hardware restart. This callback may sleep.
+ *
  */
 struct ieee80211_ops {
        void (*tx)(struct ieee80211_hw *hw,
 
        struct ieee80211_chanctx *ctx;
        struct sta_info *sta;
        int res, i;
-#ifdef CONFIG_PM
        bool reconfig_due_to_wowlan = false;
 
+#ifdef CONFIG_PM
        if (local->suspended)
                local->resuming = true;
 
         * If this is for hw restart things are still running.
         * We may want to change that later, however.
         */
-       if (!local->suspended) {
+       if (!local->suspended || reconfig_due_to_wowlan)
                drv_restart_complete(local);
+
+       if (!local->suspended)
                return 0;
-       }
 
 #ifdef CONFIG_PM
        /* first set suspended false, then resuming */