mmc: s3c6410: add new quirk in sdhci driver and update ADMA descriptor build
[safe/jmp/linux-2.6] / drivers / net / sonic.c
index bd8bc66..26e25d7 100644 (file)
@@ -174,7 +174,7 @@ static void sonic_tx_timeout(struct net_device *dev)
        /* Try to restart the adaptor. */
        sonic_init(dev);
        lp->stats.tx_errors++;
-       dev->trans_start = jiffies;
+       dev->trans_start = jiffies; /* prevent tx timeout */
        netif_wake_queue(dev);
 }
 
@@ -263,8 +263,6 @@ static int sonic_send_packet(struct sk_buff *skb, struct net_device *dev)
 
        SONIC_WRITE(SONIC_CMD, SONIC_CR_TXP);
 
-       dev->trans_start = jiffies;
-
        return NETDEV_TX_OK;
 }
 
@@ -531,7 +529,7 @@ static void sonic_multicast_list(struct net_device *dev)
 {
        struct sonic_local *lp = netdev_priv(dev);
        unsigned int rcr;
-       struct dev_mc_list *dmi = dev->mc_list;
+       struct netdev_hw_addr *ha;
        unsigned char *addr;
        int i;
 
@@ -549,13 +547,14 @@ static void sonic_multicast_list(struct net_device *dev)
                                printk("sonic_multicast_list: mc_count %d\n",
                                       netdev_mc_count(dev));
                        sonic_set_cam_enable(dev, 1);  /* always enable our own address */
-                       for (i = 1; i <= netdev_mc_count(dev); i++) {
-                               addr = dmi->dmi_addr;
-                               dmi = dmi->next;
+                       i = 1;
+                       netdev_for_each_mc_addr(ha, dev) {
+                               addr = ha->addr;
                                sonic_cda_put(dev, i, SONIC_CD_CAP0, addr[1] << 8 | addr[0]);
                                sonic_cda_put(dev, i, SONIC_CD_CAP1, addr[3] << 8 | addr[2]);
                                sonic_cda_put(dev, i, SONIC_CD_CAP2, addr[5] << 8 | addr[4]);
                                sonic_set_cam_enable(dev, sonic_get_cam_enable(dev) | (1 << i));
+                               i++;
                        }
                        SONIC_WRITE(SONIC_CDC, 16);
                        /* issue Load CAM command */