• Shahar S Matityahu's avatar
    iwlwifi: trans: Clear persistence bit when starting the FW · 8954e1eb
    Shahar S Matityahu authored
    In D3 suspend flow in 9260 gen2 HW, the NIC receives two PERST signals.
    The first PERST is expected and indicates the device on coming resume flow.
    The second PERST causes FW restart FW restart.
    In order to avoid this issue, the FW set the persistence bit on.
    Once this bit is set, the FW ignores reset attempts.
    The problem is when the FW gets assert during D3 and then the persistence
    bit is set and causes the FW to ignore reset.
    To handle this issue, the FW opens the preg bit which allows access
    to the persistence bit, so that the driver clear the persistence bit
    and reset the NIC.
    
    The flow is as follows:
    the driver checks if the persistence bit is set.
    If the bit is set, the driver checks if he can clear the bit.
    If the driver can not clear the bit then there is no point to continue
    configuring the NIC since it will fail.
    
    The fix was added is in start HW flow instead of the resume flow since in
    general, if the persistence bit is set, the driver can not start the FW.
    So it is good to check it when we start configuring the NIC.
    
    The driver does not need to close the preg bit since the FW close it
    during the start flow.
    Signed-off-by: default avatarShahar S Matityahu <shahar.s.matityahu@intel.com>
    Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
    8954e1eb
iwl-prph.h 15.3 KB