Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 038eddd9 authored by Paulius Zaleckas's avatar Paulius Zaleckas Committed by Linus Torvalds
Browse files

ariadne: use netstats in net_device structure



Use net_device_stats from net_device structure instead of local.

Signed-off-by: default avatarPaulius Zaleckas <paulius.zaleckas@teltonika.lt>
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Acked-by: default avatarJeff Garzik <jgarzik@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f30828a6
Loading
Loading
Loading
Loading
+22 −25
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@ struct ariadne_private {
    volatile u_short *rx_buff[RX_RING_SIZE];
    int cur_tx, cur_rx;			/* The next free ring entry */
    int dirty_tx;			/* The ring entries to be free()ed. */
    struct net_device_stats stats;
    char tx_full;
};

@@ -378,20 +377,19 @@ static void ariadne_init_ring(struct net_device *dev)

static int ariadne_close(struct net_device *dev)
{
    struct ariadne_private *priv = netdev_priv(dev);
    volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;

    netif_stop_queue(dev);

    lance->RAP = CSR112;	/* Missed Frame Count */
    priv->stats.rx_missed_errors = swapw(lance->RDP);
    dev->stats.rx_missed_errors = swapw(lance->RDP);
    lance->RAP = CSR0;		/* PCnet-ISA Controller Status */

    if (ariadne_debug > 1) {
	printk(KERN_DEBUG "%s: Shutting down ethercard, status was %2.2x.\n",
	       dev->name, lance->RDP);
	printk(KERN_DEBUG "%s: %lu packets missed\n", dev->name,
	       priv->stats.rx_missed_errors);
	       dev->stats.rx_missed_errors);
    }

    /* We stop the LANCE here -- it occasionally polls memory if we don't. */
@@ -502,16 +500,16 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
		if (status & TF_ERR) {
		    /* There was an major error, log it. */
		    int err_status = priv->tx_ring[entry]->TMD3;
		    priv->stats.tx_errors++;
		    dev->stats.tx_errors++;
		    if (err_status & EF_RTRY)
			priv->stats.tx_aborted_errors++;
			dev->stats.tx_aborted_errors++;
		    if (err_status & EF_LCAR)
			priv->stats.tx_carrier_errors++;
			dev->stats.tx_carrier_errors++;
		    if (err_status & EF_LCOL)
			priv->stats.tx_window_errors++;
			dev->stats.tx_window_errors++;
		    if (err_status & EF_UFLO) {
			/* Ackk!  On FIFO errors the Tx unit is turned off! */
			priv->stats.tx_fifo_errors++;
			dev->stats.tx_fifo_errors++;
			/* Remove this verbosity later! */
			printk(KERN_ERR "%s: Tx FIFO error! Status %4.4x.\n",
			       dev->name, csr0);
@@ -520,8 +518,8 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
		    }
		} else {
		    if (status & (TF_MORE|TF_ONE))
			priv->stats.collisions++;
		    priv->stats.tx_packets++;
			dev->stats.collisions++;
		    dev->stats.tx_packets++;
		}
		dirty_tx++;
	    }
@@ -547,11 +545,11 @@ static irqreturn_t ariadne_interrupt(int irq, void *data)
	/* Log misc errors. */
	if (csr0 & BABL) {
	    handled = 1;
	    priv->stats.tx_errors++;	/* Tx babble. */
	    dev->stats.tx_errors++;	/* Tx babble. */
	}
	if (csr0 & MISS) {
	    handled = 1;
	    priv->stats.rx_errors++;	/* Missed a Rx frame. */
	    dev->stats.rx_errors++;	/* Missed a Rx frame. */
	}
	if (csr0 & MERR) {
	    handled = 1;
@@ -672,7 +670,7 @@ static int ariadne_start_xmit(struct sk_buff *skb, struct net_device *dev)
	priv->cur_tx -= TX_RING_SIZE;
	priv->dirty_tx -= TX_RING_SIZE;
    }
    priv->stats.tx_bytes += len;
    dev->stats.tx_bytes += len;

    /* Trigger an immediate send poll. */
    lance->RAP = CSR0;		/* PCnet-ISA Controller Status */
@@ -707,15 +705,15 @@ static int ariadne_rx(struct net_device *dev)
		buffers, with only the last correctly noting the error. */
	    if (status & RF_ENP)
		/* Only count a general error at the end of a packet.*/
		priv->stats.rx_errors++;
		dev->stats.rx_errors++;
	    if (status & RF_FRAM)
		priv->stats.rx_frame_errors++;
		dev->stats.rx_frame_errors++;
	    if (status & RF_OFLO)
		priv->stats.rx_over_errors++;
		dev->stats.rx_over_errors++;
	    if (status & RF_CRC)
		priv->stats.rx_crc_errors++;
		dev->stats.rx_crc_errors++;
	    if (status & RF_BUFF)
		priv->stats.rx_fifo_errors++;
		dev->stats.rx_fifo_errors++;
	    priv->rx_ring[entry]->RMD1 &= 0xff00|RF_STP|RF_ENP;
	} else {
	    /* Malloc up new buffer, compatible with net-3. */
@@ -731,7 +729,7 @@ static int ariadne_rx(struct net_device *dev)
			break;

		if (i > RX_RING_SIZE-2) {
		    priv->stats.rx_dropped++;
		    dev->stats.rx_dropped++;
		    priv->rx_ring[entry]->RMD1 |= RF_OWN;
		    priv->cur_rx++;
		}
@@ -764,8 +762,8 @@ static int ariadne_rx(struct net_device *dev)

	    netif_rx(skb);
	    dev->last_rx = jiffies;
	    priv->stats.rx_packets++;
	    priv->stats.rx_bytes += pkt_len;
	    dev->stats.rx_packets++;
	    dev->stats.rx_bytes += pkt_len;
	}

	priv->rx_ring[entry]->RMD1 |= RF_OWN;
@@ -783,7 +781,6 @@ static int ariadne_rx(struct net_device *dev)

static struct net_device_stats *ariadne_get_stats(struct net_device *dev)
{
    struct ariadne_private *priv = netdev_priv(dev);
    volatile struct Am79C960 *lance = (struct Am79C960*)dev->base_addr;
    short saved_addr;
    unsigned long flags;
@@ -791,11 +788,11 @@ static struct net_device_stats *ariadne_get_stats(struct net_device *dev)
    local_irq_save(flags);
    saved_addr = lance->RAP;
    lance->RAP = CSR112;		/* Missed Frame Count */
    priv->stats.rx_missed_errors = swapw(lance->RDP);
    dev->stats.rx_missed_errors = swapw(lance->RDP);
    lance->RAP = saved_addr;
    local_irq_restore(flags);

    return &priv->stats;
    return &dev->stats;
}