diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2008-07-18 19:01:20 +0100 |
---|---|---|
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) | |
download | blackbird-op-linux-8d9853d911b9d3fb767c3886066530c0e39b78ba.tar.gz blackbird-op-linux-8d9853d911b9d3fb767c3886066530c0e39b78ba.zip |
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 { * @pci_dev: The PCI device * @type: Controller type attributes * @legacy_irq: IRQ number - * @workqueue: Workqueue for resets, port reconfigures and the HW monitor + * @workqueue: Workqueue for port reconfigures and the HW monitor. + * Work items do not hold and must not acquire RTNL. + * @reset_workqueue: Workqueue for resets. Work item will acquire RTNL. * @reset_work: Scheduled reset workitem * @monitor_work: Hardware monitor workitem * @membase_phys: Memory BAR value as physical address @@ -684,6 +686,7 @@ struct efx_nic { const struct efx_nic_type *type; int legacy_irq; struct workqueue_struct *workqueue; + struct workqueue_struct *reset_workqueue; struct work_struct reset_work; struct delayed_work monitor_work; resource_size_t membase_phys; |