--- linux-2.6.18.i686/drivers/net/bnx2.c.orig	2008-11-24 10:33:33.557544000 -0800
+++ linux-2.6.18.i686/drivers/net/bnx2.c	2008-11-24 13:27:53.576578000 -0800
@@ -55,7 +55,7 @@
 #define FW_BUF_SIZE		0x10000
 #define DRV_MODULE_NAME		"bnx2"
 #define PFX DRV_MODULE_NAME	": "
-#define DRV_MODULE_VERSION	"1.7.9-1"
+#define DRV_MODULE_VERSION	"1.7.9-ora"
 #define DRV_MODULE_RELDATE	"July 18, 2008"
 
 #define RUN_AT(x) (jiffies + (x))
@@ -76,6 +76,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,
@@ -5749,14 +5754,19 @@ bnx2_restart_timer:
 static int
 bnx2_request_irq(struct bnx2 *bp)
 {
-	unsigned long flags;
+	unsigned long flags = 0;
 	struct bnx2_irq *irq;
 	int rc = 0, i;
 
-	if (bp->flags & BNX2_FLAG_USING_MSI_OR_MSIX)
-		flags = 0;
-	else
-		flags = IRQF_SHARED;
+
+	if (bp->flags & BNX2_FLAG_USING_MSI_OR_MSIX) {
+		if (entropy) 
+			flags = SA_SAMPLE_RANDOM;
+	} else 
+		if (entropy) 
+			flags = IRQF_SHARED|SA_SAMPLE_RANDOM;
+		else
+		  	flags = IRQF_SHARED;
 
 	for (i = 0; i < bp->irq_nvecs; i++) {
 		irq = &bp->irq_tbl[i];
