--- 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; }