iwlwifi: return error if d0i3 was aborted
Allow the transport layer to return an error upon suspend. Signed-off-by: Eliad Peller <eliadx.peller@intel.com> Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
2d42801bd6
commit
c43fe907fe
@ -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)
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user