forcedeth boot delay fix
Subsystems (2)
PATCH 1/1 forcedeth boot delay fix
This patch fixes 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.
drivers/net/forcedeth.c +10 -13
@@ -5286,20 +5286,17 @@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 */ } +break ; } } }
Quoted 33 lines · On Sun, 18 Nov 2007 14:13:41 -0500 Ayaz Abdulla <[email protected]> wrote:
This patch fixes 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.
Signed-off-by Ayaz Abdulla <[email protected]>[patch-forcedeth-sema-fix text/plain (1.3KB)]
drivers/net/forcedeth.c +4
-13@@ -5286,20 +5286,17 @@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 ) {
drivers/net/forcedeth.c line 5302
Quoted 10 lines
drivers/net/forcedeth.c +6
-0+/* 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 ; } } }
drivers/net/forcedeth.c: In function 'nv_probe':drivers/net/forcedeth.c:5307: error: break statement not within loop or switch
Missed that "break". Here is the corrected patch.
Quoted 39 lines · Andrew Morton
Quoted 36 lines · On Sun, 18 Nov 2007 14:13:41 -0500 Ayaz Abdulla <[email protected]> wrote:
This patch fixes 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.
Signed-off-by Ayaz Abdulla <[email protected]>[patch-forcedeth-sema-fix text/plain (1.3KB)]
drivers/net/forcedeth.c +9
-13@@ -5286,20 +5286,17 @@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 */ }
Quoted 8 lines
drivers/net/forcedeth.c line 5302
Quoted 4 lines
drivers/net/forcedeth.c +1
-0+break ; } } }
drivers/net/forcedeth.c: In function 'nv_probe':drivers/net/forcedeth.c:5307: error: break statement not within loop or switch
drivers/net/forcedeth.c +9 -13
@@ -5286,19 +5286,15 @@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 */ } } }