]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: Notify VFs of all resets
authorMitch Williams <mitch.a.williams@intel.com>
Thu, 10 Mar 2016 22:59:46 +0000 (14:59 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 7 Jul 2016 17:40:46 +0000 (10:40 -0700)
Orabug: 23176970

Notify VFs in the reset interrupt handler, instead of the actual
reset initiation code. This allows the VFs to get properly notified for
all resets, including resets initiated by different PFs on the same
physical device.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit d3ce57344100023faa8f514eb66dfb110b53629c)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 3a6205b0c22c8ac3cb5b50c99caee37d6a2019eb..7c02b8caddb8cbad2d5731cdb38b00dd5fc2d202 100644 (file)
@@ -5495,8 +5495,6 @@ void i40e_do_reset(struct i40e_pf *pf, u32 reset_flags)
 
        WARN_ON(in_interrupt());
 
-       if (i40e_check_asq_alive(&pf->hw))
-               i40e_vc_notify_reset(pf);
 
        /* do the biggest reset indicated */
        if (reset_flags & BIT_ULL(__I40E_GLOBAL_RESET_REQUESTED)) {
@@ -6699,6 +6697,8 @@ static void i40e_prep_for_reset(struct i40e_pf *pf)
        clear_bit(__I40E_RESET_INTR_RECEIVED, &pf->state);
        if (test_and_set_bit(__I40E_RESET_RECOVERY_PENDING, &pf->state))
                return;
+       if (i40e_check_asq_alive(&pf->hw))
+               i40e_vc_notify_reset(pf);
 
        dev_dbg(&pf->pdev->dev, "Tearing down internal switch for reset\n");