|
Lines 96-102
static int disable_msi = 0;
Link Here
|
| 96 |
module_param(disable_msi, int, 0); |
96 |
module_param(disable_msi, int, 0); |
| 97 |
MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)"); |
97 |
MODULE_PARM_DESC(disable_msi, "Disable Message Signaled Interrupt (MSI)"); |
| 98 |
|
98 |
|
| 99 |
static int idle_timeout = 0; |
99 |
static int idle_timeout = 100; |
| 100 |
module_param(idle_timeout, int, 0); |
100 |
module_param(idle_timeout, int, 0); |
| 101 |
MODULE_PARM_DESC(idle_timeout, "Watchdog timer for lost interrupts (ms)"); |
101 |
MODULE_PARM_DESC(idle_timeout, "Watchdog timer for lost interrupts (ms)"); |
| 102 |
|
102 |
|
|
Lines 2490-2495
static int sky2_poll(struct net_device *dev0, int *budget)
Link Here
|
| 2490 |
|
2490 |
|
| 2491 |
work_done = sky2_status_intr(hw, work_limit); |
2491 |
work_done = sky2_status_intr(hw, work_limit); |
| 2492 |
if (work_done < work_limit) { |
2492 |
if (work_done < work_limit) { |
|
|
2493 |
/* Bug/Errata workaround? |
| 2494 |
* Need to kick the TX irq moderation timer. |
| 2495 |
*/ |
| 2496 |
if (sky2_read8(hw, STAT_TX_TIMER_CTRL) == TIM_START) { |
| 2497 |
sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_STOP); |
| 2498 |
sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START); |
| 2499 |
} |
| 2493 |
netif_rx_complete(dev0); |
2500 |
netif_rx_complete(dev0); |
| 2494 |
|
2501 |
|
| 2495 |
/* end of interrupt, re-enables also acts as I/O synchronization */ |
2502 |
/* end of interrupt, re-enables also acts as I/O synchronization */ |