netdev
[Top] [All Lists]

[patch 2.6.9-rc2] 3c59x: do not mask reset of aism logic at rmmod

To: akpm@xxxxxxxx
Subject: [patch 2.6.9-rc2] 3c59x: do not mask reset of aism logic at rmmod
From: "John W. Linville" <linville@xxxxxxxxxxxxx>
Date: Tue, 28 Sep 2004 14:54:55 -0400
Cc: netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Mail-followup-to: akpm@xxxxxxxx, netdev@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.2.5.1i
Some (earlier?) versions of the 3c905(B) card get confused and refuse to
work again after the 3c59x module is removed (even after reloading the
module).  Changing vortex_remove_one() to allow the auto-initialize
state machine logic to be reset when the module is removed alleviates
this problem.

Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx>
--- 
See http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=133388 for more
details.

If anyone can suggest a better way to fix this problem, please do so.
I'll be happy to pursue it.

 drivers/net/3c59x.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

This patch should apply (with a little fuzz) to 2.4 as well...

--- linux-2.6/drivers/net/3c59x.c.orig
+++ linux-2.6/drivers/net/3c59x.c
@@ -3162,7 +3162,7 @@ static void __devexit vortex_remove_one 
                        pci_restore_state(VORTEX_PCI(vp), vp->power_state);
        }
        /* Should really use issue_and_wait() here */
-       outw(TotalReset|0x14, dev->base_addr + EL3_CMD);
+       outw(TotalReset|0x04, dev->base_addr + EL3_CMD);
 
        pci_free_consistent(pdev,
                                                sizeof(struct boom_rx_desc) * 
RX_RING_SIZE

<Prev in Thread] Current Thread [Next in Thread>