bnx2: Add SA_SAMPLE_RANDOM flag to bnx2 as a module option This patch allows for the bnx2 to add to the /dev/random entropy pool via a module parameter, entropy. 0 - default for EL5 - do not populate the entropy pool 1 - optional - Uses SA_SAMPLE_RANDOM flag on request_irq calls to populate the /dev/random pool Signed-off-by: John Sobecki --- linux-2.6.18.x86_64/drivers/net/bnx2.c.orig 2007-05-15 11:45:49.158082000 -0700 +++ linux-2.6.18.x86_64/drivers/net/bnx2.c 2007-05-15 12:03:39.268976000 -0700 @@ -56,7 +56,7 @@ #define DRV_MODULE_NAME "bnx2" #define PFX DRV_MODULE_NAME ": " -#define DRV_MODULE_VERSION "1.4.44-1" +#define DRV_MODULE_VERSION "1.4.44-1ora" #define DRV_MODULE_RELDATE "August 10, 2006" #define RUN_AT(x) (jiffies + (x)) @@ -77,6 +77,10 @@ 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, @@ -4263,16 +4267,31 @@ if (pci_enable_msi(bp->pdev) == 0) { bp->flags |= USING_MSI_FLAG; - rc = request_irq(bp->pdev->irq, bnx2_msi, 0, dev->name, - dev); + if (entropy) + rc = request_irq(bp->pdev->irq, bnx2_msi, + SA_SAMPLE_RANDOM, dev->name, dev); + else + rc = request_irq(bp->pdev->irq, bnx2_msi, 0, + dev->name, dev); } else { - rc = request_irq(bp->pdev->irq, bnx2_interrupt, - IRQF_SHARED, dev->name, dev); + if (entropy) + rc = request_irq(bp->pdev->irq, bnx2_interrupt, + IRQF_SHARED|SA_SAMPLE_RANDOM, + dev->name, dev); + else + rc = request_irq(bp->pdev->irq, bnx2_interrupt, + IRQF_SHARED, dev->name, dev); + } } else { - rc = request_irq(bp->pdev->irq, bnx2_interrupt, IRQF_SHARED, + if (entropy) + rc = request_irq(bp->pdev->irq, bnx2_interrupt, + IRQF_SHARED|SA_SAMPLE_RANDOM, + dev->name, dev); + else + rc = request_irq(bp->pdev->irq, bnx2_interrupt, IRQF_SHARED, dev->name, dev); } if (rc) { @@ -4318,8 +4337,15 @@ rc = bnx2_init_nic(bp); if (!rc) { - rc = request_irq(bp->pdev->irq, bnx2_interrupt, - IRQF_SHARED, dev->name, dev); + if (entropy) + rc = request_irq(bp->pdev->irq, + bnx2_interrupt, + IRQF_SHARED|SA_SAMPLE_RANDOM, + dev->name, dev); + else + rc = request_irq(bp->pdev->irq, + bnx2_interrupt, + IRQF_SHARED, dev->name, dev); } if (rc) { bnx2_free_skbs(bp);