--- linux-2.6.27-rc5/drivers/net/forcedeth.c.orig 2008-09-02 00:58:07.000000000 +0400 +++ linux-2.6.27-rc5/drivers/net/forcedeth.c 2008-09-02 02:02:34.000000000 +0400 @@ -842,6 +842,16 @@ static int poll_interval = -1; /* + * On some hardware no TX done interrupts are generated, thus special + * timer interrupt is required to handle this situation properly. + * + * Setting this variable to 1 leads to removing DEV_NEED_TIMERIRQ from + * the driver_data flags and thus disable 100Hz timer mentioned above. + * This may be extremely usefull for laptop users. + */ +static int disable_timerirq = 0; + +/* * MSI interrupts */ enum { @@ -5704,7 +5714,7 @@ np->msi_flags |= 0x0001; } - if (id->driver_data & DEV_NEED_TIMERIRQ) + if (id->driver_data & DEV_NEED_TIMERIRQ && !disable_timerirq) np->irqmask |= NVREG_IRQ_TIMER; if (id->driver_data & DEV_NEED_LINKTIMER) { dprintk(KERN_INFO "%s: link timer on.\n", pci_name(pci_dev)); @@ -6180,6 +6190,8 @@ MODULE_PARM_DESC(dma_64bit, "High DMA is enabled by setting to 1 and disabled by setting to 0."); module_param(phy_cross, int, 0); MODULE_PARM_DESC(phy_cross, "Phy crossover detection for Realtek 8201 phy is enabled by setting to 1 and disabled by setting to 0."); +module_param(disable_timerirq, int, 0); +MODULE_PARM_DESC(disable_timerirq, "100Hz timer required for some hardware is disabled by setting to 1 and enabled by setting to 0."); MODULE_AUTHOR("Manfred Spraul "); MODULE_DESCRIPTION("Reverse Engineered nForce ethernet driver");