[Prism54-devel] [PATCH] reset_on_mgmt_timeo (bugs 56,59)

Denis Vlasenko vda@port.imtp.ilyichevsk.odessa.ua
Sat, 6 Mar 2004 23:08:07 +0200


--Boundary-00=_32jSA9+yqumq8SG
Content-Type: text/plain;
  charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

There are multiple functions dealing with various kinds of resets:

islpci_reset
islpci_reset_if
isl38xx_interface_reset

Which of them resets what? Do one need to reprogram essid etc
after any of those?

Guys, can you please rename them so that it would be easier to
understand what's the difference, and maybe put a bit
of comment in front of each definition?

Meanwhile, here's the patch which _maybe_ helps with
"Bug 56 NETDEV WATCHDOG: eth2: transmit timed out"

The problem is that I don't know whether card will keep settings
(essid etc...) over reset, so watch your syslog closely :)

Testers whose cards are prone to bigs 56 and 59 needed.

Claas, seems like you can reproduce hangs,
can you try it?
--
vda

--Boundary-00=_32jSA9+yqumq8SG
Content-Type: text/x-diff;
  charset="us-ascii";
  name="!prism54.reset_on_mgmt_timeo.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="!prism54.reset_on_mgmt_timeo.diff"

--- prism54/islpci_mgt.c.orig	Sun Feb 22 16:56:06 2004
+++ prism54/islpci_mgt.c	Sat Mar  6 22:45:32 2004
@@ -513,7 +513,8 @@
 	printk(KERN_WARNING "%s: timeout waiting for mgmt response\n",
 	       ndev->name);
 
-	/* TODO: we should reset the device here */     
+	/* Device hung up, reset it */
+	islpci_reset(priv, 1 /*int reload_firmware*/);
  out:
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
 	finish_wait(&priv->mgmt_wqueue, &wait);

--Boundary-00=_32jSA9+yqumq8SG--