igb: fix vlan filtering in promisc mode when not in VT mode
This patch fixes a VT mode check to make sure VLAN filters are disabled when in promisc mode and VT is not enabled. The problem with the previous check was that: E1000_MRQC_ENABLE_VMDQ is defined as 0x00000003 but when not in VT mode: mrqc |= E1000_MRQC_ENABLE_RSS_4Q (0x00000002) So the above check will trigger regardless if VT mode is being used or not. Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1eb9ac14c3
commit
7e44892c1b
|
@ -3739,9 +3739,8 @@ static void igb_set_rx_mode(struct net_device *netdev)
|
|||
rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE | E1000_RCTL_VFE);
|
||||
|
||||
if (netdev->flags & IFF_PROMISC) {
|
||||
u32 mrqc = rd32(E1000_MRQC);
|
||||
/* retain VLAN HW filtering if in VT mode */
|
||||
if (mrqc & E1000_MRQC_ENABLE_VMDQ)
|
||||
if (adapter->vfs_allocated_count)
|
||||
rctl |= E1000_RCTL_VFE;
|
||||
rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
|
||||
vmolr |= (E1000_VMOLR_ROPE | E1000_VMOLR_MPME);
|
||||
|
|
Loading…
Reference in a new issue