Commit ba0f6cae authored by Paulius Zaleckas's avatar Paulius Zaleckas Committed by Jeff Garzik

3c505: use netstats in net_device structure

Use net_device_stats from net_device structure instead of local.
No need to memset it to 0, because it is allocated by kzalloc.
Signed-off-by: default avatarPaulius Zaleckas <paulius.zaleckas@teltonika.lt>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent dd32f7ef
...@@ -670,7 +670,7 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id) ...@@ -670,7 +670,7 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id)
memcpy(adapter->current_dma.target, adapter->dma_buffer, adapter->current_dma.length); memcpy(adapter->current_dma.target, adapter->dma_buffer, adapter->current_dma.length);
} }
skb->protocol = eth_type_trans(skb,dev); skb->protocol = eth_type_trans(skb,dev);
adapter->stats.rx_bytes += skb->len; dev->stats.rx_bytes += skb->len;
netif_rx(skb); netif_rx(skb);
dev->last_rx = jiffies; dev->last_rx = jiffies;
} }
...@@ -773,12 +773,12 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id) ...@@ -773,12 +773,12 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id)
* received board statistics * received board statistics
*/ */
case CMD_NETWORK_STATISTICS_RESPONSE: case CMD_NETWORK_STATISTICS_RESPONSE:
adapter->stats.rx_packets += adapter->irx_pcb.data.netstat.tot_recv; dev->stats.rx_packets += adapter->irx_pcb.data.netstat.tot_recv;
adapter->stats.tx_packets += adapter->irx_pcb.data.netstat.tot_xmit; dev->stats.tx_packets += adapter->irx_pcb.data.netstat.tot_xmit;
adapter->stats.rx_crc_errors += adapter->irx_pcb.data.netstat.err_CRC; dev->stats.rx_crc_errors += adapter->irx_pcb.data.netstat.err_CRC;
adapter->stats.rx_frame_errors += adapter->irx_pcb.data.netstat.err_align; dev->stats.rx_frame_errors += adapter->irx_pcb.data.netstat.err_align;
adapter->stats.rx_fifo_errors += adapter->irx_pcb.data.netstat.err_ovrrun; dev->stats.rx_fifo_errors += adapter->irx_pcb.data.netstat.err_ovrrun;
adapter->stats.rx_over_errors += adapter->irx_pcb.data.netstat.err_res; dev->stats.rx_over_errors += adapter->irx_pcb.data.netstat.err_res;
adapter->got[CMD_NETWORK_STATISTICS] = 1; adapter->got[CMD_NETWORK_STATISTICS] = 1;
if (elp_debug >= 3) if (elp_debug >= 3)
printk(KERN_DEBUG "%s: interrupt - statistics response received\n", dev->name); printk(KERN_DEBUG "%s: interrupt - statistics response received\n", dev->name);
...@@ -794,11 +794,11 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id) ...@@ -794,11 +794,11 @@ static irqreturn_t elp_interrupt(int irq, void *dev_id)
break; break;
switch (adapter->irx_pcb.data.xmit_resp.c_stat) { switch (adapter->irx_pcb.data.xmit_resp.c_stat) {
case 0xffff: case 0xffff:
adapter->stats.tx_aborted_errors++; dev->stats.tx_aborted_errors++;
printk(KERN_INFO "%s: transmit timed out, network cable problem?\n", dev->name); printk(KERN_INFO "%s: transmit timed out, network cable problem?\n", dev->name);
break; break;
case 0xfffe: case 0xfffe:
adapter->stats.tx_fifo_errors++; dev->stats.tx_fifo_errors++;
printk(KERN_INFO "%s: transmit timed out, FIFO underrun\n", dev->name); printk(KERN_INFO "%s: transmit timed out, FIFO underrun\n", dev->name);
break; break;
} }
...@@ -986,7 +986,7 @@ static bool send_packet(struct net_device *dev, struct sk_buff *skb) ...@@ -986,7 +986,7 @@ static bool send_packet(struct net_device *dev, struct sk_buff *skb)
return false; return false;
} }
adapter->stats.tx_bytes += nlen; dev->stats.tx_bytes += nlen;
/* /*
* send the adapter a transmit packet command. Ignore segment and offset * send the adapter a transmit packet command. Ignore segment and offset
...@@ -1041,7 +1041,6 @@ static bool send_packet(struct net_device *dev, struct sk_buff *skb) ...@@ -1041,7 +1041,6 @@ static bool send_packet(struct net_device *dev, struct sk_buff *skb)
static void elp_timeout(struct net_device *dev) static void elp_timeout(struct net_device *dev)
{ {
elp_device *adapter = dev->priv;
int stat; int stat;
stat = inb_status(dev->base_addr); stat = inb_status(dev->base_addr);
...@@ -1049,7 +1048,7 @@ static void elp_timeout(struct net_device *dev) ...@@ -1049,7 +1048,7 @@ static void elp_timeout(struct net_device *dev)
if (elp_debug >= 1) if (elp_debug >= 1)
printk(KERN_DEBUG "%s: status %#02x\n", dev->name, stat); printk(KERN_DEBUG "%s: status %#02x\n", dev->name, stat);
dev->trans_start = jiffies; dev->trans_start = jiffies;
adapter->stats.tx_dropped++; dev->stats.tx_dropped++;
netif_wake_queue(dev); netif_wake_queue(dev);
} }
...@@ -1113,7 +1112,7 @@ static struct net_device_stats *elp_get_stats(struct net_device *dev) ...@@ -1113,7 +1112,7 @@ static struct net_device_stats *elp_get_stats(struct net_device *dev)
/* If the device is closed, just return the latest stats we have, /* If the device is closed, just return the latest stats we have,
- we cannot ask from the adapter without interrupts */ - we cannot ask from the adapter without interrupts */
if (!netif_running(dev)) if (!netif_running(dev))
return &adapter->stats; return &dev->stats;
/* send a get statistics command to the board */ /* send a get statistics command to the board */
adapter->tx_pcb.command = CMD_NETWORK_STATISTICS; adapter->tx_pcb.command = CMD_NETWORK_STATISTICS;
...@@ -1126,12 +1125,12 @@ static struct net_device_stats *elp_get_stats(struct net_device *dev) ...@@ -1126,12 +1125,12 @@ static struct net_device_stats *elp_get_stats(struct net_device *dev)
while (adapter->got[CMD_NETWORK_STATISTICS] == 0 && time_before(jiffies, timeout)); while (adapter->got[CMD_NETWORK_STATISTICS] == 0 && time_before(jiffies, timeout));
if (time_after_eq(jiffies, timeout)) { if (time_after_eq(jiffies, timeout)) {
TIMEOUT_MSG(__LINE__); TIMEOUT_MSG(__LINE__);
return &adapter->stats; return &dev->stats;
} }
} }
/* statistics are now up to date */ /* statistics are now up to date */
return &adapter->stats; return &dev->stats;
} }
...@@ -1571,7 +1570,6 @@ static int __init elplus_setup(struct net_device *dev) ...@@ -1571,7 +1570,6 @@ static int __init elplus_setup(struct net_device *dev)
dev->set_multicast_list = elp_set_mc_list; /* local */ dev->set_multicast_list = elp_set_mc_list; /* local */
dev->ethtool_ops = &netdev_ethtool_ops; /* local */ dev->ethtool_ops = &netdev_ethtool_ops; /* local */
memset(&(adapter->stats), 0, sizeof(struct net_device_stats));
dev->mem_start = dev->mem_end = 0; dev->mem_start = dev->mem_end = 0;
err = register_netdev(dev); err = register_netdev(dev);
......
...@@ -264,7 +264,6 @@ typedef struct { ...@@ -264,7 +264,6 @@ typedef struct {
pcb_struct rx_pcb; /* PCB for foreground receiving */ pcb_struct rx_pcb; /* PCB for foreground receiving */
pcb_struct itx_pcb; /* PCB for background sending */ pcb_struct itx_pcb; /* PCB for background sending */
pcb_struct irx_pcb; /* PCB for background receiving */ pcb_struct irx_pcb; /* PCB for background receiving */
struct net_device_stats stats;
void *dma_buffer; void *dma_buffer;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment