diff options
Diffstat (limited to 'drivers/net/3c523.c')
-rw-r--r-- | drivers/net/3c523.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c index 239fc42fb8df..dc6e474229b1 100644 --- a/drivers/net/3c523.c +++ b/drivers/net/3c523.c | |||
@@ -202,7 +202,6 @@ static void elmc_xmt_int(struct net_device *dev); | |||
202 | static void elmc_rnr_int(struct net_device *dev); | 202 | static void elmc_rnr_int(struct net_device *dev); |
203 | 203 | ||
204 | struct priv { | 204 | struct priv { |
205 | struct net_device_stats stats; | ||
206 | unsigned long base; | 205 | unsigned long base; |
207 | char *memtop; | 206 | char *memtop; |
208 | unsigned long mapped_start; /* Start of ioremap */ | 207 | unsigned long mapped_start; /* Start of ioremap */ |
@@ -989,18 +988,18 @@ static void elmc_rcv_int(struct net_device *dev) | |||
989 | skb->protocol = eth_type_trans(skb, dev); | 988 | skb->protocol = eth_type_trans(skb, dev); |
990 | netif_rx(skb); | 989 | netif_rx(skb); |
991 | dev->last_rx = jiffies; | 990 | dev->last_rx = jiffies; |
992 | p->stats.rx_packets++; | 991 | dev->stats.rx_packets++; |
993 | p->stats.rx_bytes += totlen; | 992 | dev->stats.rx_bytes += totlen; |
994 | } else { | 993 | } else { |
995 | p->stats.rx_dropped++; | 994 | dev->stats.rx_dropped++; |
996 | } | 995 | } |
997 | } else { | 996 | } else { |
998 | printk(KERN_WARNING "%s: received oversized frame.\n", dev->name); | 997 | printk(KERN_WARNING "%s: received oversized frame.\n", dev->name); |
999 | p->stats.rx_dropped++; | 998 | dev->stats.rx_dropped++; |
1000 | } | 999 | } |
1001 | } else { /* frame !(ok), only with 'save-bad-frames' */ | 1000 | } else { /* frame !(ok), only with 'save-bad-frames' */ |
1002 | printk(KERN_WARNING "%s: oops! rfd-error-status: %04x\n", dev->name, status); | 1001 | printk(KERN_WARNING "%s: oops! rfd-error-status: %04x\n", dev->name, status); |
1003 | p->stats.rx_errors++; | 1002 | dev->stats.rx_errors++; |
1004 | } | 1003 | } |
1005 | p->rfd_top->status = 0; | 1004 | p->rfd_top->status = 0; |
1006 | p->rfd_top->last = RFD_SUSP; | 1005 | p->rfd_top->last = RFD_SUSP; |
@@ -1018,7 +1017,7 @@ static void elmc_rnr_int(struct net_device *dev) | |||
1018 | { | 1017 | { |
1019 | struct priv *p = (struct priv *) dev->priv; | 1018 | struct priv *p = (struct priv *) dev->priv; |
1020 | 1019 | ||
1021 | p->stats.rx_errors++; | 1020 | dev->stats.rx_errors++; |
1022 | 1021 | ||
1023 | WAIT_4_SCB_CMD(); /* wait for the last cmd */ | 1022 | WAIT_4_SCB_CMD(); /* wait for the last cmd */ |
1024 | p->scb->cmd = RUC_ABORT; /* usually the RU is in the 'no resource'-state .. abort it now. */ | 1023 | p->scb->cmd = RUC_ABORT; /* usually the RU is in the 'no resource'-state .. abort it now. */ |
@@ -1046,24 +1045,24 @@ static void elmc_xmt_int(struct net_device *dev) | |||
1046 | printk(KERN_WARNING "%s: strange .. xmit-int without a 'COMPLETE'\n", dev->name); | 1045 | printk(KERN_WARNING "%s: strange .. xmit-int without a 'COMPLETE'\n", dev->name); |
1047 | } | 1046 | } |
1048 | if (status & STAT_OK) { | 1047 | if (status & STAT_OK) { |
1049 | p->stats.tx_packets++; | 1048 | dev->stats.tx_packets++; |
1050 | p->stats.collisions += (status & TCMD_MAXCOLLMASK); | 1049 | dev->stats.collisions += (status & TCMD_MAXCOLLMASK); |
1051 | } else { | 1050 | } else { |
1052 | p->stats.tx_errors++; | 1051 | dev->stats.tx_errors++; |
1053 | if (status & TCMD_LATECOLL) { | 1052 | if (status & TCMD_LATECOLL) { |
1054 | printk(KERN_WARNING "%s: late collision detected.\n", dev->name); | 1053 | printk(KERN_WARNING "%s: late collision detected.\n", dev->name); |
1055 | p->stats.collisions++; | 1054 | dev->stats.collisions++; |
1056 | } else if (status & TCMD_NOCARRIER) { | 1055 | } else if (status & TCMD_NOCARRIER) { |
1057 | p->stats.tx_carrier_errors++; | 1056 | dev->stats.tx_carrier_errors++; |
1058 | printk(KERN_WARNING "%s: no carrier detected.\n", dev->name); | 1057 | printk(KERN_WARNING "%s: no carrier detected.\n", dev->name); |
1059 | } else if (status & TCMD_LOSTCTS) { | 1058 | } else if (status & TCMD_LOSTCTS) { |
1060 | printk(KERN_WARNING "%s: loss of CTS detected.\n", dev->name); | 1059 | printk(KERN_WARNING "%s: loss of CTS detected.\n", dev->name); |
1061 | } else if (status & TCMD_UNDERRUN) { | 1060 | } else if (status & TCMD_UNDERRUN) { |
1062 | p->stats.tx_fifo_errors++; | 1061 | dev->stats.tx_fifo_errors++; |
1063 | printk(KERN_WARNING "%s: DMA underrun detected.\n", dev->name); | 1062 | printk(KERN_WARNING "%s: DMA underrun detected.\n", dev->name); |
1064 | } else if (status & TCMD_MAXCOLL) { | 1063 | } else if (status & TCMD_MAXCOLL) { |
1065 | printk(KERN_WARNING "%s: Max. collisions exceeded.\n", dev->name); | 1064 | printk(KERN_WARNING "%s: Max. collisions exceeded.\n", dev->name); |
1066 | p->stats.collisions += 16; | 1065 | dev->stats.collisions += 16; |
1067 | } | 1066 | } |
1068 | } | 1067 | } |
1069 | 1068 | ||
@@ -1215,12 +1214,12 @@ static struct net_device_stats *elmc_get_stats(struct net_device *dev) | |||
1215 | ovrn = p->scb->ovrn_errs; | 1214 | ovrn = p->scb->ovrn_errs; |
1216 | p->scb->ovrn_errs -= ovrn; | 1215 | p->scb->ovrn_errs -= ovrn; |
1217 | 1216 | ||
1218 | p->stats.rx_crc_errors += crc; | 1217 | dev->stats.rx_crc_errors += crc; |
1219 | p->stats.rx_fifo_errors += ovrn; | 1218 | dev->stats.rx_fifo_errors += ovrn; |
1220 | p->stats.rx_frame_errors += aln; | 1219 | dev->stats.rx_frame_errors += aln; |
1221 | p->stats.rx_dropped += rsc; | 1220 | dev->stats.rx_dropped += rsc; |
1222 | 1221 | ||
1223 | return &p->stats; | 1222 | return &dev->stats; |
1224 | } | 1223 | } |
1225 | 1224 | ||
1226 | /******************************************************** | 1225 | /******************************************************** |