]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
igb: loopback bits not correctly cleared from RCTL register
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 25 Nov 2008 09:04:03 +0000 (01:04 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 25 Nov 2008 09:04:03 +0000 (01:04 -0800)
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>
drivers/net/igb/igb_ethtool.c
drivers/net/igb/igb_main.c

index 8e9d295034ffa694129b2c8baf25632fb03baa8b..d5efbcc490675e1034109a5394b845d1dba9eb4a 100644 (file)
@@ -1339,8 +1339,9 @@ static int igb_setup_desc_rings(struct igb_adapter *adapter)
        wr32(E1000_RDLEN(0), rx_ring->size);
        wr32(E1000_RDH(0), 0);
        wr32(E1000_RDT(0), 0);
+       rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
        rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 |
-               E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
+               E1000_RCTL_RDMTS_HALF |
                (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
        wr32(E1000_RCTL, rctl);
        wr32(E1000_SRRCTL(0), 0);
index ae65fae4333d66aadb5ccbff5a5dd0da28726951..ab37ab03a45cfd3f96987f3140d59a6b5e2498ea 100644 (file)
@@ -1779,9 +1779,9 @@ static void igb_setup_rctl(struct igb_adapter *adapter)
        rctl = rd32(E1000_RCTL);
 
        rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
+       rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
 
-       rctl |= E1000_RCTL_EN | E1000_RCTL_BAM |
-               E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
+       rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_RDMTS_HALF |
                (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
 
        /*