• Luciano Coelho's avatar
    iwlwifi: mvm: make sure d0i3 exit work runs before suspending · cf8c3cff
    Luciano Coelho authored
    If we are in d0i3 when entering suspend, we leave d0i3 so that
    mac80211 can call us to remove connections or whatever before going to
    suspend.  We do this by calling pm_runtime_resume() early in the slave
    transport flow and reactivating it later, when the wiphy suspend flow
    runs.
    
    The problem is that we queue a work in order to leave d0i3.  If this
    work hasn't run yet when the wiphy suspend flow is called, we have a
    race and entering d0i3 fails (because we're still holding the
    IWL_MVM_REF_EXIT_WORK reference).
    
    To solve this, simply flush the d0i3_exit_work at the beginning of the
    iwl_mvm_suspend() function.
    Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
    cf8c3cff
d3.c 54.7 KB