• Jacob Keller's avatar
    fm10k: split fm10k_reinit into two functions · 40de1fad
    Jacob Keller authored
    There are several flows in the driver which perform the similar function
    of tearing down software and restoring software to recover from certain
    errors or PCIe events, including:
    
      * fm10k_reinit
      * fm10k_suspend/resume
      * fm10k_io_error_detected/fm10k_io_resume
    
    In addition, we want to implement a .reset_notify() handler as well
    which will also perform similar function.
    
    Rework how the driver codes reset and resume flows by separating out the
    reinit logic into two functions "fm10k_prepare_for_reset" and
    "fm10k_handle_reset". This first step will allow us to re-use this
    functionality in the similar blocks of code instead of re-coding the
    same sequence of events slightly different.
    
    The end result should be more maintainable and correct, fixing several
    inconsistencies with the work flow.
    
    The new functions expect to take the rtnl_lock() themselves, and it does
    have the unfortunate side effect of having the reinit flow take then
    release then take the rtnl_lock. However, this minor downside is
    out weighted by the benefits of code reduction and reducing needless
    difference between these flows.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarKrishneil Singh <Krishneil.k.singh@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    40de1fad
fm10k_pci.c 65.3 KB