[Prism54-devel] [PATCH] reset_on_mgmt_timeo (bugs 56,59)
Aurelien
slts@free.fr
Sun, 07 Mar 2004 01:32:34 +0100
Hi,
First, islpci_reset will reset the card and reset ssid and everything
(and it calls islpci_reset_if and isl38xx_interface_reset).
Now about your patch : this will not help to solve the "NETDEV WATCHDOG:
ethx: transmit timed out". Moreover it's a bit dangerous, because
islpci_reset will call islpci_mgt_transaction and you can end up with a
forever recursive behavior.
To reset the device after a "NETDEV WATCHDOG", look at
islpci_eth_tx_timeout.
...And justice for all
Denis Vlasenko wrote:
> 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
>
>
> ------------------------------------------------------------------------
>
> --- 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);