提交 3b8f5945 编写于 作者: D David S. Miller

Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-2.6

...@@ -3478,9 +3478,17 @@ static irqreturn_t e1000_intr(int irq, void *data) ...@@ -3478,9 +3478,17 @@ static irqreturn_t e1000_intr(int irq, void *data)
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 icr = er32(ICR); u32 icr = er32(ICR);
if (unlikely((!icr) || test_bit(__E1000_DOWN, &adapter->flags))) if (unlikely((!icr)))
return IRQ_NONE; /* Not our interrupt */ return IRQ_NONE; /* Not our interrupt */
/*
* we might have caused the interrupt, but the above
* read cleared it, and just in case the driver is
* down there is nothing to do so return handled
*/
if (unlikely(test_bit(__E1000_DOWN, &adapter->flags)))
return IRQ_HANDLED;
if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) { if (unlikely(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC))) {
hw->get_link_status = 1; hw->get_link_status = 1;
/* guard against interrupt when we're going down */ /* guard against interrupt when we're going down */
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
...@@ -1310,7 +1310,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw) ...@@ -1310,7 +1310,7 @@ static void e1000_initialize_hw_bits_82571(struct e1000_hw *hw)
* apply workaround for hardware errata documented in errata * apply workaround for hardware errata documented in errata
* docs Fixes issue where some error prone or unreliable PCIe * docs Fixes issue where some error prone or unreliable PCIe
* completions are occurring, particularly with ASPM enabled. * completions are occurring, particularly with ASPM enabled.
* Without fix, issue can cause tx timeouts. * Without fix, issue can cause Tx timeouts.
*/ */
reg = er32(GCR2); reg = er32(GCR2);
reg |= 1; reg |= 1;
......
################################################################################ ################################################################################
# #
# Intel PRO/1000 Linux driver # Intel PRO/1000 Linux driver
# Copyright(c) 1999 - 2008 Intel Corporation. # Copyright(c) 1999 - 2011 Intel Corporation.
# #
# This program is free software; you can redistribute it and/or modify it # This program is free software; you can redistribute it and/or modify it
# under the terms and conditions of the GNU General Public License, # under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
...@@ -102,7 +102,7 @@ enum e1e_registers { ...@@ -102,7 +102,7 @@ enum e1e_registers {
E1000_RDTR = 0x02820, /* Rx Delay Timer - RW */ E1000_RDTR = 0x02820, /* Rx Delay Timer - RW */
E1000_RXDCTL_BASE = 0x02828, /* Rx Descriptor Control - RW */ E1000_RXDCTL_BASE = 0x02828, /* Rx Descriptor Control - RW */
#define E1000_RXDCTL(_n) (E1000_RXDCTL_BASE + (_n << 8)) #define E1000_RXDCTL(_n) (E1000_RXDCTL_BASE + (_n << 8))
E1000_RADV = 0x0282C, /* RX Interrupt Absolute Delay Timer - RW */ E1000_RADV = 0x0282C, /* Rx Interrupt Absolute Delay Timer - RW */
/* Convenience macros /* Convenience macros
* *
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
...@@ -533,7 +533,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw) ...@@ -533,7 +533,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)
mac->autoneg_failed = 1; mac->autoneg_failed = 1;
return 0; return 0;
} }
e_dbg("NOT RXing /C/, disable AutoNeg and force link.\n"); e_dbg("NOT Rx'ing /C/, disable AutoNeg and force link.\n");
/* Disable auto-negotiation in the TXCW register */ /* Disable auto-negotiation in the TXCW register */
ew32(TXCW, (mac->txcw & ~E1000_TXCW_ANE)); ew32(TXCW, (mac->txcw & ~E1000_TXCW_ANE));
...@@ -556,7 +556,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw) ...@@ -556,7 +556,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)
* and disable forced link in the Device Control register * and disable forced link in the Device Control register
* in an attempt to auto-negotiate with our link partner. * in an attempt to auto-negotiate with our link partner.
*/ */
e_dbg("RXing /C/, enable AutoNeg and stop forcing link.\n"); e_dbg("Rx'ing /C/, enable AutoNeg and stop forcing link.\n");
ew32(TXCW, mac->txcw); ew32(TXCW, mac->txcw);
ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); ew32(CTRL, (ctrl & ~E1000_CTRL_SLU));
...@@ -598,7 +598,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw) ...@@ -598,7 +598,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
mac->autoneg_failed = 1; mac->autoneg_failed = 1;
return 0; return 0;
} }
e_dbg("NOT RXing /C/, disable AutoNeg and force link.\n"); e_dbg("NOT Rx'ing /C/, disable AutoNeg and force link.\n");
/* Disable auto-negotiation in the TXCW register */ /* Disable auto-negotiation in the TXCW register */
ew32(TXCW, (mac->txcw & ~E1000_TXCW_ANE)); ew32(TXCW, (mac->txcw & ~E1000_TXCW_ANE));
...@@ -621,7 +621,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw) ...@@ -621,7 +621,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)
* and disable forced link in the Device Control register * and disable forced link in the Device Control register
* in an attempt to auto-negotiate with our link partner. * in an attempt to auto-negotiate with our link partner.
*/ */
e_dbg("RXing /C/, enable AutoNeg and stop forcing link.\n"); e_dbg("Rx'ing /C/, enable AutoNeg and stop forcing link.\n");
ew32(TXCW, mac->txcw); ew32(TXCW, mac->txcw);
ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); ew32(CTRL, (ctrl & ~E1000_CTRL_SLU));
...@@ -800,9 +800,9 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw) ...@@ -800,9 +800,9 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)
* The possible values of the "fc" parameter are: * The possible values of the "fc" parameter are:
* 0: Flow control is completely disabled * 0: Flow control is completely disabled
* 1: Rx flow control is enabled (we can receive pause frames, * 1: Rx flow control is enabled (we can receive pause frames,
* but not send pause frames). * but not send pause frames).
* 2: Tx flow control is enabled (we can send pause frames but we * 2: Tx flow control is enabled (we can send pause frames but we
* do not support receiving pause frames). * do not support receiving pause frames).
* 3: Both Rx and Tx flow control (symmetric) are enabled. * 3: Both Rx and Tx flow control (symmetric) are enabled.
*/ */
switch (hw->fc.current_mode) { switch (hw->fc.current_mode) {
...@@ -1031,9 +1031,9 @@ s32 e1000e_force_mac_fc(struct e1000_hw *hw) ...@@ -1031,9 +1031,9 @@ s32 e1000e_force_mac_fc(struct e1000_hw *hw)
* The possible values of the "fc" parameter are: * The possible values of the "fc" parameter are:
* 0: Flow control is completely disabled * 0: Flow control is completely disabled
* 1: Rx flow control is enabled (we can receive pause * 1: Rx flow control is enabled (we can receive pause
* frames but not send pause frames). * frames but not send pause frames).
* 2: Tx flow control is enabled (we can send pause frames * 2: Tx flow control is enabled (we can send pause frames
* frames but we do not receive pause frames). * frames but we do not receive pause frames).
* 3: Both Rx and Tx flow control (symmetric) is enabled. * 3: Both Rx and Tx flow control (symmetric) is enabled.
* other: No other values should be possible at this point. * other: No other values should be possible at this point.
*/ */
...@@ -1189,7 +1189,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw) ...@@ -1189,7 +1189,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)
} else { } else {
hw->fc.current_mode = e1000_fc_rx_pause; hw->fc.current_mode = e1000_fc_rx_pause;
e_dbg("Flow Control = " e_dbg("Flow Control = "
"RX PAUSE frames only.\r\n"); "Rx PAUSE frames only.\r\n");
} }
} }
/* /*
......
此差异已折叠。
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
...@@ -62,10 +62,9 @@ MODULE_PARM_DESC(copybreak, ...@@ -62,10 +62,9 @@ MODULE_PARM_DESC(copybreak,
module_param_array_named(X, X, int, &num_##X, 0); \ module_param_array_named(X, X, int, &num_##X, 0); \
MODULE_PARM_DESC(X, desc); MODULE_PARM_DESC(X, desc);
/* /*
* Transmit Interrupt Delay in units of 1.024 microseconds * Transmit Interrupt Delay in units of 1.024 microseconds
* Tx interrupt delay needs to typically be set to something non zero * Tx interrupt delay needs to typically be set to something non-zero
* *
* Valid Range: 0-65535 * Valid Range: 0-65535
*/ */
...@@ -112,6 +111,7 @@ E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate"); ...@@ -112,6 +111,7 @@ E1000_PARAM(InterruptThrottleRate, "Interrupt Throttling Rate");
#define DEFAULT_ITR 3 #define DEFAULT_ITR 3
#define MAX_ITR 100000 #define MAX_ITR 100000
#define MIN_ITR 100 #define MIN_ITR 100
/* IntMode (Interrupt Mode) /* IntMode (Interrupt Mode)
* *
* Valid Range: 0 - 2 * Valid Range: 0 - 2
......
/******************************************************************************* /*******************************************************************************
Intel PRO/1000 Linux driver Intel PRO/1000 Linux driver
Copyright(c) 1999 - 2010 Intel Corporation. Copyright(c) 1999 - 2011 Intel Corporation.
This program is free software; you can redistribute it and/or modify it This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License, under the terms and conditions of the GNU General Public License,
...@@ -640,7 +640,7 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw) ...@@ -640,7 +640,7 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw)
s32 ret_val; s32 ret_val;
u16 phy_data; u16 phy_data;
/* Enable CRS on TX. This must be set for half-duplex operation. */ /* Enable CRS on Tx. This must be set for half-duplex operation. */
ret_val = e1e_rphy(hw, I82577_CFG_REG, &phy_data); ret_val = e1e_rphy(hw, I82577_CFG_REG, &phy_data);
if (ret_val) if (ret_val)
goto out; goto out;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册