Preparations to caching root in path_walk()
[safe/jmp/linux-2.6] / drivers / net / netx-eth.c
index a53644f..1861d5b 100644 (file)
 #include <linux/mii.h>
 
 #include <asm/io.h>
-#include <asm/hardware.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/netx-regs.h>
-#include <asm/arch/pfifo.h>
-#include <asm/arch/xc.h>
-#include <asm/arch/eth.h>
+#include <mach/hardware.h>
+#include <mach/netx-regs.h>
+#include <mach/pfifo.h>
+#include <mach/xc.h>
+#include <mach/eth.h>
 
 /* XC Fifo Offsets */
 #define EMPTY_PTR_FIFO(xcno)    (0 + ((xcno) << 3))    /* Index of the empty pointer FIFO */
@@ -97,7 +96,6 @@
 struct netx_eth_priv {
        void                    __iomem *sram_base, *xpec_base, *xmac_base;
        int                     id;
-       struct net_device_stats stats;
        struct mii_if_info      mii;
        u32                     msg_enable;
        struct xc               *xc;
@@ -129,8 +127,8 @@ netx_eth_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
                   FIFO_PTR_FRAMELEN(len));
 
        ndev->trans_start = jiffies;
-       priv->stats.tx_packets++;
-       priv->stats.tx_bytes += skb->len;
+       ndev->stats.tx_packets++;
+       ndev->stats.tx_bytes += skb->len;
 
        netif_stop_queue(ndev);
        spin_unlock_irq(&priv->lock);
@@ -156,7 +154,7 @@ static void netx_eth_receive(struct net_device *ndev)
        if (unlikely(skb == NULL)) {
                printk(KERN_NOTICE "%s: Low memory, packet dropped.\n",
                        ndev->name);
-               priv->stats.rx_dropped++;
+               ndev->stats.rx_dropped++;
                return;
        }
 
@@ -167,12 +165,10 @@ static void netx_eth_receive(struct net_device *ndev)
        pfifo_push(EMPTY_PTR_FIFO(priv->id),
                FIFO_PTR_SEGMENT(seg) | FIFO_PTR_FRAMENO(frameno));
 
-       ndev->last_rx = jiffies;
-       skb->dev = ndev;
        skb->protocol = eth_type_trans(skb, ndev);
        netif_rx(skb);
-       priv->stats.rx_packets++;
-       priv->stats.rx_bytes += len;
+       ndev->stats.rx_packets++;
+       ndev->stats.rx_bytes += len;
 }
 
 static irqreturn_t
@@ -192,7 +188,7 @@ netx_eth_interrupt(int irq, void *dev_id)
 
                if ((status & ISR_CON_HI) || (status & ISR_IND_HI))
                        printk("%s: unexpected status: 0x%08x\n",
-                           __FUNCTION__, status);
+                           __func__, status);
 
                fill_level =
                    readl(NETX_PFIFO_FILL_LEVEL(IND_FIFO_PORT_LO(priv->id)));
@@ -211,12 +207,6 @@ netx_eth_interrupt(int irq, void *dev_id)
        return IRQ_HANDLED;
 }
 
-static struct net_device_stats *netx_eth_query_statistics(struct net_device *ndev)
-{
-       struct netx_eth_priv *priv = netdev_priv(ndev);
-       return &priv->stats;
-}
-
 static int netx_eth_open(struct net_device *ndev)
 {
        struct netx_eth_priv *priv = netdev_priv(ndev);
@@ -324,7 +314,6 @@ static int netx_eth_enable(struct net_device *ndev)
        ndev->hard_start_xmit = netx_eth_hard_start_xmit;
        ndev->tx_timeout = netx_eth_timeout;
        ndev->watchdog_timeo = msecs_to_jiffies(5000);
-       ndev->get_stats = netx_eth_query_statistics;
        ndev->set_multicast_list = netx_eth_set_multicast_list;
 
        priv->msg_enable       = NETIF_MSG_LINK;
@@ -391,7 +380,6 @@ static int netx_eth_drv_probe(struct platform_device *pdev)
                ret = -ENOMEM;
                goto exit;
        }
-       SET_MODULE_OWNER(ndev);
        SET_NETDEV_DEV(ndev, &pdev->dev);
 
        platform_set_drvdata(pdev, ndev);
@@ -412,6 +400,8 @@ static int netx_eth_drv_probe(struct platform_device *pdev)
        priv->xmac_base = priv->xc->xmac_base;
        priv->sram_base = priv->xc->sram_base;
 
+       spin_lock_init(&priv->lock);
+
        ret = pfifo_request(PFIFO_MASK(priv->id));
        if (ret) {
                printk("unable to request PFIFO\n");
@@ -512,4 +502,4 @@ module_exit(netx_eth_cleanup);
 
 MODULE_AUTHOR("Sascha Hauer, Pengutronix");
 MODULE_LICENSE("GPL");
-
+MODULE_ALIAS("platform:" CARDNAME);