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

Commit c43fe907 authored by Eliad Peller's avatar Eliad Peller Committed by Emmanuel Grumbach
Browse files

iwlwifi: return error if d0i3 was aborted



Allow the transport layer to return an error upon suspend.

Signed-off-by: default avatarEliad Peller <eliadx.peller@intel.com>
Reviewed-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 2d42801b
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -598,7 +598,7 @@ struct iwl_trans_ops {
			      u32 value);
	void (*ref)(struct iwl_trans *trans);
	void (*unref)(struct iwl_trans *trans);
	void (*suspend)(struct iwl_trans *trans);
	int  (*suspend)(struct iwl_trans *trans);
	void (*resume)(struct iwl_trans *trans);

	struct iwl_trans_dump_data *(*dump_data)(struct iwl_trans *trans);
@@ -807,10 +807,12 @@ static inline void iwl_trans_unref(struct iwl_trans *trans)
		trans->ops->unref(trans);
}

static inline void iwl_trans_suspend(struct iwl_trans *trans)
static inline int iwl_trans_suspend(struct iwl_trans *trans)
{
	if (trans->ops->suspend)
		trans->ops->suspend(trans);
	if (!trans->ops->suspend)
		return 0;

	return trans->ops->suspend(trans);
}

static inline void iwl_trans_resume(struct iwl_trans *trans)
+6 −2
Original line number Diff line number Diff line
@@ -1168,13 +1168,17 @@ static int iwl_mvm_enter_d0i3_sync(struct iwl_mvm *mvm)
int iwl_mvm_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan)
{
	struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
	int ret;

	ret = iwl_trans_suspend(mvm->trans);
	if (ret)
		return ret;

	iwl_trans_suspend(mvm->trans);
	mvm->trans->wowlan_d0i3 = wowlan->any;
	if (mvm->trans->wowlan_d0i3) {
		/* 'any' trigger means d0i3 usage */
		if (mvm->trans->d0i3_mode == IWL_D0I3_MODE_ON_SUSPEND) {
			int ret = iwl_mvm_enter_d0i3_sync(mvm);
			ret = iwl_mvm_enter_d0i3_sync(mvm);

			if (ret)
				return ret;