diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2010-03-22 14:07:46 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-22 18:30:04 -0700 |
commit | 52a1dd4d15cc28da5d3e9bfb1526c314d65fdff8 (patch) | |
tree | 04e3d0fecad1ab7ee0c7523eaed98cbe3fad5160 /drivers | |
parent | 411f557c3accbaa1e2b378d29aeaffffbec39ccc (diff) | |
download | kernel_samsung_smdk4412-52a1dd4d15cc28da5d3e9bfb1526c314d65fdff8.zip kernel_samsung_smdk4412-52a1dd4d15cc28da5d3e9bfb1526c314d65fdff8.tar.gz kernel_samsung_smdk4412-52a1dd4d15cc28da5d3e9bfb1526c314d65fdff8.tar.bz2 |
igb: cleanup usage of virtualization registers
The igb driver was incorrectly attempting to write to registers that do not
exist on 82580 hardware. This wasn't causing any issues that I can tell,
but it is not recommended behavior either so I have changed this so we are
determining which registers to write to based on mac type.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/igb/igb_main.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 45a0e4f..3664915 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c @@ -6137,19 +6137,23 @@ static void igb_vmm_control(struct igb_adapter *adapter) struct e1000_hw *hw = &adapter->hw; u32 reg; - /* replication is not supported for 82575 */ - if (hw->mac.type == e1000_82575) + switch (hw->mac.type) { + case e1000_82575: + default: + /* replication is not supported for 82575 */ return; - - /* enable replication vlan tag stripping */ - reg = rd32(E1000_RPLOLR); - reg |= E1000_RPLOLR_STRVLAN; - wr32(E1000_RPLOLR, reg); - - /* notify HW that the MAC is adding vlan tags */ - reg = rd32(E1000_DTXCTL); - reg |= E1000_DTXCTL_VLAN_ADDED; - wr32(E1000_DTXCTL, reg); + case e1000_82576: + /* notify HW that the MAC is adding vlan tags */ + reg = rd32(E1000_DTXCTL); + reg |= E1000_DTXCTL_VLAN_ADDED; + wr32(E1000_DTXCTL, reg); + case e1000_82580: + /* enable replication vlan tag stripping */ + reg = rd32(E1000_RPLOLR); + reg |= E1000_RPLOLR_STRVLAN; + wr32(E1000_RPLOLR, reg); + break; + } if (adapter->vfs_allocated_count) { igb_vmdq_set_loopback_pf(hw, true); |