diff options
Diffstat (limited to 'drivers/net/3c527.c')
-rw-r--r-- | drivers/net/3c527.c | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c index fae295b6809c..6aca0c640f13 100644 --- a/drivers/net/3c527.c +++ b/drivers/net/3c527.c | |||
@@ -158,7 +158,6 @@ struct mc32_local | |||
158 | int slot; | 158 | int slot; |
159 | 159 | ||
160 | u32 base; | 160 | u32 base; |
161 | struct net_device_stats net_stats; | ||
162 | volatile struct mc32_mailbox *rx_box; | 161 | volatile struct mc32_mailbox *rx_box; |
163 | volatile struct mc32_mailbox *tx_box; | 162 | volatile struct mc32_mailbox *tx_box; |
164 | volatile struct mc32_mailbox *exec_box; | 163 | volatile struct mc32_mailbox *exec_box; |
@@ -1093,24 +1092,24 @@ static void mc32_update_stats(struct net_device *dev) | |||
1093 | 1092 | ||
1094 | u32 rx_errors=0; | 1093 | u32 rx_errors=0; |
1095 | 1094 | ||
1096 | rx_errors+=lp->net_stats.rx_crc_errors +=st->rx_crc_errors; | 1095 | rx_errors+=dev->stats.rx_crc_errors +=st->rx_crc_errors; |
1097 | st->rx_crc_errors=0; | 1096 | st->rx_crc_errors=0; |
1098 | rx_errors+=lp->net_stats.rx_fifo_errors +=st->rx_overrun_errors; | 1097 | rx_errors+=dev->stats.rx_fifo_errors +=st->rx_overrun_errors; |
1099 | st->rx_overrun_errors=0; | 1098 | st->rx_overrun_errors=0; |
1100 | rx_errors+=lp->net_stats.rx_frame_errors +=st->rx_alignment_errors; | 1099 | rx_errors+=dev->stats.rx_frame_errors +=st->rx_alignment_errors; |
1101 | st->rx_alignment_errors=0; | 1100 | st->rx_alignment_errors=0; |
1102 | rx_errors+=lp->net_stats.rx_length_errors+=st->rx_tooshort_errors; | 1101 | rx_errors+=dev->stats.rx_length_errors+=st->rx_tooshort_errors; |
1103 | st->rx_tooshort_errors=0; | 1102 | st->rx_tooshort_errors=0; |
1104 | rx_errors+=lp->net_stats.rx_missed_errors+=st->rx_outofresource_errors; | 1103 | rx_errors+=dev->stats.rx_missed_errors+=st->rx_outofresource_errors; |
1105 | st->rx_outofresource_errors=0; | 1104 | st->rx_outofresource_errors=0; |
1106 | lp->net_stats.rx_errors=rx_errors; | 1105 | dev->stats.rx_errors=rx_errors; |
1107 | 1106 | ||
1108 | /* Number of packets which saw one collision */ | 1107 | /* Number of packets which saw one collision */ |
1109 | lp->net_stats.collisions+=st->dataC[10]; | 1108 | dev->stats.collisions+=st->dataC[10]; |
1110 | st->dataC[10]=0; | 1109 | st->dataC[10]=0; |
1111 | 1110 | ||
1112 | /* Number of packets which saw 2--15 collisions */ | 1111 | /* Number of packets which saw 2--15 collisions */ |
1113 | lp->net_stats.collisions+=st->dataC[11]; | 1112 | dev->stats.collisions+=st->dataC[11]; |
1114 | st->dataC[11]=0; | 1113 | st->dataC[11]=0; |
1115 | } | 1114 | } |
1116 | 1115 | ||
@@ -1178,7 +1177,7 @@ static void mc32_rx_ring(struct net_device *dev) | |||
1178 | skb=dev_alloc_skb(length+2); | 1177 | skb=dev_alloc_skb(length+2); |
1179 | 1178 | ||
1180 | if(skb==NULL) { | 1179 | if(skb==NULL) { |
1181 | lp->net_stats.rx_dropped++; | 1180 | dev->stats.rx_dropped++; |
1182 | goto dropped; | 1181 | goto dropped; |
1183 | } | 1182 | } |
1184 | 1183 | ||
@@ -1189,8 +1188,8 @@ static void mc32_rx_ring(struct net_device *dev) | |||
1189 | 1188 | ||
1190 | skb->protocol=eth_type_trans(skb,dev); | 1189 | skb->protocol=eth_type_trans(skb,dev); |
1191 | dev->last_rx = jiffies; | 1190 | dev->last_rx = jiffies; |
1192 | lp->net_stats.rx_packets++; | 1191 | dev->stats.rx_packets++; |
1193 | lp->net_stats.rx_bytes += length; | 1192 | dev->stats.rx_bytes += length; |
1194 | netif_rx(skb); | 1193 | netif_rx(skb); |
1195 | } | 1194 | } |
1196 | 1195 | ||
@@ -1253,34 +1252,34 @@ static void mc32_tx_ring(struct net_device *dev) | |||
1253 | /* Not COMPLETED */ | 1252 | /* Not COMPLETED */ |
1254 | break; | 1253 | break; |
1255 | } | 1254 | } |
1256 | lp->net_stats.tx_packets++; | 1255 | dev->stats.tx_packets++; |
1257 | if(!(np->status & (1<<6))) /* Not COMPLETED_OK */ | 1256 | if(!(np->status & (1<<6))) /* Not COMPLETED_OK */ |
1258 | { | 1257 | { |
1259 | lp->net_stats.tx_errors++; | 1258 | dev->stats.tx_errors++; |
1260 | 1259 | ||
1261 | switch(np->status&0x0F) | 1260 | switch(np->status&0x0F) |
1262 | { | 1261 | { |
1263 | case 1: | 1262 | case 1: |
1264 | lp->net_stats.tx_aborted_errors++; | 1263 | dev->stats.tx_aborted_errors++; |
1265 | break; /* Max collisions */ | 1264 | break; /* Max collisions */ |
1266 | case 2: | 1265 | case 2: |
1267 | lp->net_stats.tx_fifo_errors++; | 1266 | dev->stats.tx_fifo_errors++; |
1268 | break; | 1267 | break; |
1269 | case 3: | 1268 | case 3: |
1270 | lp->net_stats.tx_carrier_errors++; | 1269 | dev->stats.tx_carrier_errors++; |
1271 | break; | 1270 | break; |
1272 | case 4: | 1271 | case 4: |
1273 | lp->net_stats.tx_window_errors++; | 1272 | dev->stats.tx_window_errors++; |
1274 | break; /* CTS Lost */ | 1273 | break; /* CTS Lost */ |
1275 | case 5: | 1274 | case 5: |
1276 | lp->net_stats.tx_aborted_errors++; | 1275 | dev->stats.tx_aborted_errors++; |
1277 | break; /* Transmit timeout */ | 1276 | break; /* Transmit timeout */ |
1278 | } | 1277 | } |
1279 | } | 1278 | } |
1280 | /* Packets are sent in order - this is | 1279 | /* Packets are sent in order - this is |
1281 | basically a FIFO queue of buffers matching | 1280 | basically a FIFO queue of buffers matching |
1282 | the card ring */ | 1281 | the card ring */ |
1283 | lp->net_stats.tx_bytes+=lp->tx_ring[t].skb->len; | 1282 | dev->stats.tx_bytes+=lp->tx_ring[t].skb->len; |
1284 | dev_kfree_skb_irq(lp->tx_ring[t].skb); | 1283 | dev_kfree_skb_irq(lp->tx_ring[t].skb); |
1285 | lp->tx_ring[t].skb=NULL; | 1284 | lp->tx_ring[t].skb=NULL; |
1286 | atomic_inc(&lp->tx_count); | 1285 | atomic_inc(&lp->tx_count); |
@@ -1367,7 +1366,7 @@ static irqreturn_t mc32_interrupt(int irq, void *dev_id) | |||
1367 | case 6: | 1366 | case 6: |
1368 | /* Out of RX buffers stat */ | 1367 | /* Out of RX buffers stat */ |
1369 | /* Must restart rx */ | 1368 | /* Must restart rx */ |
1370 | lp->net_stats.rx_dropped++; | 1369 | dev->stats.rx_dropped++; |
1371 | mc32_rx_ring(dev); | 1370 | mc32_rx_ring(dev); |
1372 | mc32_start_transceiver(dev); | 1371 | mc32_start_transceiver(dev); |
1373 | break; | 1372 | break; |
@@ -1489,10 +1488,8 @@ static int mc32_close(struct net_device *dev) | |||
1489 | 1488 | ||
1490 | static struct net_device_stats *mc32_get_stats(struct net_device *dev) | 1489 | static struct net_device_stats *mc32_get_stats(struct net_device *dev) |
1491 | { | 1490 | { |
1492 | struct mc32_local *lp = netdev_priv(dev); | ||
1493 | |||
1494 | mc32_update_stats(dev); | 1491 | mc32_update_stats(dev); |
1495 | return &lp->net_stats; | 1492 | return &dev->stats; |
1496 | } | 1493 | } |
1497 | 1494 | ||
1498 | 1495 | ||