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