ixgbe: disable tx engine before disabling tx laser

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Wednesday, July 7, 2010 - 7:59 pm

Gitweb:     http://git.kernel.org/linus/9f756f018a6d9f83556f972ce7fcd6870274efae
Commit:     9f756f018a6d9f83556f972ce7fcd6870274efae
Parent:     fa37813401ff52d78591c262d6542e4d5d935584
Author:     John Fastabend <john.r.fastabend@intel.com>
AuthorDate: Tue Jun 29 18:28:36 2010 +0000
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Tue Jun 29 23:12:40 2010 -0700

    ixgbe: disable tx engine before disabling tx laser
    
    Disabling the tx laser while receiving DMA requests
    can hang the device.  After this occurs the device
    is in a bad state. The GPIO bit never clears when
    PCI master access is disabled and a reboot is required
    to get the device in a good state again.
    
    Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
    Acked-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 drivers/net/ixgbe/ixgbe_main.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index e237748..7ddd60e 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -3684,10 +3684,6 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 	/* signal that we are down to the interrupt handler */
 	set_bit(__IXGBE_DOWN, &adapter->state);
 
-	/* power down the optics */
-	if (hw->phy.multispeed_fiber)
-		hw->mac.ops.disable_tx_laser(hw);
-
 	/* disable receive for all VFs and wait one second */
 	if (adapter->num_vfs) {
 		/* ping all the active vfs to let them know we are going down */
@@ -3742,6 +3738,10 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 		                (IXGBE_READ_REG(hw, IXGBE_DMATXCTL) &
 		                 ~IXGBE_DMATXCTL_TE));
 
+	/* power down the optics */
+	if (hw->phy.multispeed_fiber)
+		hw->mac.ops.disable_tx_laser(hw);
+
 	/* clear n-tuple filters that are cached */
 	ethtool_ntuple_flush(netdev);
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
ixgbe: disable tx engine before disabling tx laser, Linux Kernel Mailing ..., (Wed Jul 7, 7:59 pm)