aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e/netdev.c
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2012-04-18 23:21:47 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2012-05-04 06:15:06 -0400
commit2fbe4526e5aafc9ffa5d85fa4749a7c5b22af6b2 (patch)
treed49b59c7ab233d3280f3054b19fbd3832a8898ca /drivers/net/ethernet/intel/e1000e/netdev.c
parentd02c70a8ee1738fc2cf6db18df065977bb44fd50 (diff)
e1000e: initial support for i217
i217 is the next-generation LOM that will be available on systems with the Lynx Point Platform Controller Hub (PCH) chipset from Intel. This patch provides the initial support for the device. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index c19784c31819..b53ea83fda29 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -79,6 +79,7 @@ static const struct e1000_info *e1000_info_tbl[] = {
79 [board_ich10lan] = &e1000_ich10_info, 79 [board_ich10lan] = &e1000_ich10_info,
80 [board_pchlan] = &e1000_pch_info, 80 [board_pchlan] = &e1000_pch_info,
81 [board_pch2lan] = &e1000_pch2_info, 81 [board_pch2lan] = &e1000_pch2_info,
82 [board_pch_lpt] = &e1000_pch_lpt_info,
82}; 83};
83 84
84struct e1000_reg_info { 85struct e1000_reg_info {
@@ -2863,8 +2864,8 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
2863 u32 rctl, rfctl; 2864 u32 rctl, rfctl;
2864 u32 pages = 0; 2865 u32 pages = 0;
2865 2866
2866 /* Workaround Si errata on 82579 - configure jumbo frame flow */ 2867 /* Workaround Si errata on PCHx - configure jumbo frame flow */
2867 if (hw->mac.type == e1000_pch2lan) { 2868 if (hw->mac.type >= e1000_pch2lan) {
2868 s32 ret_val; 2869 s32 ret_val;
2869 2870
2870 if (adapter->netdev->mtu > ETH_DATA_LEN) 2871 if (adapter->netdev->mtu > ETH_DATA_LEN)
@@ -3487,6 +3488,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3487 fc->refresh_time = 0x1000; 3488 fc->refresh_time = 0x1000;
3488 break; 3489 break;
3489 case e1000_pch2lan: 3490 case e1000_pch2lan:
3491 case e1000_pch_lpt:
3490 fc->high_water = 0x05C20; 3492 fc->high_water = 0x05C20;
3491 fc->low_water = 0x05048; 3493 fc->low_water = 0x05048;
3492 fc->pause_time = 0x0650; 3494 fc->pause_time = 0x0650;
@@ -5264,11 +5266,11 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)
5264 return -EINVAL; 5266 return -EINVAL;
5265 } 5267 }
5266 5268
5267 /* Jumbo frame workaround on 82579 requires CRC be stripped */ 5269 /* Jumbo frame workaround on 82579 and newer requires CRC be stripped */
5268 if ((adapter->hw.mac.type == e1000_pch2lan) && 5270 if ((adapter->hw.mac.type >= e1000_pch2lan) &&
5269 !(adapter->flags2 & FLAG2_CRC_STRIPPING) && 5271 !(adapter->flags2 & FLAG2_CRC_STRIPPING) &&
5270 (new_mtu > ETH_DATA_LEN)) { 5272 (new_mtu > ETH_DATA_LEN)) {
5271 e_err("Jumbo Frames not supported on 82579 when CRC stripping is disabled.\n"); 5273 e_err("Jumbo Frames not supported on this device when CRC stripping is disabled.\n");
5272 return -EINVAL; 5274 return -EINVAL;
5273 } 5275 }
5274 5276
@@ -5665,7 +5667,7 @@ static int __e1000_resume(struct pci_dev *pdev)
5665 return err; 5667 return err;
5666 } 5668 }
5667 5669
5668 if (hw->mac.type == e1000_pch2lan) 5670 if (hw->mac.type >= e1000_pch2lan)
5669 e1000_resume_workarounds_pchlan(&adapter->hw); 5671 e1000_resume_workarounds_pchlan(&adapter->hw);
5670 5672
5671 e1000e_power_up_phy(adapter); 5673 e1000e_power_up_phy(adapter);
@@ -6564,6 +6566,9 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {
6564 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH2_LV_LM), board_pch2lan }, 6566 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH2_LV_LM), board_pch2lan },
6565 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH2_LV_V), board_pch2lan }, 6567 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH2_LV_V), board_pch2lan },
6566 6568
6569 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_LM), board_pch_lpt },
6570 { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_V), board_pch_lpt },
6571
6567 { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ 6572 { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */
6568}; 6573};
6569MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); 6574MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);