]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/saa9730.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6-omap-h63xx.git] / drivers / net / saa9730.c
index ad94358ece8943da8e9327052657b99bc7a71301..7dae4d404978e407c67856736825a369098fd56c 100644 (file)
@@ -690,9 +690,9 @@ static int lan_saa9730_rx(struct net_device *dev)
                                lp->stats.rx_packets++;
                                skb_reserve(skb, 2);    /* 16 byte align */
                                skb_put(skb, len);      /* make room */
-                               eth_copy_and_sum(skb,
+                               skb_copy_to_linear_data(skb,
                                                 (unsigned char *) pData,
-                                                len, 0);
+                                                len);
                                skb->protocol = eth_type_trans(skb, dev);
                                netif_rx(skb);
                                dev->last_rx = jiffies;
@@ -940,15 +940,14 @@ static void lan_saa9730_set_multicast(struct net_device *dev)
                       CAM_CONTROL_GROUP_ACC | CAM_CONTROL_BROAD_ACC,
                       &lp->lan_saa9730_regs->CamCtl);
        } else {
-               if (dev->flags & IFF_ALLMULTI) {
+               if (dev->flags & IFF_ALLMULTI || dev->mc_count) {
                        /* accept all multicast packets */
-                       writel(CAM_CONTROL_COMP_EN | CAM_CONTROL_GROUP_ACC |
-                              CAM_CONTROL_BROAD_ACC,
-                              &lp->lan_saa9730_regs->CamCtl);
-               } else {
                        /*
                         * Will handle the multicast stuff later. -carstenl
                         */
+                       writel(CAM_CONTROL_COMP_EN | CAM_CONTROL_GROUP_ACC |
+                              CAM_CONTROL_BROAD_ACC,
+                              &lp->lan_saa9730_regs->CamCtl);
                }
        }