|
@@ -113,13 +113,16 @@ int ixgbe_set_vf_vlan(struct ixgbe_adapter *adapter, int add, int vid, u32 vf)
|
|
|
}
|
|
|
|
|
|
|
|
|
-void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf)
|
|
|
+void ixgbe_set_vmolr(struct ixgbe_hw *hw, u32 vf, bool aupe)
|
|
|
{
|
|
|
u32 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf));
|
|
|
- vmolr |= (IXGBE_VMOLR_AUPE |
|
|
|
- IXGBE_VMOLR_ROMPE |
|
|
|
+ vmolr |= (IXGBE_VMOLR_ROMPE |
|
|
|
IXGBE_VMOLR_ROPE |
|
|
|
IXGBE_VMOLR_BAM);
|
|
|
+ if (aupe)
|
|
|
+ vmolr |= IXGBE_VMOLR_AUPE;
|
|
|
+ else
|
|
|
+ vmolr &= ~IXGBE_VMOLR_AUPE;
|
|
|
IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr);
|
|
|
}
|
|
|
|
|
@@ -128,7 +131,7 @@ inline void ixgbe_vf_reset_event(struct ixgbe_adapter *adapter, u32 vf)
|
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
|
|
|
|
/* reset offloads to defaults */
|
|
|
- ixgbe_set_vmolr(hw, vf);
|
|
|
+ ixgbe_set_vmolr(hw, vf, true);
|
|
|
|
|
|
|
|
|
/* reset multicast table array for vf */
|