Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f21b0ad authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211: call restart complete at wowlan resume time



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: default avatarJohannes Berg <johannes.berg@intel.com>
parent d888130a
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -2488,7 +2488,10 @@ enum ieee80211_rate_control_changed {
 *
 * @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,
+4 −3
Original line number Diff line number Diff line
@@ -1358,9 +1358,9 @@ int ieee80211_reconfig(struct ieee80211_local *local)
	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;

@@ -1656,10 +1656,11 @@ int ieee80211_reconfig(struct ieee80211_local *local)
	 * 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 */