natsemi: Use the instance of net_device_stats from net_device.
Since net_device has an instance of net_device_stats, we can remove the instance of this from the adapter structure. Signed-off-by: Kulikov Vasiliy <segooon@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
897dd41d3b
commit
2321e80ac8
1 changed files with 27 additions and 29 deletions
|
@ -548,7 +548,6 @@ struct netdev_private {
|
||||||
dma_addr_t tx_dma[TX_RING_SIZE];
|
dma_addr_t tx_dma[TX_RING_SIZE];
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
struct napi_struct napi;
|
struct napi_struct napi;
|
||||||
struct net_device_stats stats;
|
|
||||||
/* Media monitoring timer */
|
/* Media monitoring timer */
|
||||||
struct timer_list timer;
|
struct timer_list timer;
|
||||||
/* Frequently used values: keep some adjacent for cache effect */
|
/* Frequently used values: keep some adjacent for cache effect */
|
||||||
|
@ -1906,7 +1905,7 @@ static void ns_tx_timeout(struct net_device *dev)
|
||||||
enable_irq(dev->irq);
|
enable_irq(dev->irq);
|
||||||
|
|
||||||
dev->trans_start = jiffies; /* prevent tx timeout */
|
dev->trans_start = jiffies; /* prevent tx timeout */
|
||||||
np->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
netif_wake_queue(dev);
|
netif_wake_queue(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2009,7 +2008,7 @@ static void drain_tx(struct net_device *dev)
|
||||||
np->tx_dma[i], np->tx_skbuff[i]->len,
|
np->tx_dma[i], np->tx_skbuff[i]->len,
|
||||||
PCI_DMA_TODEVICE);
|
PCI_DMA_TODEVICE);
|
||||||
dev_kfree_skb(np->tx_skbuff[i]);
|
dev_kfree_skb(np->tx_skbuff[i]);
|
||||||
np->stats.tx_dropped++;
|
dev->stats.tx_dropped++;
|
||||||
}
|
}
|
||||||
np->tx_skbuff[i] = NULL;
|
np->tx_skbuff[i] = NULL;
|
||||||
}
|
}
|
||||||
|
@ -2115,7 +2114,7 @@ static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev)
|
||||||
writel(TxOn, ioaddr + ChipCmd);
|
writel(TxOn, ioaddr + ChipCmd);
|
||||||
} else {
|
} else {
|
||||||
dev_kfree_skb_irq(skb);
|
dev_kfree_skb_irq(skb);
|
||||||
np->stats.tx_dropped++;
|
dev->stats.tx_dropped++;
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&np->lock, flags);
|
spin_unlock_irqrestore(&np->lock, flags);
|
||||||
|
|
||||||
|
@ -2140,20 +2139,20 @@ static void netdev_tx_done(struct net_device *dev)
|
||||||
dev->name, np->dirty_tx,
|
dev->name, np->dirty_tx,
|
||||||
le32_to_cpu(np->tx_ring[entry].cmd_status));
|
le32_to_cpu(np->tx_ring[entry].cmd_status));
|
||||||
if (np->tx_ring[entry].cmd_status & cpu_to_le32(DescPktOK)) {
|
if (np->tx_ring[entry].cmd_status & cpu_to_le32(DescPktOK)) {
|
||||||
np->stats.tx_packets++;
|
dev->stats.tx_packets++;
|
||||||
np->stats.tx_bytes += np->tx_skbuff[entry]->len;
|
dev->stats.tx_bytes += np->tx_skbuff[entry]->len;
|
||||||
} else { /* Various Tx errors */
|
} else { /* Various Tx errors */
|
||||||
int tx_status =
|
int tx_status =
|
||||||
le32_to_cpu(np->tx_ring[entry].cmd_status);
|
le32_to_cpu(np->tx_ring[entry].cmd_status);
|
||||||
if (tx_status & (DescTxAbort|DescTxExcColl))
|
if (tx_status & (DescTxAbort|DescTxExcColl))
|
||||||
np->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
if (tx_status & DescTxFIFO)
|
if (tx_status & DescTxFIFO)
|
||||||
np->stats.tx_fifo_errors++;
|
dev->stats.tx_fifo_errors++;
|
||||||
if (tx_status & DescTxCarrier)
|
if (tx_status & DescTxCarrier)
|
||||||
np->stats.tx_carrier_errors++;
|
dev->stats.tx_carrier_errors++;
|
||||||
if (tx_status & DescTxOOWCol)
|
if (tx_status & DescTxOOWCol)
|
||||||
np->stats.tx_window_errors++;
|
dev->stats.tx_window_errors++;
|
||||||
np->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
}
|
}
|
||||||
pci_unmap_single(np->pci_dev,np->tx_dma[entry],
|
pci_unmap_single(np->pci_dev,np->tx_dma[entry],
|
||||||
np->tx_skbuff[entry]->len,
|
np->tx_skbuff[entry]->len,
|
||||||
|
@ -2301,7 +2300,7 @@ static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do)
|
||||||
"buffers, entry %#08x "
|
"buffers, entry %#08x "
|
||||||
"status %#08x.\n", dev->name,
|
"status %#08x.\n", dev->name,
|
||||||
np->cur_rx, desc_status);
|
np->cur_rx, desc_status);
|
||||||
np->stats.rx_length_errors++;
|
dev->stats.rx_length_errors++;
|
||||||
|
|
||||||
/* The RX state machine has probably
|
/* The RX state machine has probably
|
||||||
* locked up beneath us. Follow the
|
* locked up beneath us. Follow the
|
||||||
|
@ -2321,15 +2320,15 @@ static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* There was an error. */
|
/* There was an error. */
|
||||||
np->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
if (desc_status & (DescRxAbort|DescRxOver))
|
if (desc_status & (DescRxAbort|DescRxOver))
|
||||||
np->stats.rx_over_errors++;
|
dev->stats.rx_over_errors++;
|
||||||
if (desc_status & (DescRxLong|DescRxRunt))
|
if (desc_status & (DescRxLong|DescRxRunt))
|
||||||
np->stats.rx_length_errors++;
|
dev->stats.rx_length_errors++;
|
||||||
if (desc_status & (DescRxInvalid|DescRxAlign))
|
if (desc_status & (DescRxInvalid|DescRxAlign))
|
||||||
np->stats.rx_frame_errors++;
|
dev->stats.rx_frame_errors++;
|
||||||
if (desc_status & DescRxCRC)
|
if (desc_status & DescRxCRC)
|
||||||
np->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
}
|
}
|
||||||
} else if (pkt_len > np->rx_buf_sz) {
|
} else if (pkt_len > np->rx_buf_sz) {
|
||||||
/* if this is the tail of a double buffer
|
/* if this is the tail of a double buffer
|
||||||
|
@ -2364,8 +2363,8 @@ static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do)
|
||||||
}
|
}
|
||||||
skb->protocol = eth_type_trans(skb, dev);
|
skb->protocol = eth_type_trans(skb, dev);
|
||||||
netif_receive_skb(skb);
|
netif_receive_skb(skb);
|
||||||
np->stats.rx_packets++;
|
dev->stats.rx_packets++;
|
||||||
np->stats.rx_bytes += pkt_len;
|
dev->stats.rx_bytes += pkt_len;
|
||||||
}
|
}
|
||||||
entry = (++np->cur_rx) % RX_RING_SIZE;
|
entry = (++np->cur_rx) % RX_RING_SIZE;
|
||||||
np->rx_head_desc = &np->rx_ring[entry];
|
np->rx_head_desc = &np->rx_ring[entry];
|
||||||
|
@ -2428,17 +2427,17 @@ static void netdev_error(struct net_device *dev, int intr_status)
|
||||||
printk(KERN_NOTICE "%s: Rx status FIFO overrun\n",
|
printk(KERN_NOTICE "%s: Rx status FIFO overrun\n",
|
||||||
dev->name);
|
dev->name);
|
||||||
}
|
}
|
||||||
np->stats.rx_fifo_errors++;
|
dev->stats.rx_fifo_errors++;
|
||||||
np->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
}
|
}
|
||||||
/* Hmmmmm, it's not clear how to recover from PCI faults. */
|
/* Hmmmmm, it's not clear how to recover from PCI faults. */
|
||||||
if (intr_status & IntrPCIErr) {
|
if (intr_status & IntrPCIErr) {
|
||||||
printk(KERN_NOTICE "%s: PCI error %#08x\n", dev->name,
|
printk(KERN_NOTICE "%s: PCI error %#08x\n", dev->name,
|
||||||
intr_status & IntrPCIErr);
|
intr_status & IntrPCIErr);
|
||||||
np->stats.tx_fifo_errors++;
|
dev->stats.tx_fifo_errors++;
|
||||||
np->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
np->stats.rx_fifo_errors++;
|
dev->stats.rx_fifo_errors++;
|
||||||
np->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
}
|
}
|
||||||
spin_unlock(&np->lock);
|
spin_unlock(&np->lock);
|
||||||
}
|
}
|
||||||
|
@ -2446,11 +2445,10 @@ static void netdev_error(struct net_device *dev, int intr_status)
|
||||||
static void __get_stats(struct net_device *dev)
|
static void __get_stats(struct net_device *dev)
|
||||||
{
|
{
|
||||||
void __iomem * ioaddr = ns_ioaddr(dev);
|
void __iomem * ioaddr = ns_ioaddr(dev);
|
||||||
struct netdev_private *np = netdev_priv(dev);
|
|
||||||
|
|
||||||
/* The chip only need report frame silently dropped. */
|
/* The chip only need report frame silently dropped. */
|
||||||
np->stats.rx_crc_errors += readl(ioaddr + RxCRCErrs);
|
dev->stats.rx_crc_errors += readl(ioaddr + RxCRCErrs);
|
||||||
np->stats.rx_missed_errors += readl(ioaddr + RxMissed);
|
dev->stats.rx_missed_errors += readl(ioaddr + RxMissed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct net_device_stats *get_stats(struct net_device *dev)
|
static struct net_device_stats *get_stats(struct net_device *dev)
|
||||||
|
@ -2463,7 +2461,7 @@ static struct net_device_stats *get_stats(struct net_device *dev)
|
||||||
__get_stats(dev);
|
__get_stats(dev);
|
||||||
spin_unlock_irq(&np->lock);
|
spin_unlock_irq(&np->lock);
|
||||||
|
|
||||||
return &np->stats;
|
return &dev->stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||||
|
|
Loading…
Reference in a new issue