--- linux-2.6.18.i386/drivers/net/bnx2.c.orig	2008-03-27 15:17:40.193884000 -0700
+++ linux-2.6.18.i386/drivers/net/bnx2.c	2008-03-27 15:56:20.604893000 -0700
@@ -54,7 +54,7 @@
 
 #define DRV_MODULE_NAME		"bnx2"
 #define PFX DRV_MODULE_NAME	": "
-#define DRV_MODULE_VERSION	"1.6.9"
+#define DRV_MODULE_VERSION	"1.6.9-ora"
 #define DRV_MODULE_RELDATE	"December 8, 2007"
 
 #define RUN_AT(x) (jiffies + (x))
@@ -75,6 +75,11 @@ static int disable_msi = 0;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
+static int entropy = 0;
+
+module_param(entropy, int, 0);
+MODULE_PARM_DESC(entropy, "Allow bnx2 to populate the /dev/random entropy pool");
+
 typedef enum {
 	BCM5706 = 0,
 	NC370T,
@@ -5018,16 +5023,30 @@ bnx2_request_irq(struct bnx2 *bp)
 	struct net_device *dev = bp->dev;
 	int rc = 0;
 
-	if (bp->flags & USING_MSI_FLAG) {
+       if (entropy) {
+          if (bp->flags & USING_MSI_FLAG) {
+
+               if (bp->flags & ONE_SHOT_MSI_FLAG)
+                       rc = request_irq(bp->pdev->irq, bnx2_msi_1shot, SA_SAMPLE_RANDOM, dev->name, dev);
+               else
+                       rc = request_irq(bp->pdev->irq, bnx2_msi, SA_SAMPLE_RANDOM, dev->name, dev);
+
+          } else
+               rc = request_irq(bp->pdev->irq, bnx2_interrupt,
+                                IRQF_SHARED|SA_SAMPLE_RANDOM, dev->name, dev);
+       } 
+       else {
+          if (bp->flags & USING_MSI_FLAG) {
 
 		if (bp->flags & ONE_SHOT_MSI_FLAG)
 			rc = request_irq(bp->pdev->irq, bnx2_msi_1shot, 0, dev->name, dev);
 		else
 			rc = request_irq(bp->pdev->irq, bnx2_msi, 0, dev->name, dev);
 
-	} else
+ 	   } else
 		rc = request_irq(bp->pdev->irq, bnx2_interrupt,
 				 IRQF_SHARED, dev->name, dev);
+       }
 	return rc;
 }
 
