• Dawid Wesierski's avatar
    ice: Fix ice VF reset during iavf initialization · 7255355a
    Dawid Wesierski authored
    Fix the current implementation that causes ice_trigger_vf_reset()
    to start resetting the VF even when the VF-NIC is still initializing.
    
    When we reset NIC with ice driver it can interfere with
    iavf-vf initialization e.g. during consecutive resets induced by ice
    
    iavf                ice
      |                  |
      |<-----------------|
      |            ice resets vf
     iavf                |
     reset               |
     start               |
      |<-----------------|
      |             ice resets vf
      |             causing iavf
      |             initialization
      |             error
      |                  |
     iavf
     reset
     end
    
    This leads to a series of -53 errors
    (failed to init adminq) from the IAVF.
    
    Change the state of the vf_state field to be not active when the IAVF
    is still initializing. Make sure to wait until receiving the message on
    the message box to ensure that the vf is ready and initializded.
    
    In simple terms we use the ACTIVE flag to make sure that the ice
    driver knows if the iavf is ready for another reset
    
      iavf                  ice
        |                    |
        |                    |
        |<------------- ice resets vf
      iavf           vf_state != ACTIVE
      reset                  |
      start                  |
        |                    |
        |                    |
      iavf                   |
      reset-------> vf_state == ACTIVE
      end              ice resets vf
        |                    |
        |                    |
    
    Fixes: c54d209c ("ice: Wait for VF to be reset/ready before configuration")
    Signed-off-by: default avatarDawid Wesierski <dawidx.wesierski@intel.com>
    Signed-off-by: default avatarKamil Maziarz <kamil.maziarz@intel.com>
    Acked-by: default avatarJacob Keller <Jacob.e.keller@intel.com>
    Tested-by: default avatarRafal Romanowski <rafal.romanowski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    7255355a
ice_sriov.c 45.4 KB