diff options
Diffstat (limited to 'drivers/net/ariadne.c')
| -rw-r--r-- | drivers/net/ariadne.c | 47 | 
1 files changed, 22 insertions, 25 deletions
diff --git a/drivers/net/ariadne.c b/drivers/net/ariadne.c index 10f3a196be3..29e53eb71c7 100644 --- a/drivers/net/ariadne.c +++ b/drivers/net/ariadne.c @@ -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;  }  | 
