diff options
-rw-r--r-- | drivers/net/sungem.c | 58 | ||||
-rw-r--r-- | drivers/net/sungem.h | 1 |
2 files changed, 29 insertions, 30 deletions
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index 1c5408f83937..c1a344829b54 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -320,28 +320,28 @@ static int gem_txmac_interrupt(struct net_device *dev, struct gem *gp, u32 gem_s | |||
320 | 320 | ||
321 | if (txmac_stat & MAC_TXSTAT_URUN) { | 321 | if (txmac_stat & MAC_TXSTAT_URUN) { |
322 | netdev_err(dev, "TX MAC xmit underrun\n"); | 322 | netdev_err(dev, "TX MAC xmit underrun\n"); |
323 | gp->net_stats.tx_fifo_errors++; | 323 | dev->stats.tx_fifo_errors++; |
324 | } | 324 | } |
325 | 325 | ||
326 | if (txmac_stat & MAC_TXSTAT_MPE) { | 326 | if (txmac_stat & MAC_TXSTAT_MPE) { |
327 | netdev_err(dev, "TX MAC max packet size error\n"); | 327 | netdev_err(dev, "TX MAC max packet size error\n"); |
328 | gp->net_stats.tx_errors++; | 328 | dev->stats.tx_errors++; |
329 | } | 329 | } |
330 | 330 | ||
331 | /* The rest are all cases of one of the 16-bit TX | 331 | /* The rest are all cases of one of the 16-bit TX |
332 | * counters expiring. | 332 | * counters expiring. |
333 | */ | 333 | */ |
334 | if (txmac_stat & MAC_TXSTAT_NCE) | 334 | if (txmac_stat & MAC_TXSTAT_NCE) |
335 | gp->net_stats.collisions += 0x10000; | 335 | dev->stats.collisions += 0x10000; |
336 | 336 | ||
337 | if (txmac_stat & MAC_TXSTAT_ECE) { | 337 | if (txmac_stat & MAC_TXSTAT_ECE) { |
338 | gp->net_stats.tx_aborted_errors += 0x10000; | 338 | dev->stats.tx_aborted_errors += 0x10000; |
339 | gp->net_stats.collisions += 0x10000; | 339 | dev->stats.collisions += 0x10000; |
340 | } | 340 | } |
341 | 341 | ||
342 | if (txmac_stat & MAC_TXSTAT_LCE) { | 342 | if (txmac_stat & MAC_TXSTAT_LCE) { |
343 | gp->net_stats.tx_aborted_errors += 0x10000; | 343 | dev->stats.tx_aborted_errors += 0x10000; |
344 | gp->net_stats.collisions += 0x10000; | 344 | dev->stats.collisions += 0x10000; |
345 | } | 345 | } |
346 | 346 | ||
347 | /* We do not keep track of MAC_TXSTAT_FCE and | 347 | /* We do not keep track of MAC_TXSTAT_FCE and |
@@ -469,20 +469,20 @@ static int gem_rxmac_interrupt(struct net_device *dev, struct gem *gp, u32 gem_s | |||
469 | u32 smac = readl(gp->regs + MAC_SMACHINE); | 469 | u32 smac = readl(gp->regs + MAC_SMACHINE); |
470 | 470 | ||
471 | netdev_err(dev, "RX MAC fifo overflow smac[%08x]\n", smac); | 471 | netdev_err(dev, "RX MAC fifo overflow smac[%08x]\n", smac); |
472 | gp->net_stats.rx_over_errors++; | 472 | dev->stats.rx_over_errors++; |
473 | gp->net_stats.rx_fifo_errors++; | 473 | dev->stats.rx_fifo_errors++; |
474 | 474 | ||
475 | ret = gem_rxmac_reset(gp); | 475 | ret = gem_rxmac_reset(gp); |
476 | } | 476 | } |
477 | 477 | ||
478 | if (rxmac_stat & MAC_RXSTAT_ACE) | 478 | if (rxmac_stat & MAC_RXSTAT_ACE) |
479 | gp->net_stats.rx_frame_errors += 0x10000; | 479 | dev->stats.rx_frame_errors += 0x10000; |
480 | 480 | ||
481 | if (rxmac_stat & MAC_RXSTAT_CCE) | 481 | if (rxmac_stat & MAC_RXSTAT_CCE) |
482 | gp->net_stats.rx_crc_errors += 0x10000; | 482 | dev->stats.rx_crc_errors += 0x10000; |
483 | 483 | ||
484 | if (rxmac_stat & MAC_RXSTAT_LCE) | 484 | if (rxmac_stat & MAC_RXSTAT_LCE) |
485 | gp->net_stats.rx_length_errors += 0x10000; | 485 | dev->stats.rx_length_errors += 0x10000; |
486 | 486 | ||
487 | /* We do not track MAC_RXSTAT_FCE and MAC_RXSTAT_VCE | 487 | /* We do not track MAC_RXSTAT_FCE and MAC_RXSTAT_VCE |
488 | * events. | 488 | * events. |
@@ -594,7 +594,7 @@ static int gem_abnormal_irq(struct net_device *dev, struct gem *gp, u32 gem_stat | |||
594 | if (netif_msg_rx_err(gp)) | 594 | if (netif_msg_rx_err(gp)) |
595 | printk(KERN_DEBUG "%s: no buffer for rx frame\n", | 595 | printk(KERN_DEBUG "%s: no buffer for rx frame\n", |
596 | gp->dev->name); | 596 | gp->dev->name); |
597 | gp->net_stats.rx_dropped++; | 597 | dev->stats.rx_dropped++; |
598 | } | 598 | } |
599 | 599 | ||
600 | if (gem_status & GREG_STAT_RXTAGERR) { | 600 | if (gem_status & GREG_STAT_RXTAGERR) { |
@@ -602,7 +602,7 @@ static int gem_abnormal_irq(struct net_device *dev, struct gem *gp, u32 gem_stat | |||
602 | if (netif_msg_rx_err(gp)) | 602 | if (netif_msg_rx_err(gp)) |
603 | printk(KERN_DEBUG "%s: corrupt rx tag framing\n", | 603 | printk(KERN_DEBUG "%s: corrupt rx tag framing\n", |
604 | gp->dev->name); | 604 | gp->dev->name); |
605 | gp->net_stats.rx_errors++; | 605 | dev->stats.rx_errors++; |
606 | 606 | ||
607 | goto do_reset; | 607 | goto do_reset; |
608 | } | 608 | } |
@@ -684,7 +684,7 @@ static __inline__ void gem_tx(struct net_device *dev, struct gem *gp, u32 gem_st | |||
684 | break; | 684 | break; |
685 | } | 685 | } |
686 | gp->tx_skbs[entry] = NULL; | 686 | gp->tx_skbs[entry] = NULL; |
687 | gp->net_stats.tx_bytes += skb->len; | 687 | dev->stats.tx_bytes += skb->len; |
688 | 688 | ||
689 | for (frag = 0; frag <= skb_shinfo(skb)->nr_frags; frag++) { | 689 | for (frag = 0; frag <= skb_shinfo(skb)->nr_frags; frag++) { |
690 | txd = &gp->init_block->txd[entry]; | 690 | txd = &gp->init_block->txd[entry]; |
@@ -696,7 +696,7 @@ static __inline__ void gem_tx(struct net_device *dev, struct gem *gp, u32 gem_st | |||
696 | entry = NEXT_TX(entry); | 696 | entry = NEXT_TX(entry); |
697 | } | 697 | } |
698 | 698 | ||
699 | gp->net_stats.tx_packets++; | 699 | dev->stats.tx_packets++; |
700 | dev_kfree_skb_irq(skb); | 700 | dev_kfree_skb_irq(skb); |
701 | } | 701 | } |
702 | gp->tx_old = entry; | 702 | gp->tx_old = entry; |
@@ -738,6 +738,7 @@ static __inline__ void gem_post_rxds(struct gem *gp, int limit) | |||
738 | 738 | ||
739 | static int gem_rx(struct gem *gp, int work_to_do) | 739 | static int gem_rx(struct gem *gp, int work_to_do) |
740 | { | 740 | { |
741 | struct net_device *dev = gp->dev; | ||
741 | int entry, drops, work_done = 0; | 742 | int entry, drops, work_done = 0; |
742 | u32 done; | 743 | u32 done; |
743 | __sum16 csum; | 744 | __sum16 csum; |
@@ -782,15 +783,15 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
782 | 783 | ||
783 | len = (status & RXDCTRL_BUFSZ) >> 16; | 784 | len = (status & RXDCTRL_BUFSZ) >> 16; |
784 | if ((len < ETH_ZLEN) || (status & RXDCTRL_BAD)) { | 785 | if ((len < ETH_ZLEN) || (status & RXDCTRL_BAD)) { |
785 | gp->net_stats.rx_errors++; | 786 | dev->stats.rx_errors++; |
786 | if (len < ETH_ZLEN) | 787 | if (len < ETH_ZLEN) |
787 | gp->net_stats.rx_length_errors++; | 788 | dev->stats.rx_length_errors++; |
788 | if (len & RXDCTRL_BAD) | 789 | if (len & RXDCTRL_BAD) |
789 | gp->net_stats.rx_crc_errors++; | 790 | dev->stats.rx_crc_errors++; |
790 | 791 | ||
791 | /* We'll just return it to GEM. */ | 792 | /* We'll just return it to GEM. */ |
792 | drop_it: | 793 | drop_it: |
793 | gp->net_stats.rx_dropped++; | 794 | dev->stats.rx_dropped++; |
794 | goto next; | 795 | goto next; |
795 | } | 796 | } |
796 | 797 | ||
@@ -843,8 +844,8 @@ static int gem_rx(struct gem *gp, int work_to_do) | |||
843 | 844 | ||
844 | netif_receive_skb(skb); | 845 | netif_receive_skb(skb); |
845 | 846 | ||
846 | gp->net_stats.rx_packets++; | 847 | dev->stats.rx_packets++; |
847 | gp->net_stats.rx_bytes += len; | 848 | dev->stats.rx_bytes += len; |
848 | 849 | ||
849 | next: | 850 | next: |
850 | entry = NEXT_RX(entry); | 851 | entry = NEXT_RX(entry); |
@@ -2472,7 +2473,6 @@ static int gem_resume(struct pci_dev *pdev) | |||
2472 | static struct net_device_stats *gem_get_stats(struct net_device *dev) | 2473 | static struct net_device_stats *gem_get_stats(struct net_device *dev) |
2473 | { | 2474 | { |
2474 | struct gem *gp = netdev_priv(dev); | 2475 | struct gem *gp = netdev_priv(dev); |
2475 | struct net_device_stats *stats = &gp->net_stats; | ||
2476 | 2476 | ||
2477 | spin_lock_irq(&gp->lock); | 2477 | spin_lock_irq(&gp->lock); |
2478 | spin_lock(&gp->tx_lock); | 2478 | spin_lock(&gp->tx_lock); |
@@ -2481,17 +2481,17 @@ static struct net_device_stats *gem_get_stats(struct net_device *dev) | |||
2481 | * so we shield against this | 2481 | * so we shield against this |
2482 | */ | 2482 | */ |
2483 | if (gp->running) { | 2483 | if (gp->running) { |
2484 | stats->rx_crc_errors += readl(gp->regs + MAC_FCSERR); | 2484 | dev->stats.rx_crc_errors += readl(gp->regs + MAC_FCSERR); |
2485 | writel(0, gp->regs + MAC_FCSERR); | 2485 | writel(0, gp->regs + MAC_FCSERR); |
2486 | 2486 | ||
2487 | stats->rx_frame_errors += readl(gp->regs + MAC_AERR); | 2487 | dev->stats.rx_frame_errors += readl(gp->regs + MAC_AERR); |
2488 | writel(0, gp->regs + MAC_AERR); | 2488 | writel(0, gp->regs + MAC_AERR); |
2489 | 2489 | ||
2490 | stats->rx_length_errors += readl(gp->regs + MAC_LERR); | 2490 | dev->stats.rx_length_errors += readl(gp->regs + MAC_LERR); |
2491 | writel(0, gp->regs + MAC_LERR); | 2491 | writel(0, gp->regs + MAC_LERR); |
2492 | 2492 | ||
2493 | stats->tx_aborted_errors += readl(gp->regs + MAC_ECOLL); | 2493 | dev->stats.tx_aborted_errors += readl(gp->regs + MAC_ECOLL); |
2494 | stats->collisions += | 2494 | dev->stats.collisions += |
2495 | (readl(gp->regs + MAC_ECOLL) + | 2495 | (readl(gp->regs + MAC_ECOLL) + |
2496 | readl(gp->regs + MAC_LCOLL)); | 2496 | readl(gp->regs + MAC_LCOLL)); |
2497 | writel(0, gp->regs + MAC_ECOLL); | 2497 | writel(0, gp->regs + MAC_ECOLL); |
@@ -2501,7 +2501,7 @@ static struct net_device_stats *gem_get_stats(struct net_device *dev) | |||
2501 | spin_unlock(&gp->tx_lock); | 2501 | spin_unlock(&gp->tx_lock); |
2502 | spin_unlock_irq(&gp->lock); | 2502 | spin_unlock_irq(&gp->lock); |
2503 | 2503 | ||
2504 | return &gp->net_stats; | 2504 | return &dev->stats; |
2505 | } | 2505 | } |
2506 | 2506 | ||
2507 | static int gem_set_mac_address(struct net_device *dev, void *addr) | 2507 | static int gem_set_mac_address(struct net_device *dev, void *addr) |
diff --git a/drivers/net/sungem.h b/drivers/net/sungem.h index 19905460def6..ede017872367 100644 --- a/drivers/net/sungem.h +++ b/drivers/net/sungem.h | |||
@@ -994,7 +994,6 @@ struct gem { | |||
994 | u32 status; | 994 | u32 status; |
995 | 995 | ||
996 | struct napi_struct napi; | 996 | struct napi_struct napi; |
997 | struct net_device_stats net_stats; | ||
998 | 997 | ||
999 | int tx_fifo_sz; | 998 | int tx_fifo_sz; |
1000 | int rx_fifo_sz; | 999 | int rx_fifo_sz; |