netxen: fix thermal check and shutdown

Previous thread: Fix error return for setsockopt(SO_TIMESTAMPING) by Linux Kernel Mailing List on Wednesday, July 22, 2009 - 12:59 pm. (1 message)

Next thread: drivers/net: Move a dereference below a NULL test by Linux Kernel Mailing List on Wednesday, July 22, 2009 - 12:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Wednesday, July 22, 2009 - 12:59 pm

Gitweb:     http://git.kernel.org/linus/e4135c2da11c337e3759f98727c4819ba2a849fa
Commit:     e4135c2da11c337e3759f98727c4819ba2a849fa
Parent:     b2af9cb06d4de1b507ec0fd779ec2ecedee1480a
Author:     Dhananjay Phadke <dhananjay@netxen.com>
AuthorDate: Fri Jul 17 15:27:08 2009 +0000
Committer:  David S. Miller <davem@davemloft.net>
CommitDate: Mon Jul 20 08:23:33 2009 -0700

    netxen: fix thermal check and shutdown
    
    Check temperature for all PCI functions, that can allow
    graceful shutdown of all interfaces on the overheated card.
    
    Old code was only monitoring temperature for function 0 only.
    
    Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
---
 drivers/net/netxen/netxen_nic_main.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 370c52f..637ac8b 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -1535,10 +1535,12 @@ static int netxen_nic_check_temp(struct netxen_adapter *adapter)
 		printk(KERN_ALERT
 		       "%s: Device temperature %d degrees C exceeds"
 		       " maximum allowed. Hardware has been shut down.\n",
-		       netxen_nic_driver_name, temp_val);
+		       netdev->name, temp_val);
+
+		netif_device_detach(netdev);
+		netxen_nic_down(adapter, netdev);
+		netxen_nic_detach(adapter);
 
-		netif_carrier_off(netdev);
-		netif_stop_queue(netdev);
 		rv = 1;
 	} else if (temp_state == NX_TEMP_WARN) {
 		if (adapter->temp == NX_TEMP_NORMAL) {
@@ -1546,13 +1548,13 @@ static int netxen_nic_check_temp(struct netxen_adapter *adapter)
 			       "%s: Device temperature %d degrees C "
 			       "exceeds operating range."
 			       " Immediate action needed.\n",
-			       netxen_nic_driver_name, temp_val);
+			       netdev->name, temp_val);
 		}
 	} else {
 		if (adapter->temp == NX_TEMP_WARN) {
 ...
Previous thread: Fix error return for setsockopt(SO_TIMESTAMPING) by Linux Kernel Mailing List on Wednesday, July 22, 2009 - 12:59 pm. (1 message)

Next thread: drivers/net: Move a dereference below a NULL test by Linux Kernel Mailing List on Wednesday, July 22, 2009 - 12:59 pm. (1 message)