diff options
author | Ron Mercer <ron.mercer@qlogic.com> | 2009-06-23 05:00:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-23 19:36:27 -0400 |
commit | 0f77ca928b5d1ea17afc7a95682b6534611a719c (patch) | |
tree | 3bddd6e6b4c3e26536c37b9c006153eb782e6566 /drivers/net/qla3xxx.c | |
parent | e5a673742e34eca8ecb13c3e54ceee2c268351a0 (diff) |
qla3xxx: Don't sleep while holding lock.
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/qla3xxx.c')
-rw-r--r-- | drivers/net/qla3xxx.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index 68be714d356f..3e4b67aaa6ea 100644 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c | |||
@@ -3142,6 +3142,7 @@ static int ql_adapter_initialize(struct ql3_adapter *qdev) | |||
3142 | (void __iomem *)port_regs; | 3142 | (void __iomem *)port_regs; |
3143 | u32 delay = 10; | 3143 | u32 delay = 10; |
3144 | int status = 0; | 3144 | int status = 0; |
3145 | unsigned long hw_flags = 0; | ||
3145 | 3146 | ||
3146 | if(ql_mii_setup(qdev)) | 3147 | if(ql_mii_setup(qdev)) |
3147 | return -1; | 3148 | return -1; |
@@ -3351,7 +3352,9 @@ static int ql_adapter_initialize(struct ql3_adapter *qdev) | |||
3351 | value = ql_read_page0_reg(qdev, &port_regs->portStatus); | 3352 | value = ql_read_page0_reg(qdev, &port_regs->portStatus); |
3352 | if (value & PORT_STATUS_IC) | 3353 | if (value & PORT_STATUS_IC) |
3353 | break; | 3354 | break; |
3355 | spin_unlock_irqrestore(&qdev->hw_lock, hw_flags); | ||
3354 | msleep(500); | 3356 | msleep(500); |
3357 | spin_lock_irqsave(&qdev->hw_lock, hw_flags); | ||
3355 | } while (--delay); | 3358 | } while (--delay); |
3356 | 3359 | ||
3357 | if (delay == 0) { | 3360 | if (delay == 0) { |