• Luca Coelho's avatar
    iwlwifi: mvm: don't overwrite the key indices in D3 entry · d6ee54a9
    Luca Coelho authored
    When entering D3, we need to use hardcoded key indices because the
    firmware requires that.  To do so, we are overwriting the HW key index
    in the keyconf structure, which makes it impossible to reuse the
    indices that were used before entering D3.  Additionally, we overwrite
    all the non-PTK keys with index 1, because the firmware only allows
    one non-PTK key to be set.  This is bad, because when we resume, we
    may try to set more than one key with index 1, which will obviously
    fail.
    
    To fix this, allow the callers to set a pre-defined index to use in
    iwl_mvm_set_sta_key() instead of relying on the hw_key_idx value from
    the keyconf struct (which requires overwriting it).  In normal cases,
    the caller can pass STA_KEY_IDX_INVALID, which will cause a new key
    offset to be chosen.  During HW_RESTART, we pass the offset that is in
    use.  And during D3 entry, we pass the hardcoded indices we need to
    use.
    
    Additionally, don't clear the fw_key_table in D3 entry, so that the
    flags are still set with the pre-D3 values when exiting D3.
    
    fixes=I3165c22362483f0152d9ec1d2a987fb5529727c1
    
    Fixes: b546dcd6 ("iwlwifi: mvm: don't reset key index on HW restart")
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    d6ee54a9
sta.c 49.7 KB