All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2.6] Prevent tulip cardbus cards from freezing machine
@ 2004-05-27  9:59 Olaf Kirch
  0 siblings, 0 replies; only message in thread
From: Olaf Kirch @ 2004-05-27  9:59 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 379 bytes --]

Hi,

here's a patch that should prevent lockups with tulip cardbus cards
after APM suspend/resume, or when pulling out the card.

The problem is that the status register seems to return 0xffffffff in
this case, and tulip_poll thinks RxIntr is asserted all the time.

Please review.

Cheers
Olaf
-- 
Olaf Kirch     |  The Hardware Gods hate me.
okir@suse.de   |
---------------+ 

[-- Attachment #2: tulip-pcmcia-remove --]
[-- Type: text/plain, Size: 855 bytes --]

--- linux-2.6.5/drivers/net/tulip/interrupt.c.suspend	2004-04-04 05:36:48.000000000 +0200
+++ linux-2.6.5/drivers/net/tulip/interrupt.c	2004-05-25 12:24:07.000000000 +0200
@@ -113,6 +113,7 @@
 	int entry = tp->cur_rx % RX_RING_SIZE;
 	int rx_work_limit = *budget;
 	int received = 0;
+	int csr5;
 
 	if (!netif_running(dev))
 		goto done;
@@ -254,7 +255,12 @@
                 * No idea how to fix this if "playing with fire" will fail
                 * tomorrow (night 011029). If it will not fail, we won
                 * finally: amount of IO did not increase at all. */
-       } while ((inl(dev->base_addr + CSR5) & RxIntr));
+	       csr5 = inl(dev->base_addr + CSR5);
+	       if (csr5 == 0xffffffff) {
+		       printk(KERN_DEBUG "tulip_poll: hardware disappeared.\n");
+		       break;
+	       }
+       } while (csr5 & RxIntr);
  
 done:
  

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-05-27  9:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-27  9:59 [PATCH 2.6] Prevent tulip cardbus cards from freezing machine Olaf Kirch

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.