aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bcm63xx_enet.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bcm63xx_enet.c')
-rw-r--r--drivers/net/bcm63xx_enet.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/net/bcm63xx_enet.c b/drivers/net/bcm63xx_enet.c
index 17460aba3bae..faf5add894d7 100644
--- a/drivers/net/bcm63xx_enet.c
+++ b/drivers/net/bcm63xx_enet.c
@@ -341,11 +341,9 @@ static int bcm_enet_receive_queue(struct net_device *dev, int budget)
341 } 341 }
342 342
343 skb_put(skb, len); 343 skb_put(skb, len);
344 skb->dev = dev;
345 skb->protocol = eth_type_trans(skb, dev); 344 skb->protocol = eth_type_trans(skb, dev);
346 priv->stats.rx_packets++; 345 priv->stats.rx_packets++;
347 priv->stats.rx_bytes += len; 346 priv->stats.rx_bytes += len;
348 dev->last_rx = jiffies;
349 netif_receive_skb(skb); 347 netif_receive_skb(skb);
350 348
351 } while (--budget > 0); 349 } while (--budget > 0);
@@ -567,7 +565,6 @@ static int bcm_enet_start_xmit(struct sk_buff *skb, struct net_device *dev)
567 565
568 priv->stats.tx_bytes += skb->len; 566 priv->stats.tx_bytes += skb->len;
569 priv->stats.tx_packets++; 567 priv->stats.tx_packets++;
570 dev->trans_start = jiffies;
571 ret = NETDEV_TX_OK; 568 ret = NETDEV_TX_OK;
572 569
573out_unlock: 570out_unlock:
@@ -605,7 +602,7 @@ static int bcm_enet_set_mac_address(struct net_device *dev, void *p)
605static void bcm_enet_set_multicast_list(struct net_device *dev) 602static void bcm_enet_set_multicast_list(struct net_device *dev)
606{ 603{
607 struct bcm_enet_priv *priv; 604 struct bcm_enet_priv *priv;
608 struct dev_mc_list *mc_list; 605 struct netdev_hw_addr *ha;
609 u32 val; 606 u32 val;
610 int i; 607 int i;
611 608
@@ -633,14 +630,14 @@ static void bcm_enet_set_multicast_list(struct net_device *dev)
633 } 630 }
634 631
635 i = 0; 632 i = 0;
636 netdev_for_each_mc_addr(mc_list, dev) { 633 netdev_for_each_mc_addr(ha, dev) {
637 u8 *dmi_addr; 634 u8 *dmi_addr;
638 u32 tmp; 635 u32 tmp;
639 636
640 if (i == 3) 637 if (i == 3)
641 break; 638 break;
642 /* update perfect match registers */ 639 /* update perfect match registers */
643 dmi_addr = mc_list->dmi_addr; 640 dmi_addr = ha->addr;
644 tmp = (dmi_addr[2] << 24) | (dmi_addr[3] << 16) | 641 tmp = (dmi_addr[2] << 24) | (dmi_addr[3] << 16) |
645 (dmi_addr[4] << 8) | dmi_addr[5]; 642 (dmi_addr[4] << 8) | dmi_addr[5];
646 enet_writel(priv, tmp, ENET_PML_REG(i + 1)); 643 enet_writel(priv, tmp, ENET_PML_REG(i + 1));
@@ -960,7 +957,9 @@ static int bcm_enet_open(struct net_device *dev)
960 /* all set, enable mac and interrupts, start dma engine and 957 /* all set, enable mac and interrupts, start dma engine and
961 * kick rx dma channel */ 958 * kick rx dma channel */
962 wmb(); 959 wmb();
963 enet_writel(priv, ENET_CTL_ENABLE_MASK, ENET_CTL_REG); 960 val = enet_readl(priv, ENET_CTL_REG);
961 val |= ENET_CTL_ENABLE_MASK;
962 enet_writel(priv, val, ENET_CTL_REG);
964 enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG); 963 enet_dma_writel(priv, ENETDMA_CFG_EN_MASK, ENETDMA_CFG_REG);
965 enet_dma_writel(priv, ENETDMA_CHANCFG_EN_MASK, 964 enet_dma_writel(priv, ENETDMA_CHANCFG_EN_MASK,
966 ENETDMA_CHANCFG_REG(priv->rx_chan)); 965 ENETDMA_CHANCFG_REG(priv->rx_chan));
@@ -1647,7 +1646,6 @@ static int __devinit bcm_enet_probe(struct platform_device *pdev)
1647 if (!dev) 1646 if (!dev)
1648 return -ENOMEM; 1647 return -ENOMEM;
1649 priv = netdev_priv(dev); 1648 priv = netdev_priv(dev);
1650 memset(priv, 0, sizeof(*priv));
1651 1649
1652 ret = compute_hw_mtu(priv, dev->mtu); 1650 ret = compute_hw_mtu(priv, dev->mtu);
1653 if (ret) 1651 if (ret)