aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/8139cp.c43
1 files changed, 21 insertions, 22 deletions
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c
index a453eda834d5..934db350e339 100644
--- a/drivers/net/8139cp.c
+++ b/drivers/net/8139cp.c
@@ -340,7 +340,6 @@ struct cp_private {
340 u32 rx_config; 340 u32 rx_config;
341 u16 cpcmd; 341 u16 cpcmd;
342 342
343 struct net_device_stats net_stats;
344 struct cp_extra_stats cp_stats; 343 struct cp_extra_stats cp_stats;
345 344
346 unsigned rx_head ____cacheline_aligned; 345 unsigned rx_head ____cacheline_aligned;
@@ -457,8 +456,8 @@ static inline void cp_rx_skb (struct cp_private *cp, struct sk_buff *skb,
457{ 456{
458 skb->protocol = eth_type_trans (skb, cp->dev); 457 skb->protocol = eth_type_trans (skb, cp->dev);
459 458
460 cp->net_stats.rx_packets++; 459 cp->dev->stats.rx_packets++;
461 cp->net_stats.rx_bytes += skb->len; 460 cp->dev->stats.rx_bytes += skb->len;
462 cp->dev->last_rx = jiffies; 461 cp->dev->last_rx = jiffies;
463 462
464#if CP_VLAN_TAG_USED 463#if CP_VLAN_TAG_USED
@@ -477,17 +476,17 @@ static void cp_rx_err_acct (struct cp_private *cp, unsigned rx_tail,
477 printk (KERN_DEBUG 476 printk (KERN_DEBUG
478 "%s: rx err, slot %d status 0x%x len %d\n", 477 "%s: rx err, slot %d status 0x%x len %d\n",
479 cp->dev->name, rx_tail, status, len); 478 cp->dev->name, rx_tail, status, len);
480 cp->net_stats.rx_errors++; 479 cp->dev->stats.rx_errors++;
481 if (status & RxErrFrame) 480 if (status & RxErrFrame)
482 cp->net_stats.rx_frame_errors++; 481 cp->dev->stats.rx_frame_errors++;
483 if (status & RxErrCRC) 482 if (status & RxErrCRC)
484 cp->net_stats.rx_crc_errors++; 483 cp->dev->stats.rx_crc_errors++;
485 if ((status & RxErrRunt) || (status & RxErrLong)) 484 if ((status & RxErrRunt) || (status & RxErrLong))
486 cp->net_stats.rx_length_errors++; 485 cp->dev->stats.rx_length_errors++;
487 if ((status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag)) 486 if ((status & (FirstFrag | LastFrag)) != (FirstFrag | LastFrag))
488 cp->net_stats.rx_length_errors++; 487 cp->dev->stats.rx_length_errors++;
489 if (status & RxErrFIFO) 488 if (status & RxErrFIFO)
490 cp->net_stats.rx_fifo_errors++; 489 cp->dev->stats.rx_fifo_errors++;
491} 490}
492 491
493static inline unsigned int cp_rx_csum_ok (u32 status) 492static inline unsigned int cp_rx_csum_ok (u32 status)
@@ -539,7 +538,7 @@ rx_status_loop:
539 * that RX fragments are never encountered 538 * that RX fragments are never encountered
540 */ 539 */
541 cp_rx_err_acct(cp, rx_tail, status, len); 540 cp_rx_err_acct(cp, rx_tail, status, len);
542 cp->net_stats.rx_dropped++; 541 dev->stats.rx_dropped++;
543 cp->cp_stats.rx_frags++; 542 cp->cp_stats.rx_frags++;
544 goto rx_next; 543 goto rx_next;
545 } 544 }
@@ -556,7 +555,7 @@ rx_status_loop:
556 buflen = cp->rx_buf_sz + RX_OFFSET; 555 buflen = cp->rx_buf_sz + RX_OFFSET;
557 new_skb = dev_alloc_skb (buflen); 556 new_skb = dev_alloc_skb (buflen);
558 if (!new_skb) { 557 if (!new_skb) {
559 cp->net_stats.rx_dropped++; 558 dev->stats.rx_dropped++;
560 goto rx_next; 559 goto rx_next;
561 } 560 }
562 561
@@ -710,20 +709,20 @@ static void cp_tx (struct cp_private *cp)
710 if (netif_msg_tx_err(cp)) 709 if (netif_msg_tx_err(cp))
711 printk(KERN_DEBUG "%s: tx err, status 0x%x\n", 710 printk(KERN_DEBUG "%s: tx err, status 0x%x\n",
712 cp->dev->name, status); 711 cp->dev->name, status);
713 cp->net_stats.tx_errors++; 712 cp->dev->stats.tx_errors++;
714 if (status & TxOWC) 713 if (status & TxOWC)
715 cp->net_stats.tx_window_errors++; 714 cp->dev->stats.tx_window_errors++;
716 if (status & TxMaxCol) 715 if (status & TxMaxCol)
717 cp->net_stats.tx_aborted_errors++; 716 cp->dev->stats.tx_aborted_errors++;
718 if (status & TxLinkFail) 717 if (status & TxLinkFail)
719 cp->net_stats.tx_carrier_errors++; 718 cp->dev->stats.tx_carrier_errors++;
720 if (status & TxFIFOUnder) 719 if (status & TxFIFOUnder)
721 cp->net_stats.tx_fifo_errors++; 720 cp->dev->stats.tx_fifo_errors++;
722 } else { 721 } else {
723 cp->net_stats.collisions += 722 cp->dev->stats.collisions +=
724 ((status >> TxColCntShift) & TxColCntMask); 723 ((status >> TxColCntShift) & TxColCntMask);
725 cp->net_stats.tx_packets++; 724 cp->dev->stats.tx_packets++;
726 cp->net_stats.tx_bytes += skb->len; 725 cp->dev->stats.tx_bytes += skb->len;
727 if (netif_msg_tx_done(cp)) 726 if (netif_msg_tx_done(cp))
728 printk(KERN_DEBUG "%s: tx done, slot %d\n", cp->dev->name, tx_tail); 727 printk(KERN_DEBUG "%s: tx done, slot %d\n", cp->dev->name, tx_tail);
729 } 728 }
@@ -956,7 +955,7 @@ static void cp_set_rx_mode (struct net_device *dev)
956static void __cp_get_stats(struct cp_private *cp) 955static void __cp_get_stats(struct cp_private *cp)
957{ 956{
958 /* only lower 24 bits valid; write any value to clear */ 957 /* only lower 24 bits valid; write any value to clear */
959 cp->net_stats.rx_missed_errors += (cpr32 (RxMissed) & 0xffffff); 958 cp->dev->stats.rx_missed_errors += (cpr32 (RxMissed) & 0xffffff);
960 cpw32 (RxMissed, 0); 959 cpw32 (RxMissed, 0);
961} 960}
962 961
@@ -971,7 +970,7 @@ static struct net_device_stats *cp_get_stats(struct net_device *dev)
971 __cp_get_stats(cp); 970 __cp_get_stats(cp);
972 spin_unlock_irqrestore(&cp->lock, flags); 971 spin_unlock_irqrestore(&cp->lock, flags);
973 972
974 return &cp->net_stats; 973 return &dev->stats;
975} 974}
976 975
977static void cp_stop_hw (struct cp_private *cp) 976static void cp_stop_hw (struct cp_private *cp)
@@ -1142,7 +1141,7 @@ static void cp_clean_rings (struct cp_private *cp)
1142 PCI_DMA_TODEVICE); 1141 PCI_DMA_TODEVICE);
1143 if (le32_to_cpu(desc->opts1) & LastFrag) 1142 if (le32_to_cpu(desc->opts1) & LastFrag)
1144 dev_kfree_skb(skb); 1143 dev_kfree_skb(skb);
1145 cp->net_stats.tx_dropped++; 1144 cp->dev->stats.tx_dropped++;
1146 } 1145 }
1147 } 1146 }
1148 1147