aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/netdev.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-09-27 04:03:03 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-27 04:03:03 -0400
commite40051d134f7ee95c8c1f7a3471e84eafc9ab326 (patch)
tree88eb44e49a75721ae926665a2c42f08badac9d07 /drivers/net/e1000e/netdev.c
parent42099d7a3941d4aaf853caac92b3ae76149fc6e7 (diff)
parent2cc6d2bf3d6195fabcf0febc192c01f99519a8f3 (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.c29
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)) &&