{\r
init_completion(&ap->mdio_complete);\r
vmac_writel(ap, val, MDIO_DATA);\r
- wait_for_completion(&ap->mdio_complete);\r
+ if(!wait_for_completion_timeout(&ap->mdio_complete, msecs_to_jiffies(1000)))\r
+ printk("Time out for waiting mdio completion\n");\r
}\r
\r
static int vmac_mdio_read(struct mii_bus *bus, int phy_id, int phy_reg)\r
\r
/* enable, after all other bits are set */\r
vmac_writel(ap, temp | EN_MASK, CONTROL);\r
+\r
}\r
\r
static void rk29_vmac_shutdown(struct net_device *dev)\r
\r
if (ndev) {\r
if (netif_running(ndev)) {\r
+ if (ndev->irq)\r
+ disable_irq(ndev->irq);\r
+ netif_stop_queue(ndev);\r
netif_device_detach(ndev);\r
rk29_vmac_shutdown(ndev);\r
}\r
if (netif_running(ndev)) {\r
rk29_init_vmac(ndev);\r
netif_device_attach(ndev);\r
+ netif_start_queue(ndev);\r
+ if (ndev->irq)\r
+ enable_irq(ndev->irq);\r
}\r
}\r
return 0;\r