aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000/e1000_ethtool.c
diff options
context:
space:
mode:
authorJeff Kirsher <jeffrey.t.kirsher@intel.com>2006-03-02 21:21:24 -0500
committerroot <root@jk-desktop.jf.intel.com>2006-03-02 21:21:24 -0500
commit8704163987882f8b989e8143ad1f87c6b7229a13 (patch)
tree24e16b012722402cedba6f9fbc10dcda4a5eef20 /drivers/net/e1000/e1000_ethtool.c
parent6418ecc68e1d9416451b6f78ebb2c0b077e0abf2 (diff)
e1000: Fixed the following issues with ESB2 (requires ESB2 support):
- Add restriction for ESB2 to MTU size <=9216 - Removed FIFO errors which were not being used - Fixed issues with loopback - Power management change for saving state and config space - WA to disable recieves and reset device on link loss. Reset needed to be done outside the interrupt context - modified existing tx_timeout_task Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: John Ronciak <john.ronciak@intel.com>
Diffstat (limited to 'drivers/net/e1000/e1000_ethtool.c')
-rw-r--r--drivers/net/e1000/e1000_ethtool.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 0d6a16c5f8cd..44d39f1d8298 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -67,7 +67,6 @@ static const struct e1000_stats e1000_gstrings_stats[] = {
67 { "rx_over_errors", E1000_STAT(net_stats.rx_over_errors) }, 67 { "rx_over_errors", E1000_STAT(net_stats.rx_over_errors) },
68 { "rx_crc_errors", E1000_STAT(net_stats.rx_crc_errors) }, 68 { "rx_crc_errors", E1000_STAT(net_stats.rx_crc_errors) },
69 { "rx_frame_errors", E1000_STAT(net_stats.rx_frame_errors) }, 69 { "rx_frame_errors", E1000_STAT(net_stats.rx_frame_errors) },
70 { "rx_fifo_errors", E1000_STAT(net_stats.rx_fifo_errors) },
71 { "rx_no_buffer_count", E1000_STAT(stats.rnbc) }, 70 { "rx_no_buffer_count", E1000_STAT(stats.rnbc) },
72 { "rx_missed_errors", E1000_STAT(net_stats.rx_missed_errors) }, 71 { "rx_missed_errors", E1000_STAT(net_stats.rx_missed_errors) },
73 { "tx_aborted_errors", E1000_STAT(net_stats.tx_aborted_errors) }, 72 { "tx_aborted_errors", E1000_STAT(net_stats.tx_aborted_errors) },
@@ -1253,6 +1252,10 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
1253 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140); 1252 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140);
1254 /* autoneg off */ 1253 /* autoneg off */
1255 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140); 1254 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140);
1255 } else if (adapter->hw.phy_type == e1000_phy_gg82563) {
1256 e1000_write_phy_reg(&adapter->hw,
1257 GG82563_PHY_KMRN_MODE_CTRL,
1258 0x1CE);
1256 } 1259 }
1257 /* force 1000, set loopback */ 1260 /* force 1000, set loopback */
1258 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4140); 1261 e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4140);
@@ -1403,6 +1406,11 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter)
1403 case e1000_82546_rev_3: 1406 case e1000_82546_rev_3:
1404 default: 1407 default:
1405 hw->autoneg = TRUE; 1408 hw->autoneg = TRUE;
1409 if (hw->phy_type == e1000_phy_gg82563) {
1410 e1000_write_phy_reg(hw,
1411 GG82563_PHY_KMRN_MODE_CTRL,
1412 0x180);
1413 }
1406 e1000_read_phy_reg(hw, PHY_CTRL, &phy_reg); 1414 e1000_read_phy_reg(hw, PHY_CTRL, &phy_reg);
1407 if (phy_reg & MII_CR_LOOPBACK) { 1415 if (phy_reg & MII_CR_LOOPBACK) {
1408 phy_reg &= ~MII_CR_LOOPBACK; 1416 phy_reg &= ~MII_CR_LOOPBACK;