diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2008-07-18 14:01:20 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-07-22 19:44:13 -0400 |
commit | 8d9853d911b9d3fb767c3886066530c0e39b78ba (patch) | |
tree | ff27498e3d6b747bf07e21baa1b27d07be8f58ee /drivers/net/sfc/net_driver.h | |
parent | 9dadae686fce02a02982fc9c0563f6b917217a66 (diff) |
sfc: Use a separate workqueue for resets
This avoids deadlock in case a reset is triggered during self-test.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/sfc/net_driver.h')
-rw-r--r-- | drivers/net/sfc/net_driver.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/sfc/net_driver.h b/drivers/net/sfc/net_driver.h index d803b86c647c..219c74a772c3 100644 --- a/drivers/net/sfc/net_driver.h +++ b/drivers/net/sfc/net_driver.h | |||
@@ -616,7 +616,9 @@ union efx_multicast_hash { | |||
616 | * @pci_dev: The PCI device | 616 | * @pci_dev: The PCI device |
617 | * @type: Controller type attributes | 617 | * @type: Controller type attributes |
618 | * @legacy_irq: IRQ number | 618 | * @legacy_irq: IRQ number |
619 | * @workqueue: Workqueue for resets, port reconfigures and the HW monitor | 619 | * @workqueue: Workqueue for port reconfigures and the HW monitor. |
620 | * Work items do not hold and must not acquire RTNL. | ||
621 | * @reset_workqueue: Workqueue for resets. Work item will acquire RTNL. | ||
620 | * @reset_work: Scheduled reset workitem | 622 | * @reset_work: Scheduled reset workitem |
621 | * @monitor_work: Hardware monitor workitem | 623 | * @monitor_work: Hardware monitor workitem |
622 | * @membase_phys: Memory BAR value as physical address | 624 | * @membase_phys: Memory BAR value as physical address |
@@ -684,6 +686,7 @@ struct efx_nic { | |||
684 | const struct efx_nic_type *type; | 686 | const struct efx_nic_type *type; |
685 | int legacy_irq; | 687 | int legacy_irq; |
686 | struct workqueue_struct *workqueue; | 688 | struct workqueue_struct *workqueue; |
689 | struct workqueue_struct *reset_workqueue; | ||
687 | struct work_struct reset_work; | 690 | struct work_struct reset_work; |
688 | struct delayed_work monitor_work; | 691 | struct delayed_work monitor_work; |
689 | resource_size_t membase_phys; | 692 | resource_size_t membase_phys; |