Ignore:
Timestamp:
2011-04-15T02:05:44+02:00 (6 years ago)
Author:
nbd
Message:

ar71xx: sync ethernet driver changes with trunk to fix MDIO issues on ar7240

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c

    r22676 r26672  
    1515 
    1616#define AG71XX_DEFAULT_MSG_ENABLE       \ 
    17         ( NETIF_MSG_DRV                 \ 
     17        (NETIF_MSG_DRV                  \ 
    1818        | NETIF_MSG_PROBE               \ 
    1919        | NETIF_MSG_LINK                \ 
     
    2222        | NETIF_MSG_IFUP                \ 
    2323        | NETIF_MSG_RX_ERR              \ 
    24         | NETIF_MSG_TX_ERR ) 
     24        | NETIF_MSG_TX_ERR) 
    2525 
    2626static int ag71xx_msg_level = -1; 
     
    120120 
    121121        for (i = 0; i < size; i++) { 
    122                 ring->buf[i].desc = (struct ag71xx_desc *)&ring->descs_cpu[i * ring->desc_size]; 
     122                int idx = i * ring->desc_size; 
     123                ring->buf[i].desc = (struct ag71xx_desc *)&ring->descs_cpu[idx]; 
    123124                DBG("ag71xx: ring %p, desc %d at %p\n", 
    124125                        ring, i, ring->buf[i].desc); 
     
    127128        return 0; 
    128129 
    129  err: 
     130err: 
    130131        return err; 
    131132} 
     
    574575{ 
    575576        struct ag71xx *ag = netdev_priv(dev); 
    576         struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); 
    577577        int ret; 
    578578 
     
    581581                goto err; 
    582582 
    583         if (pdata->is_ar724x) 
    584                 ag71xx_hw_init(ag); 
    585  
    586583        napi_enable(&ag->napi); 
    587584 
     
    600597        return 0; 
    601598 
    602  err: 
     599err: 
    603600        ag71xx_rings_cleanup(ag); 
    604601        return ret; 
     
    677674        return NETDEV_TX_OK; 
    678675 
    679  err_drop: 
     676err_drop: 
    680677        dev->stats.tx_dropped++; 
    681678 
     
    686683static int ag71xx_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 
    687684{ 
    688         struct mii_ioctl_data *data = (struct mii_ioctl_data *) &ifr->ifr_data; 
    689685        struct ag71xx *ag = netdev_priv(dev); 
    690686        int ret; 
     
    718714                        break; 
    719715 
    720                 return phy_mii_ioctl(ag->phy_dev, data, cmd); 
     716                return phy_mii_ioctl(ag->phy_dev, ifr, cmd); 
    721717 
    722718        default: 
     
    748744{ 
    749745        struct ag71xx *ag = container_of(work, struct ag71xx, restart_work); 
     746        struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); 
    750747 
    751748        ag71xx_stop(ag->dev); 
     749 
     750        if (pdata->is_ar724x) 
     751                ag71xx_hw_init(ag); 
     752 
    752753        ag71xx_open(ag->dev); 
    753754} 
     
    910911        } 
    911912 
    912  more: 
     913more: 
    913914        DBG("%s: stay in polling mode, rx=%d, tx=%d, limit=%d\n", 
    914915                        dev->name, rx_done, tx_done, limit); 
    915916        return rx_done; 
    916917 
    917  oom: 
     918oom: 
    918919        if (netif_msg_rx_err(ag)) 
    919920                printk(KERN_DEBUG "%s: out of memory\n", dev->name); 
     
    992993}; 
    993994 
    994 static int __init ag71xx_probe(struct platform_device *pdev) 
     995static int __devinit ag71xx_probe(struct platform_device *pdev) 
    995996{ 
    996997        struct net_device *dev; 
     
    10591060        dev->irq = platform_get_irq(pdev, 0); 
    10601061        err = request_irq(dev->irq, ag71xx_interrupt, 
    1061                           IRQF_DISABLED | IRQF_SAMPLE_RANDOM, 
     1062                          IRQF_DISABLED, 
    10621063                          dev->name, dev); 
    10631064        if (err) { 
     
    11071108        return 0; 
    11081109 
    1109  err_phy_disconnect: 
     1110err_phy_disconnect: 
    11101111        ag71xx_phy_disconnect(ag); 
    1111  err_unregister_netdev: 
     1112err_unregister_netdev: 
    11121113        unregister_netdev(dev); 
    1113  err_free_irq: 
     1114err_free_irq: 
    11141115        free_irq(dev->irq, dev); 
    1115  err_unmap_mii_ctrl: 
     1116err_unmap_mii_ctrl: 
    11161117        iounmap(ag->mii_ctrl); 
    1117  err_unmap_base: 
     1118err_unmap_base: 
    11181119        iounmap(ag->mac_base); 
    1119  err_free_dev: 
     1120err_free_dev: 
    11201121        kfree(dev); 
    1121  err_out: 
     1122err_out: 
    11221123        platform_set_drvdata(pdev, NULL); 
    11231124        return err; 
    11241125} 
    11251126 
    1126 static int __exit ag71xx_remove(struct platform_device *pdev) 
     1127static int __devexit ag71xx_remove(struct platform_device *pdev) 
    11271128{ 
    11281129        struct net_device *dev = platform_get_drvdata(pdev); 
     
    11701171        return 0; 
    11711172 
    1172  err_mdio_exit: 
     1173err_mdio_exit: 
    11731174        ag71xx_mdio_driver_exit(); 
    1174  err_debugfs_exit: 
     1175err_debugfs_exit: 
    11751176        ag71xx_debugfs_root_exit(); 
    1176  err_out: 
     1177err_out: 
    11771178        return ret; 
    11781179} 
Note: See TracChangeset for help on using the changeset viewer.