netdev
[Top] [All Lists]

[PATCH 2.4.27-pre3] pcnet32: limit frames received during interrupt.

To: tsbogend@xxxxxxxxxxxxxxxx, jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxx
Subject: [PATCH 2.4.27-pre3] pcnet32: limit frames received during interrupt.
From: Don Fry <brazilnut@xxxxxxxxxx>
Date: Sat, 22 May 2004 15:30:02 -0700 (PDT)
Sender: netdev-bounce@xxxxxxxxxxx
The current code will allow an infinite number of frames to be received
during one interrupt.  Tested ia32.

--- linux-2.4.27-pre3/drivers/net/ltint.pcnet32.c       Fri May 21 12:43:19 2004
+++ linux-2.4.27-pre3/drivers/net/pcnet32.c     Sat May 22 13:26:44 2004
@@ -22,8 +22,8 @@
  *************************************************************************/
 
 #define DRV_NAME       "pcnet32"
-#define DRV_VERSION    "1.30"
-#define DRV_RELDATE    "05.18.2004"
+#define DRV_VERSION    "1.30a"
+#define DRV_RELDATE    "05.22.2004"
 #define PFX            DRV_NAME ": "
 
 static const char *version =
@@ -86,7 +86,7 @@
 
 static struct net_device *pcnet32_dev;
 
-static int max_interrupt_work = 80;
+static int max_interrupt_work = 2;
 static int rx_copybreak = 200;
 
 #define PCNET32_PORT_AUI      0x00
@@ -241,6 +241,7 @@
  *        forever.
  * v1.30   18 May 2004 Don Fry removed timer and Last Transmit Interrupt
  *        (ltint) as they added complexity and didn't give good throughput.
+ * v1.30a  22 May 2004 Don Fry limit frames received during interrupt.
  */
 
 
@@ -1857,6 +1858,7 @@
 {
     struct pcnet32_private *lp = dev->priv;
     int entry = lp->cur_rx & RX_RING_MOD_MASK;
+    int boguscnt = RX_RING_SIZE / 2;
 
     /* If we own the next entry, it's a new packet. Send it up. */
     while ((short)le16_to_cpu(lp->rx_ring[entry].status) >= 0) {
@@ -1955,6 +1957,7 @@
        wmb(); /* Make sure owner changes after all others are visible */
        lp->rx_ring[entry].status |= le16_to_cpu(0x8000);
        entry = (++lp->cur_rx) & RX_RING_MOD_MASK;
+       if (--boguscnt <= 0) break;     /* don't stay in loop forever */
     }
 
     return 0;

-- 
Don Fry
brazilnut@xxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH 2.4.27-pre3] pcnet32: limit frames received during interrupt., Don Fry <=