diff options
author | David S. Miller <davem@davemloft.net> | 2010-09-27 04:03:03 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-27 04:03:03 -0400 |
commit | e40051d134f7ee95c8c1f7a3471e84eafc9ab326 (patch) | |
tree | 88eb44e49a75721ae926665a2c42f08badac9d07 /drivers/net/e1000e/netdev.c | |
parent | 42099d7a3941d4aaf853caac92b3ae76149fc6e7 (diff) | |
parent | 2cc6d2bf3d6195fabcf0febc192c01f99519a8f3 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/qlcnic/qlcnic_init.c
net/ipv4/ip_output.c
Diffstat (limited to 'drivers/net/e1000e/netdev.c')
-rw-r--r-- | drivers/net/e1000e/netdev.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index 5d5850b556cf..c69563c3ce96 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
@@ -2705,6 +2705,16 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) | |||
2705 | u32 psrctl = 0; | 2705 | u32 psrctl = 0; |
2706 | u32 pages = 0; | 2706 | u32 pages = 0; |
2707 | 2707 | ||
2708 | /* Workaround Si errata on 82579 - configure jumbo frame flow */ | ||
2709 | if (hw->mac.type == e1000_pch2lan) { | ||
2710 | s32 ret_val; | ||
2711 | |||
2712 | if (adapter->netdev->mtu > ETH_DATA_LEN) | ||
2713 | ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, true); | ||
2714 | else | ||
2715 | ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, false); | ||
2716 | } | ||
2717 | |||
2708 | /* Program MC offset vector base */ | 2718 | /* Program MC offset vector base */ |
2709 | rctl = er32(RCTL); | 2719 | rctl = er32(RCTL); |
2710 | rctl &= ~(3 << E1000_RCTL_MO_SHIFT); | 2720 | rctl &= ~(3 << E1000_RCTL_MO_SHIFT); |
@@ -2745,16 +2755,6 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) | |||
2745 | e1e_wphy(hw, 22, phy_data); | 2755 | e1e_wphy(hw, 22, phy_data); |
2746 | } | 2756 | } |
2747 | 2757 | ||
2748 | /* Workaround Si errata on 82579 - configure jumbo frame flow */ | ||
2749 | if (hw->mac.type == e1000_pch2lan) { | ||
2750 | s32 ret_val; | ||
2751 | |||
2752 | if (rctl & E1000_RCTL_LPE) | ||
2753 | ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, true); | ||
2754 | else | ||
2755 | ret_val = e1000_lv_jumbo_workaround_ich8lan(hw, false); | ||
2756 | } | ||
2757 | |||
2758 | /* Setup buffer sizes */ | 2758 | /* Setup buffer sizes */ |
2759 | rctl &= ~E1000_RCTL_SZ_4096; | 2759 | rctl &= ~E1000_RCTL_SZ_4096; |
2760 | rctl |= E1000_RCTL_BSEX; | 2760 | rctl |= E1000_RCTL_BSEX; |
@@ -4813,6 +4813,15 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu) | |||
4813 | return -EINVAL; | 4813 | return -EINVAL; |
4814 | } | 4814 | } |
4815 | 4815 | ||
4816 | /* Jumbo frame workaround on 82579 requires CRC be stripped */ | ||
4817 | if ((adapter->hw.mac.type == e1000_pch2lan) && | ||
4818 | !(adapter->flags2 & FLAG2_CRC_STRIPPING) && | ||
4819 | (new_mtu > ETH_DATA_LEN)) { | ||
4820 | e_err("Jumbo Frames not supported on 82579 when CRC " | ||
4821 | "stripping is disabled.\n"); | ||
4822 | return -EINVAL; | ||
4823 | } | ||
4824 | |||
4816 | /* 82573 Errata 17 */ | 4825 | /* 82573 Errata 17 */ |
4817 | if (((adapter->hw.mac.type == e1000_82573) || | 4826 | if (((adapter->hw.mac.type == e1000_82573) || |
4818 | (adapter->hw.mac.type == e1000_82574)) && | 4827 | (adapter->hw.mac.type == e1000_82574)) && |