diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2008-11-25 04:04:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-25 04:04:03 -0500 |
commit | 69d728baf620839d1a3c874eecac316729f89de4 (patch) | |
tree | 52be287a59e4f2f4cd089239b02c5488408cfff7 | |
parent | 9b07f3d3157487e6467dfa4640f7fb9446165494 (diff) |
igb: loopback bits not correctly cleared from RCTL register
This change forces the bits to 0 by using an &= operation with an inverted
mask of all options instead of using an |= with a value of 0.
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>
-rw-r--r-- | drivers/net/igb/igb_ethtool.c | 3 | ||||
-rw-r--r-- | drivers/net/igb/igb_main.c | 4 |
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c index 8e9d295034ff..d5efbcc49067 100644 --- a/drivers/net/igb/igb_ethtool.c +++ b/drivers/net/igb/igb_ethtool.c | |||
@@ -1339,8 +1339,9 @@ static int igb_setup_desc_rings(struct igb_adapter *adapter) | |||
1339 | wr32(E1000_RDLEN(0), rx_ring->size); | 1339 | wr32(E1000_RDLEN(0), rx_ring->size); |
1340 | wr32(E1000_RDH(0), 0); | 1340 | wr32(E1000_RDH(0), 0); |
1341 | wr32(E1000_RDT(0), 0); | 1341 | wr32(E1000_RDT(0), 0); |
1342 | rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC); | ||
1342 | rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 | | 1343 | rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 | |
1343 | E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | | 1344 | E1000_RCTL_RDMTS_HALF | |
1344 | (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); | 1345 | (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); |
1345 | wr32(E1000_RCTL, rctl); | 1346 | wr32(E1000_RCTL, rctl); |
1346 | wr32(E1000_SRRCTL(0), 0); | 1347 | wr32(E1000_SRRCTL(0), 0); |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index ae65fae4333d..ab37ab03a45c 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -1779,9 +1779,9 @@ static void igb_setup_rctl(struct igb_adapter *adapter) | |||
1779 | rctl = rd32(E1000_RCTL); | 1779 | rctl = rd32(E1000_RCTL); |
1780 | 1780 | ||
1781 | rctl &= ~(3 << E1000_RCTL_MO_SHIFT); | 1781 | rctl &= ~(3 << E1000_RCTL_MO_SHIFT); |
1782 | rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC); | ||
1782 | 1783 | ||
1783 | rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | | 1784 | rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_RDMTS_HALF | |
1784 | E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | | ||
1785 | (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); | 1785 | (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); |
1786 | 1786 | ||
1787 | /* | 1787 | /* |