X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/52696b5d81d91be3b567e67bbc60ecfe125a4716..c680366531724621150ca3d6cbb6d52c0c1b96e2:/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index 88ed22a42..47fc67407 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -13,6 +13,21 @@ #include "ag71xx.h" +#define AG71XX_DEFAULT_MSG_ENABLE \ + ( NETIF_MSG_DRV \ + | NETIF_MSG_PROBE \ + | NETIF_MSG_LINK \ + | NETIF_MSG_TIMER \ + | NETIF_MSG_IFDOWN \ + | NETIF_MSG_IFUP \ + | NETIF_MSG_RX_ERR \ + | NETIF_MSG_TX_ERR ) + +static int ag71xx_debug = -1; + +module_param(ag71xx_debug, int, 0); +MODULE_PARM_DESC(ag71xx_debug, "Debug level (-1=defaults,0=none,...,16=all)"); + static void ag71xx_dump_regs(struct ag71xx *ag) { DBG("%s: mac_cfg1=%08x, mac_cfg2=%08x, ipg=%08x, hdx=%08x, mfl=%08x\n", @@ -32,7 +47,7 @@ static void ag71xx_dump_regs(struct ag71xx *ag) ag71xx_rr(ag, AG71XX_REG_FIFO_CFG0), ag71xx_rr(ag, AG71XX_REG_FIFO_CFG1), ag71xx_rr(ag, AG71XX_REG_FIFO_CFG2)); - DBG("%s: fifo_cfg3=%08x, fifo_cfg3=%08x, fifo_cfg5=%08x\n", + DBG("%s: fifo_cfg3=%08x, fifo_cfg4=%08x, fifo_cfg5=%08x\n", ag->dev->name, ag71xx_rr(ag, AG71XX_REG_FIFO_CFG3), ag71xx_rr(ag, AG71XX_REG_FIFO_CFG4), @@ -70,7 +85,7 @@ static int ag71xx_ring_alloc(struct ag71xx_ring *ring, unsigned int size) return 0; -err: + err: return err; } @@ -253,6 +268,8 @@ static void ag71xx_hw_set_macaddr(struct ag71xx *ag, unsigned char *mac) #define MAC_CFG1_INIT (MAC_CFG1_RXE | MAC_CFG1_TXE | MAC_CFG1_SRX \ | MAC_CFG1_STX) +#define FIFO_CFG0_INIT (FIFO_CFG0_ALL << FIFO_CFG0_ENABLE_SHIFT) + static void ag71xx_hw_init(struct ag71xx *ag) { struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); @@ -272,7 +289,7 @@ static void ag71xx_hw_init(struct ag71xx *ag) ag71xx_sb(ag, AG71XX_REG_MAC_CFG2, MAC_CFG2_PAD_CRC_EN | MAC_CFG2_LEN_CHECK); - ag71xx_wr(ag, AG71XX_REG_FIFO_CFG0, 0x00001f00); + ag71xx_wr(ag, AG71XX_REG_FIFO_CFG0, FIFO_CFG0_INIT); ag71xx_mii_ctrl_set_if(ag, pdata->mii_if); @@ -326,7 +343,7 @@ static int ag71xx_open(struct net_device *dev) return 0; -err: + err: ag71xx_rings_cleanup(ag); return ret; } @@ -404,7 +421,7 @@ static int ag71xx_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) return 0; -err_drop: + err_drop: dev->stats.tx_dropped++; dev_kfree_skb(skb); @@ -601,8 +618,9 @@ static int ag71xx_poll(struct napi_struct *napi, int limit) } if (status & AG71XX_INT_RX_OF) { - printk(KERN_ALERT "%s: rx owerflow, restarting dma\n", - dev->name); + if (netif_msg_rx_err(ag)) + printk(KERN_ALERT "%s: rx owerflow, restarting dma\n", + dev->name); /* ack interrupt */ ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_OF); @@ -692,6 +710,8 @@ static int __init ag71xx_probe(struct platform_device *pdev) ag->pdev = pdev; ag->dev = dev; ag->mii_bus = &ag71xx_mdio_bus->mii_bus; + ag->msg_enable = netif_msg_init(ag71xx_debug, + AG71XX_DEFAULT_MSG_ENABLE); spin_lock_init(&ag->lock); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mac_base"); @@ -794,19 +814,19 @@ static int __init ag71xx_probe(struct platform_device *pdev) return 0; -err_unregister_netdev: + err_unregister_netdev: unregister_netdev(dev); -err_free_irq: + err_free_irq: free_irq(dev->irq, dev); -err_unmap_mii_ctrl: + err_unmap_mii_ctrl: iounmap(ag->mii_ctrl); -err_unmap_base2: + err_unmap_base2: iounmap(ag->mac_base2); -err_unmap_base1: + err_unmap_base1: iounmap(ag->mac_base); -err_free_dev: + err_free_dev: kfree(dev); -err_out: + err_out: platform_set_drvdata(pdev, NULL); return err; } @@ -853,9 +873,9 @@ static int __init ag71xx_module_init(void) return 0; -err_mdio_exit: + err_mdio_exit: ag71xx_mdio_driver_exit(); -err_out: + err_out: return ret; }