ALSA: usb-audio: support partially write-protected UAC2 controls
[safe/jmp/linux-2.6] / drivers / net / atp.c
index 9043294..bd2f9d3 100644 (file)
@@ -129,7 +129,6 @@ static int xcvr[NUM_UNITS];                         /* The data transfer mode. */
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/in.h>
-#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/errno.h>
 #include <linux/init.h>
@@ -437,7 +436,7 @@ static int net_open(struct net_device *dev)
        /* The interrupt line is turned off (tri-stated) when the device isn't in
           use.  That's especially important for "attached" interfaces where the
           port or interrupt may be shared. */
-       ret = request_irq(dev->irq, &atp_interrupt, 0, dev->name, dev);
+       ret = request_irq(dev->irq, atp_interrupt, 0, dev->name, dev);
        if (ret)
                return ret;
 
@@ -548,7 +547,7 @@ static void tx_timeout(struct net_device *dev)
        dev->stats.tx_errors++;
        /* Try to restart the adapter. */
        hardware_init(dev);
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
        netif_wake_queue(dev);
        dev->stats.tx_errors++;
 }
@@ -587,7 +586,6 @@ static netdev_tx_t atp_send_packet(struct sk_buff *skb,
        write_reg(ioaddr, IMR, ISR_RxOK | ISR_TxErr | ISR_TxOK);
        write_reg_high(ioaddr, IMR, ISRh_RxErr);
 
-       dev->trans_start = jiffies;
        dev_kfree_skb (skb);
        return NETDEV_TX_OK;
 }
@@ -673,8 +671,8 @@ static irqreturn_t atp_interrupt(int irq, void *dev_instance)
                                netif_wake_queue(dev);  /* Inform upper layers. */
                        }
                        num_tx_since_rx++;
-               } else if (num_tx_since_rx > 8
-                                  && time_after(jiffies, dev->last_rx + HZ)) {
+               } else if (num_tx_since_rx > 8 &&
+                          time_after(jiffies, dev->last_rx + HZ)) {
                        if (net_debug > 2)
                                printk(KERN_DEBUG "%s: Missed packet? No Rx after %d Tx and "
                                           "%ld jiffies status %02x  CMR1 %02x.\n", dev->name,
@@ -804,7 +802,6 @@ static void net_rx(struct net_device *dev)
  done:
        write_reg(ioaddr, CMR1, CMR1_NextPkt);
        lp->last_rx_time = jiffies;
-       return;
 }
 
 static void read_block(long ioaddr, int length, unsigned char *p, int data_mode)
@@ -861,7 +858,7 @@ static void set_rx_mode_8002(struct net_device *dev)
        struct net_local *lp = netdev_priv(dev);
        long ioaddr = dev->base_addr;
 
-       if (dev->mc_count > 0 || (dev->flags & (IFF_ALLMULTI|IFF_PROMISC)))
+       if (!netdev_mc_empty(dev) || (dev->flags & (IFF_ALLMULTI|IFF_PROMISC)))
                lp->addr_mode = CMR2h_PROMISC;
        else
                lp->addr_mode = CMR2h_Normal;
@@ -877,18 +874,17 @@ static void set_rx_mode_8012(struct net_device *dev)
 
        if (dev->flags & IFF_PROMISC) {                 /* Set promiscuous. */
                new_mode = CMR2h_PROMISC;
-       } else if ((dev->mc_count > 1000)  ||  (dev->flags & IFF_ALLMULTI)) {
+       } else if ((netdev_mc_count(dev) > 1000) ||
+                  (dev->flags & IFF_ALLMULTI)) {
                /* Too many to filter perfectly -- accept all multicasts. */
                memset(mc_filter, 0xff, sizeof(mc_filter));
                new_mode = CMR2h_Normal;
        } else {
-               struct dev_mc_list *mclist;
+               struct netdev_hw_addr *ha;
 
                memset(mc_filter, 0, sizeof(mc_filter));
-               for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count;
-                        i++, mclist = mclist->next)
-               {
-                       int filterbit = ether_crc_le(ETH_ALEN, mclist->dmi_addr) & 0x3f;
+               netdev_for_each_mc_addr(ha, dev) {
+                       int filterbit = ether_crc_le(ETH_ALEN, ha->addr) & 0x3f;
                        mc_filter[filterbit >> 5] |= 1 << (filterbit & 31);
                }
                new_mode = CMR2h_Normal;