]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: do a proper reset when disabling a VF
authorMitch Williams <mitch.a.williams@intel.com>
Mon, 27 Apr 2015 18:57:14 +0000 (14:57 -0400)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Fri, 28 Aug 2015 15:11:51 +0000 (08:11 -0700)
Orabug: 21570582

The VF disable code was just whanging on the reset bit without properly
cleaning up the VF, which would leave the VF in an indeterminate state
from which it could not recover. Fix this by notifying the VF and then
by calling the normal VF reset routine.

Change-ID: I862b9dfa919368773cbdc212b805b520db2f7430
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Jim Young <james.m.young@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 54f455eeb56c0ab92db87bed6bd767d206d9e743)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 4070a22f16c8a2ca059f166b4dcbe1a2a29511a3..55b19f5e436ad2327455bcb4f721af2182734946 100644 (file)
@@ -160,13 +160,8 @@ void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
  **/
 static inline void i40e_vc_disable_vf(struct i40e_pf *pf, struct i40e_vf *vf)
 {
-       struct i40e_hw *hw = &pf->hw;
-       u32 reg;
-
-       reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id));
-       reg |= I40E_VPGEN_VFRTRIG_VFSWR_MASK;
-       wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg);
-       i40e_flush(hw);
+       i40e_vc_notify_vf_reset(vf);
+       i40e_reset_vf(vf, false);
 }
 
 /**