diff options
author | Bruce Allan <bruce.w.allan@intel.com> | 2012-04-18 23:21:47 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-05-04 06:15:06 -0400 |
commit | 2fbe4526e5aafc9ffa5d85fa4749a7c5b22af6b2 (patch) | |
tree | d49b59c7ab233d3280f3054b19fbd3832a8898ca /drivers/net/ethernet/intel/e1000e/netdev.c | |
parent | d02c70a8ee1738fc2cf6db18df065977bb44fd50 (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.c | 17 |
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 | ||
84 | struct e1000_reg_info { | 85 | struct 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 | }; |
6569 | MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); | 6574 | MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); |