rendered paste body--- target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c (revisione 27031)+++ target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c (copia locale)@@ -28,6 +28,9 @@ module_param_named(msg_level, ag71xx_msg_level, int, 0); MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)"); +static void ag71xx_hw_start(struct ag71xx *ag);+static void ag71xx_hw_stop(struct ag71xx *ag);+ static void ag71xx_dump_dma_regs(struct ag71xx *ag) { DBG("%s: dma_tx_ctrl=%08x, dma_tx_desc=%08x, dma_tx_status=%08x\n",@@ -356,6 +359,7 @@ netif_carrier_off(ag->dev); if (netif_msg_link(ag)) printk(KERN_INFO "%s: link down\n", ag->dev->name);+ ag71xx_hw_stop(ag); return; } @@ -405,6 +409,7 @@ ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, fifo5); ag71xx_wr(ag, AG71XX_REG_MAC_IFCTL, ifctl); + ag71xx_hw_start(ag); netif_carrier_on(ag->dev); if (netif_msg_link(ag)) printk(KERN_INFO "%s: link up (%sMbps/%s duplex)\n",@@ -524,11 +529,7 @@ mdelay(100); /* setup MAC configuration registers */- if (pdata->is_ar724x)- ag71xx_wr(ag, AG71XX_REG_MAC_CFG1,- MAC_CFG1_INIT | MAC_CFG1_TFC | MAC_CFG1_RFC);- else- ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_INIT);+ ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_INIT); ag71xx_sb(ag, AG71XX_REG_MAC_CFG2, MAC_CFG2_PAD_CRC_EN | MAC_CFG2_LEN_CHECK);@@ -590,8 +591,6 @@ ag71xx_hw_set_macaddr(ag, dev->dev_addr); - ag71xx_hw_start(ag);- netif_start_queue(dev); return 0;