ath9k: Fix rate control update for aggregated frames
[safe/jmp/linux-2.6] / drivers / net / arm / am79c961a.c
index ddd12d4..c2d012f 100644 (file)
@@ -28,7 +28,7 @@
 #include <linux/bitops.h>
 #include <linux/platform_device.h>
 
-#include <asm/hardware.h>
+#include <mach/hardware.h>
 #include <asm/io.h>
 #include <asm/system.h>
 
@@ -208,9 +208,9 @@ am79c961_init_for_open(struct net_device *dev)
        /*
         * Stop the chip.
         */
-       spin_lock_irqsave(priv->chip_lock, flags);
+       spin_lock_irqsave(&priv->chip_lock, flags);
        write_rreg (dev->base_addr, CSR0, CSR0_BABL|CSR0_CERR|CSR0_MISS|CSR0_MERR|CSR0_TINT|CSR0_RINT|CSR0_STOP);
-       spin_unlock_irqrestore(priv->chip_lock, flags);
+       spin_unlock_irqrestore(&priv->chip_lock, flags);
 
        write_ireg (dev->base_addr, 5, 0x00a0); /* Receive address LED */
        write_ireg (dev->base_addr, 6, 0x0081); /* Collision LED */
@@ -332,10 +332,10 @@ am79c961_close(struct net_device *dev)
        netif_stop_queue(dev);
        netif_carrier_off(dev);
 
-       spin_lock_irqsave(priv->chip_lock, flags);
+       spin_lock_irqsave(&priv->chip_lock, flags);
        write_rreg (dev->base_addr, CSR0, CSR0_STOP);
        write_rreg (dev->base_addr, CSR3, CSR3_MASKALL);
-       spin_unlock_irqrestore(priv->chip_lock, flags);
+       spin_unlock_irqrestore(&priv->chip_lock, flags);
 
        free_irq (dev->irq, dev);
 
@@ -391,7 +391,7 @@ static void am79c961_setmulticastlist (struct net_device *dev)
                        am79c961_mc_hash(dmi, multi_hash);
        }
 
-       spin_lock_irqsave(priv->chip_lock, flags);
+       spin_lock_irqsave(&priv->chip_lock, flags);
 
        stopped = read_rreg(dev->base_addr, CSR0) & CSR0_STOP;
 
@@ -405,16 +405,16 @@ static void am79c961_setmulticastlist (struct net_device *dev)
                 * Spin waiting for chip to report suspend mode
                 */
                while ((read_rreg(dev->base_addr, CTRL1) & CTRL1_SPND) == 0) {
-                       spin_unlock_irqrestore(priv->chip_lock, flags);
+                       spin_unlock_irqrestore(&priv->chip_lock, flags);
                        nop();
-                       spin_lock_irqsave(priv->chip_lock, flags);
+                       spin_lock_irqsave(&priv->chip_lock, flags);
                }
        }
 
        /*
         * Update the multicast hash table
         */
-       for (i = 0; i < sizeof(multi_hash) / sizeof(multi_hash[0]); i++)
+       for (i = 0; i < ARRAY_SIZE(multi_hash); i++)
                write_rreg(dev->base_addr, i + LADRL, multi_hash[i]);
 
        /*
@@ -429,7 +429,7 @@ static void am79c961_setmulticastlist (struct net_device *dev)
                write_rreg(dev->base_addr, CTRL1, 0);
        }
 
-       spin_unlock_irqrestore(priv->chip_lock, flags);
+       spin_unlock_irqrestore(&priv->chip_lock, flags);
 }
 
 static void am79c961_timeout(struct net_device *dev)
@@ -467,10 +467,10 @@ am79c961_sendpacket(struct sk_buff *skb, struct net_device *dev)
        am_writeword (dev, hdraddr + 2, TMD_OWN|TMD_STP|TMD_ENP);
        priv->txhead = head;
 
-       spin_lock_irqsave(priv->chip_lock, flags);
+       spin_lock_irqsave(&priv->chip_lock, flags);
        write_rreg (dev->base_addr, CSR0, CSR0_TDMD|CSR0_IENA);
        dev->trans_start = jiffies;
-       spin_unlock_irqrestore(priv->chip_lock, flags);
+       spin_unlock_irqrestore(&priv->chip_lock, flags);
 
        /*
         * If the next packet is owned by the ethernet device,
@@ -526,14 +526,12 @@ am79c961_rx(struct net_device *dev, struct dev_priv *priv)
                skb = dev_alloc_skb(len + 2);
 
                if (skb) {
-                       skb->dev = dev;
                        skb_reserve(skb, 2);
 
                        am_readbuffer(dev, pktaddr, skb_put(skb, len), len);
                        am_writeword(dev, hdraddr + 2, RMD_OWN);
                        skb->protocol = eth_type_trans(skb, dev);
                        netif_rx(skb);
-                       dev->last_rx = jiffies;
                        priv->stats.rx_bytes += len;
                        priv->stats.rx_packets ++;
                } else {
@@ -635,7 +633,7 @@ static void am79c961_poll_controller(struct net_device *dev)
 {
        unsigned long flags;
        local_irq_save(flags);
-       am79c961_interrupt(dev->irq, dev, NULL);
+       am79c961_interrupt(dev->irq, dev);
        local_irq_restore(flags);
 }
 #endif
@@ -694,11 +692,15 @@ static int __init am79c961_probe(struct platform_device *pdev)
         * done by the ether bootp loader.
         */
        dev->base_addr = res->start;
-       dev->irq = platform_get_irq(pdev, 0);
+       ret = platform_get_irq(pdev, 0);
 
-       ret = -ENODEV;
-       if (dev->irq < 0)
+       if (ret < 0) {
+               ret = -ENODEV;
                goto nodev;
+       }
+       dev->irq = ret;
+
+       ret = -ENODEV;
        if (!request_region(dev->base_addr, 0x18, dev->name))
                goto nodev;
 
@@ -742,12 +744,8 @@ static int __init am79c961_probe(struct platform_device *pdev)
 
        ret = register_netdev(dev);
        if (ret == 0) {
-               printk(KERN_INFO "%s: ether address ", dev->name);
-
-               /* Retrive and print the ethernet address. */
-               for (i = 0; i < 6; i++)
-                       printk (i == 5 ? "%02x\n" : "%02x:", dev->dev_addr[i]);
-
+               printk(KERN_INFO "%s: ether address %pM\n",
+                      dev->name, dev->dev_addr);
                return 0;
        }