diff -up linux-2.6.18.x86_64/drivers/net/bnx2.c.orig linux-2.6.18.x86_64/drivers/net/bnx2.c
--- linux-2.6.18.x86_64/drivers/net/bnx2.c.orig	2010-11-18 21:57:59.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/bnx2.c	2010-11-18 21:58:48.000000000 -0700
@@ -81,11 +81,11 @@ static int disable_msi = 0;
 module_param(disable_msi, int, 0);
 MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)");
 
-static int enable_entropy = 0;
+static int enable_entropy = 1;
 
-module_param(enable_entropy, int, 0);
+module_param(enable_entropy, int, 1);
 MODULE_PARM_DESC(enable_entropy,
-		 "Allow bnx2 to populate the /dev/random entropy pool");
+  "Allow bnx2 to populate the /dev/random entropy pool (default=1)");
 
 typedef enum {
 	BCM5706 = 0,
diff -up linux-2.6.18.x86_64/drivers/net/bnx2x/bnx2x_cmn.c.orig linux-2.6.18.x86_64/drivers/net/bnx2x/bnx2x_cmn.c
--- linux-2.6.18.x86_64/drivers/net/bnx2x/bnx2x_cmn.c.orig	2010-11-18 22:00:50.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/bnx2x/bnx2x_cmn.c	2010-11-18 22:05:17.000000000 -0700
@@ -1073,7 +1073,8 @@ static int bnx2x_req_msix_irqs(struct bn
 {
 	int i, rc, offset = 1;
 
-	rc = request_irq(bp->msix_table[0].vector, bnx2x_msix_sp_int, 0,
+	rc = request_irq(bp->msix_table[0].vector, bnx2x_msix_sp_int, 
+			 IRQF_SAMPLE_RANDOM,
 			 bp->dev->name, bp->dev);
 	if (rc) {
 		BNX2X_ERR("request sp irq failed\n");
@@ -1089,7 +1090,8 @@ static int bnx2x_req_msix_irqs(struct bn
 			 bp->dev->name, i);
 
 		rc = request_irq(bp->msix_table[i + offset].vector,
-				 bnx2x_msix_fp_int, 0, fp->name, fp);
+				 bnx2x_msix_fp_int, IRQF_SAMPLE_RANDOM, 
+				 fp->name, fp);
 		if (rc) {
 			BNX2X_ERR("request fp #%d irq failed  rc %d\n", i, rc);
 			bnx2x_free_msix_irqs(bp);
@@ -1129,9 +1131,9 @@ static int bnx2x_req_irq(struct bnx2x *b
 	int rc;
 
 	if (bp->flags & USING_MSI_FLAG)
-		flags = 0;
+		flags = IRQF_SAMPLE_RANDOM;
 	else
-		flags = IRQF_SHARED;
+		flags = IRQF_SHARED | IRQF_SAMPLE_RANDOM;
 
 	rc = request_irq(bp->pdev->irq, bnx2x_interrupt, flags,
 			 bp->dev->name, bp->dev);
diff -up linux-2.6.18.x86_64/drivers/net/e1000e/netdev.c.orig linux-2.6.18.x86_64/drivers/net/e1000e/netdev.c
--- linux-2.6.18.x86_64/drivers/net/e1000e/netdev.c.orig	2010-11-18 22:06:33.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/e1000e/netdev.c	2010-11-18 22:07:09.000000000 -0700
@@ -1929,7 +1929,8 @@ static int e1000_request_irq(struct e100
 		adapter->int_mode = E1000E_INT_MODE_LEGACY;
 	}
 
-	err = request_irq(adapter->pdev->irq, e1000_intr, IRQF_SHARED,
+	err = request_irq(adapter->pdev->irq, e1000_intr, 
+			  IRQF_SHARED | IRQF_SAMPLE_RANDOM,
 			  netdev->name, netdev);
 	if (err)
 		e_err("Unable to allocate interrupt, Error: %d\n", err);
diff -up linux-2.6.18.x86_64/drivers/net/igb/igb_main.c.orig linux-2.6.18.x86_64/drivers/net/igb/igb_main.c
--- linux-2.6.18.x86_64/drivers/net/igb/igb_main.c.orig	2010-11-18 22:09:03.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/igb/igb_main.c	2010-11-18 22:09:46.000000000 -0700
@@ -1222,7 +1222,8 @@ static int igb_request_irq(struct igb_ad
 		adapter->flags &= ~IGB_FLAG_HAS_MSI;
 	}
 
-	err = request_irq(adapter->pdev->irq, igb_intr, IRQF_SHARED,
+	err = request_irq(adapter->pdev->irq, igb_intr, 
+			  IRQF_SHARED | IRQF_SAMPLE_RANDOM,
 			  netdev->name, adapter);
 
 	if (err)
diff -up linux-2.6.18.x86_64/drivers/net/ixgbe/ixgbe_main.c.orig linux-2.6.18.x86_64/drivers/net/ixgbe/ixgbe_main.c
--- linux-2.6.18.x86_64/drivers/net/ixgbe/ixgbe_main.c.orig	2010-11-18 22:13:40.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/ixgbe/ixgbe_main.c	2010-11-18 22:14:05.000000000 -0700
@@ -2390,7 +2390,8 @@ static int ixgbe_request_irq(struct ixgb
 		err = request_irq(adapter->pdev->irq, ixgbe_intr, 0,
 		                  netdev->name, netdev);
 	} else {
-		err = request_irq(adapter->pdev->irq, ixgbe_intr, IRQF_SHARED,
+		err = request_irq(adapter->pdev->irq, ixgbe_intr, 
+				  IRQF_SHARED | IRQF_SAMPLE_RANDOM,
 		                  netdev->name, netdev);
 	}
 
diff -up linux-2.6.18.x86_64/drivers/net/ixgbevf/ixgbevf_main.c.orig linux-2.6.18.x86_64/drivers/net/ixgbevf/ixgbevf_main.c
--- linux-2.6.18.x86_64/drivers/net/ixgbevf/ixgbevf_main.c.orig	2010-11-18 22:17:18.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/ixgbevf/ixgbevf_main.c	2010-11-18 22:21:50.000000000 -0700
@@ -1189,7 +1189,8 @@ static int ixgbevf_request_msix_irqs(str
 			continue;
 		}
 		err = request_irq(adapter->msix_entries[vector].vector,
-				  handler, 0, adapter->name[vector],
+				  handler,  IRQF_SAMPLE_RANDOM, 
+				  adapter->name[vector],
 				  adapter->q_vector[vector]);
 		if (err) {
 			hw_dbg(&adapter->hw,
@@ -1201,7 +1202,8 @@ static int ixgbevf_request_msix_irqs(str
 
 	sprintf(adapter->name[vector], "%s:mbx", netdev->name);
 	err = request_irq(adapter->msix_entries[vector].vector,
-			  &ixgbevf_msix_mbx, 0, adapter->name[vector], netdev);
+			  &ixgbevf_msix_mbx,  IRQF_SAMPLE_RANDOM, 
+			  adapter->name[vector], netdev);
 	if (err) {
 		hw_dbg(&adapter->hw,
 		       "request_irq for msix_mbx failed: %d\n", err);
diff -up linux-2.6.18.x86_64/drivers/net/ixgb/ixgb_main.c.orig linux-2.6.18.x86_64/drivers/net/ixgb/ixgb_main.c
--- linux-2.6.18.x86_64/drivers/net/ixgb/ixgb_main.c.orig	2010-11-18 22:11:21.000000000 -0700
+++ linux-2.6.18.x86_64/drivers/net/ixgb/ixgb_main.c	2010-11-18 22:11:41.000000000 -0700
@@ -214,7 +214,7 @@ int
 ixgb_up(struct ixgb_adapter *adapter)
 {
 	struct net_device *netdev = adapter->netdev;
-	int err, irq_flags = IRQF_SHARED;
+	int err, irq_flags = IRQF_SHARED | IRQF_SAMPLE_RANDOM;
 	int max_frame = netdev->mtu + ENET_HEADER_SIZE + ENET_FCS_LENGTH;
 	struct ixgb_hw *hw = &adapter->hw;
 
