Patch "ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths" has been added to the 4.7-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ixgbe-force-vlnctrl.vfe-to-be-set-in-all-vmdq-paths.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
f60439bc21e3337429838e477903214f5bd8277fMon Sep 17 00:00:00 2001
From: Alexander Duyck <[email protected]>
Date: Thu, 11 Aug 2016 14:51:56 -0700
Subject: ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths
From: Alexander Duyck <[email protected]>
commit f60439bc21e3337429838e477903214f5bd8277f upstream.
When I was adding the code for enabling VLAN promiscuous mode with SR-IOV enabled I had inadvertently left the VLNCTRL.VFE bit unchanged as I has assumed there was code in another path that was setting it when we enabled SR-IOV. This wasn't the case and as a result we were just disabling VLAN filtering for all the VFs apparently.
Also the previous patches were always clearing CFIEN which was always set to 0 by the hardware anyway so I am dropping the redundant bit clearing.
--- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-)
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +12 -6
@@ -4100,6 +4100,8 @@ static void ixgbe_vlan_promisc_enable(ststruct ixgbe_hw *hw = &adapter->hw;u32 vlnctrl, i; + vlnctrl =IXGBE_READ_REG (hw,IXGBE_VLNCTRL ); +switch (hw->mac.type) {case ixgbe_mac_82599EB:case ixgbe_mac_X540:
@@ -4112,8 +4114,7 @@ static void ixgbe_vlan_promisc_enable(st/* fall through */ case ixgbe_mac_82598EB:/* legacy case, we can just disable VLAN filtering */ - vlnctrl =IXGBE_READ_REG (hw,IXGBE_VLNCTRL ); - vlnctrl &= ~(IXGBE_VLNCTRL_VFE |IXGBE_VLNCTRL_CFIEN ); + vlnctrl &= ~IXGBE_VLNCTRL_VFE ;IXGBE_WRITE_REG (hw,IXGBE_VLNCTRL , vlnctrl);return ; }
@@ -4125,6 +4126,10 @@ static void ixgbe_vlan_promisc_enable(st/* Set flag so we don't redo unnecessary work */ adapter->flags2 |=IXGBE_FLAG2_VLAN_PROMISC ; +/* For VMDq and SR-IOV we must leave VLAN filtering enabled */ + vlnctrl |=IXGBE_VLNCTRL_VFE ; +IXGBE_WRITE_REG (hw,IXGBE_VLNCTRL , vlnctrl); +/* Add PF to all active pools */ for (i =IXGBE_VLVF_ENTRIES ; --i;) {u32 reg_offset =IXGBE_VLVFB (i *2 +VMDQ_P (0 ) /32 );
@@ -4191,6 +4196,11 @@ static void ixgbe_vlan_promisc_disable(sstruct ixgbe_hw *hw = &adapter->hw;u32 vlnctrl, i; +/* Set VLAN filtering to enabled */ + vlnctrl =IXGBE_READ_REG (hw,IXGBE_VLNCTRL ); + vlnctrl |=IXGBE_VLNCTRL_VFE ; +IXGBE_WRITE_REG (hw,IXGBE_VLNCTRL , vlnctrl); +switch (hw->mac.type) {case ixgbe_mac_82599EB:case ixgbe_mac_X540:
@@ -4202,10 +4212,6 @@ static void ixgbe_vlan_promisc_disable(sbreak ;/* fall through */ case ixgbe_mac_82598EB: - vlnctrl =IXGBE_READ_REG (hw,IXGBE_VLNCTRL ); - vlnctrl &= ~IXGBE_VLNCTRL_CFIEN ; - vlnctrl |=IXGBE_VLNCTRL_VFE ; -IXGBE_WRITE_REG (hw,IXGBE_VLNCTRL , vlnctrl);return ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/ixgbe-force-vlnctrl.vfe-to-be-set-in-all-vmdq-paths.patch queue-4.7/ixgbe-re-enable-ability-to-toggle-vlan-filtering.patch