mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-08-26 05:26:25 +03:00
[atheros] use stats from net_device structure
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10873 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
dd4dcd736d
commit
4b6e669cb7
@ -211,7 +211,6 @@ int __init ar2313_probe(struct platform_device *pdev)
|
|||||||
dev->stop = &ar2313_close;
|
dev->stop = &ar2313_close;
|
||||||
dev->hard_start_xmit = &ar2313_start_xmit;
|
dev->hard_start_xmit = &ar2313_start_xmit;
|
||||||
|
|
||||||
dev->get_stats = &ar2313_get_stats;
|
|
||||||
dev->set_multicast_list = &ar2313_multicast_list;
|
dev->set_multicast_list = &ar2313_multicast_list;
|
||||||
#ifdef TX_TIMEOUT
|
#ifdef TX_TIMEOUT
|
||||||
dev->tx_timeout = ar2313_tx_timeout;
|
dev->tx_timeout = ar2313_tx_timeout;
|
||||||
@ -781,7 +780,7 @@ static int ar2313_init(struct net_device *dev)
|
|||||||
/*
|
/*
|
||||||
* Zero the stats before starting the interface
|
* Zero the stats before starting the interface
|
||||||
*/
|
*/
|
||||||
memset(&sp->stats, 0, sizeof(sp->stats));
|
memset(&dev->stats, 0, sizeof(dev->stats));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We load the ring here as there seem to be no way to tell the
|
* We load the ring here as there seem to be no way to tell the
|
||||||
@ -928,20 +927,20 @@ static int ar2313_rx_int(struct net_device *dev)
|
|||||||
#if DEBUG_RX
|
#if DEBUG_RX
|
||||||
printk("%s: rx ERROR %08x\n", __FUNCTION__, status);
|
printk("%s: rx ERROR %08x\n", __FUNCTION__, status);
|
||||||
#endif
|
#endif
|
||||||
sp->stats.rx_errors++;
|
dev->stats.rx_errors++;
|
||||||
sp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
|
|
||||||
/* add statistics counters */
|
/* add statistics counters */
|
||||||
if (status & DMA_RX_ERR_CRC)
|
if (status & DMA_RX_ERR_CRC)
|
||||||
sp->stats.rx_crc_errors++;
|
dev->stats.rx_crc_errors++;
|
||||||
if (status & DMA_RX_ERR_COL)
|
if (status & DMA_RX_ERR_COL)
|
||||||
sp->stats.rx_over_errors++;
|
dev->stats.rx_over_errors++;
|
||||||
if (status & DMA_RX_ERR_LENGTH)
|
if (status & DMA_RX_ERR_LENGTH)
|
||||||
sp->stats.rx_length_errors++;
|
dev->stats.rx_length_errors++;
|
||||||
if (status & DMA_RX_ERR_RUNT)
|
if (status & DMA_RX_ERR_RUNT)
|
||||||
sp->stats.rx_over_errors++;
|
dev->stats.rx_over_errors++;
|
||||||
if (status & DMA_RX_ERR_DESC)
|
if (status & DMA_RX_ERR_DESC)
|
||||||
sp->stats.rx_over_errors++;
|
dev->stats.rx_over_errors++;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* alloc new buffer. */
|
/* alloc new buffer. */
|
||||||
@ -953,7 +952,7 @@ static int ar2313_rx_int(struct net_device *dev)
|
|||||||
skb_put(skb,
|
skb_put(skb,
|
||||||
((status >> DMA_RX_LEN_SHIFT) & 0x3fff) - CRC_LEN);
|
((status >> DMA_RX_LEN_SHIFT) & 0x3fff) - CRC_LEN);
|
||||||
|
|
||||||
sp->stats.rx_bytes += skb->len;
|
dev->stats.rx_bytes += skb->len;
|
||||||
skb->protocol = eth_type_trans(skb, dev);
|
skb->protocol = eth_type_trans(skb, dev);
|
||||||
/* pass the packet to upper layers */
|
/* pass the packet to upper layers */
|
||||||
netif_rx(skb);
|
netif_rx(skb);
|
||||||
@ -964,10 +963,10 @@ static int ar2313_rx_int(struct net_device *dev)
|
|||||||
/* reset descriptor's curr_addr */
|
/* reset descriptor's curr_addr */
|
||||||
rxdesc->addr = virt_to_phys(skb_new->data);
|
rxdesc->addr = virt_to_phys(skb_new->data);
|
||||||
|
|
||||||
sp->stats.rx_packets++;
|
dev->stats.rx_packets++;
|
||||||
sp->rx_skb[idx] = skb_new;
|
sp->rx_skb[idx] = skb_new;
|
||||||
} else {
|
} else {
|
||||||
sp->stats.rx_dropped++;
|
dev->stats.rx_dropped++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1016,27 +1015,27 @@ static void ar2313_tx_int(struct net_device *dev)
|
|||||||
txdesc->status = 0;
|
txdesc->status = 0;
|
||||||
|
|
||||||
if (status & DMA_TX_ERROR) {
|
if (status & DMA_TX_ERROR) {
|
||||||
sp->stats.tx_errors++;
|
dev->stats.tx_errors++;
|
||||||
sp->stats.tx_dropped++;
|
dev->stats.tx_dropped++;
|
||||||
if (status & DMA_TX_ERR_UNDER)
|
if (status & DMA_TX_ERR_UNDER)
|
||||||
sp->stats.tx_fifo_errors++;
|
dev->stats.tx_fifo_errors++;
|
||||||
if (status & DMA_TX_ERR_HB)
|
if (status & DMA_TX_ERR_HB)
|
||||||
sp->stats.tx_heartbeat_errors++;
|
dev->stats.tx_heartbeat_errors++;
|
||||||
if (status & (DMA_TX_ERR_LOSS | DMA_TX_ERR_LINK))
|
if (status & (DMA_TX_ERR_LOSS | DMA_TX_ERR_LINK))
|
||||||
sp->stats.tx_carrier_errors++;
|
dev->stats.tx_carrier_errors++;
|
||||||
if (status & (DMA_TX_ERR_LATE |
|
if (status & (DMA_TX_ERR_LATE |
|
||||||
DMA_TX_ERR_COL |
|
DMA_TX_ERR_COL |
|
||||||
DMA_TX_ERR_JABBER | DMA_TX_ERR_DEFER))
|
DMA_TX_ERR_JABBER | DMA_TX_ERR_DEFER))
|
||||||
sp->stats.tx_aborted_errors++;
|
dev->stats.tx_aborted_errors++;
|
||||||
} else {
|
} else {
|
||||||
/* transmit OK */
|
/* transmit OK */
|
||||||
sp->stats.tx_packets++;
|
dev->stats.tx_packets++;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb = sp->tx_skb[idx];
|
skb = sp->tx_skb[idx];
|
||||||
sp->tx_skb[idx] = NULL;
|
sp->tx_skb[idx] = NULL;
|
||||||
idx = DSC_NEXT(idx);
|
idx = DSC_NEXT(idx);
|
||||||
sp->stats.tx_bytes += skb->len;
|
dev->stats.tx_bytes += skb->len;
|
||||||
dev_kfree_skb_irq(skb);
|
dev_kfree_skb_irq(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1214,7 +1213,7 @@ static int ar2313_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||||||
printk("%s: No space left to Tx\n", __FUNCTION__);
|
printk("%s: No space left to Tx\n", __FUNCTION__);
|
||||||
#endif
|
#endif
|
||||||
/* free skbuf and lie to the caller that we sent it out */
|
/* free skbuf and lie to the caller that we sent it out */
|
||||||
sp->stats.tx_dropped++;
|
dev->stats.tx_dropped++;
|
||||||
dev_kfree_skb(skb);
|
dev_kfree_skb(skb);
|
||||||
|
|
||||||
/* restart transmitter in case locked */
|
/* restart transmitter in case locked */
|
||||||
@ -1284,13 +1283,6 @@ static int ar2313_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct net_device_stats *ar2313_get_stats(struct net_device *dev)
|
|
||||||
{
|
|
||||||
struct ar2313_private *sp = dev->priv;
|
|
||||||
return &sp->stats;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void ar2313_adjust_link(struct net_device *dev)
|
static void ar2313_adjust_link(struct net_device *dev)
|
||||||
{
|
{
|
||||||
struct ar2313_private *sp = dev->priv;
|
struct ar2313_private *sp = dev->priv;
|
||||||
|
@ -145,7 +145,6 @@ struct ar2313_private {
|
|||||||
*/
|
*/
|
||||||
int board_idx;
|
int board_idx;
|
||||||
char name[48];
|
char name[48];
|
||||||
struct net_device_stats stats;
|
|
||||||
struct {
|
struct {
|
||||||
u32 address;
|
u32 address;
|
||||||
u32 length;
|
u32 length;
|
||||||
@ -193,5 +192,4 @@ static void ar2313_init_cleanup(struct net_device *dev);
|
|||||||
static int ar2313_setup_timer(struct net_device *dev);
|
static int ar2313_setup_timer(struct net_device *dev);
|
||||||
static void ar2313_link_timer_fn(unsigned long data);
|
static void ar2313_link_timer_fn(unsigned long data);
|
||||||
static void ar2313_check_link(struct net_device *dev);
|
static void ar2313_check_link(struct net_device *dev);
|
||||||
static struct net_device_stats *ar2313_get_stats(struct net_device *dev);
|
|
||||||
#endif /* _AR2313_H_ */
|
#endif /* _AR2313_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user