forcedeth boot delay fix
Fix a long boot delay in the forcedeth driver. During initialization, the timeout for the handshake between mgmt unit and driver can be very long. The patch reduces the timeout by eliminating a extra loop around the timeout logic. Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9308 Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com> Cc: Alex Howells <astinus@gentoo.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
490dde8990
commit
9e555930bd
1 changed files with 9 additions and 13 deletions
|
@ -5286,19 +5286,15 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i
|
|||
if (readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_PHY_INIT) {
|
||||
np->mac_in_use = readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_MGMT_ST;
|
||||
dprintk(KERN_INFO "%s: mgmt unit is running. mac in use %x.\n", pci_name(pci_dev), np->mac_in_use);
|
||||
for (i = 0; i < 5000; i++) {
|
||||
msleep(1);
|
||||
if (nv_mgmt_acquire_sema(dev)) {
|
||||
/* management unit setup the phy already? */
|
||||
if ((readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_MASK) ==
|
||||
NVREG_XMITCTL_SYNC_PHY_INIT) {
|
||||
/* phy is inited by mgmt unit */
|
||||
phyinitialized = 1;
|
||||
dprintk(KERN_INFO "%s: Phy already initialized by mgmt unit.\n", pci_name(pci_dev));
|
||||
} else {
|
||||
/* we need to init the phy */
|
||||
}
|
||||
break;
|
||||
if (nv_mgmt_acquire_sema(dev)) {
|
||||
/* management unit setup the phy already? */
|
||||
if ((readl(base + NvRegTransmitterControl) & NVREG_XMITCTL_SYNC_MASK) ==
|
||||
NVREG_XMITCTL_SYNC_PHY_INIT) {
|
||||
/* phy is inited by mgmt unit */
|
||||
phyinitialized = 1;
|
||||
dprintk(KERN_INFO "%s: Phy already initialized by mgmt unit.\n", pci_name(pci_dev));
|
||||
} else {
|
||||
/* we need to init the phy */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue