mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-11-01 09:13:37 +00:00 
			
		
		
		
	ethoc: 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
							
								
									d117b66658
								
							
						
					
					
						commit
						57616ee440
					
				
					 1 changed files with 22 additions and 25 deletions
				
			
		| 
						 | 
					@ -183,7 +183,6 @@ MODULE_PARM_DESC(buffer_size, "DMA buffer allocation size");
 | 
				
			||||||
 * @vma:        pointer to array of virtual memory addresses for buffers
 | 
					 * @vma:        pointer to array of virtual memory addresses for buffers
 | 
				
			||||||
 * @netdev:	pointer to network device structure
 | 
					 * @netdev:	pointer to network device structure
 | 
				
			||||||
 * @napi:	NAPI structure
 | 
					 * @napi:	NAPI structure
 | 
				
			||||||
 * @stats:	network device statistics
 | 
					 | 
				
			||||||
 * @msg_enable:	device state flags
 | 
					 * @msg_enable:	device state flags
 | 
				
			||||||
 * @rx_lock:	receive lock
 | 
					 * @rx_lock:	receive lock
 | 
				
			||||||
 * @lock:	device lock
 | 
					 * @lock:	device lock
 | 
				
			||||||
| 
						 | 
					@ -208,7 +207,6 @@ struct ethoc {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct net_device *netdev;
 | 
						struct net_device *netdev;
 | 
				
			||||||
	struct napi_struct napi;
 | 
						struct napi_struct napi;
 | 
				
			||||||
	struct net_device_stats stats;
 | 
					 | 
				
			||||||
	u32 msg_enable;
 | 
						u32 msg_enable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	spinlock_t rx_lock;
 | 
						spinlock_t rx_lock;
 | 
				
			||||||
| 
						 | 
					@ -367,39 +365,39 @@ static unsigned int ethoc_update_rx_stats(struct ethoc *dev,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_TL) {
 | 
						if (bd->stat & RX_BD_TL) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: frame too long\n");
 | 
							dev_err(&netdev->dev, "RX: frame too long\n");
 | 
				
			||||||
		dev->stats.rx_length_errors++;
 | 
							netdev->stats.rx_length_errors++;
 | 
				
			||||||
		ret++;
 | 
							ret++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_SF) {
 | 
						if (bd->stat & RX_BD_SF) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: frame too short\n");
 | 
							dev_err(&netdev->dev, "RX: frame too short\n");
 | 
				
			||||||
		dev->stats.rx_length_errors++;
 | 
							netdev->stats.rx_length_errors++;
 | 
				
			||||||
		ret++;
 | 
							ret++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_DN) {
 | 
						if (bd->stat & RX_BD_DN) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: dribble nibble\n");
 | 
							dev_err(&netdev->dev, "RX: dribble nibble\n");
 | 
				
			||||||
		dev->stats.rx_frame_errors++;
 | 
							netdev->stats.rx_frame_errors++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_CRC) {
 | 
						if (bd->stat & RX_BD_CRC) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: wrong CRC\n");
 | 
							dev_err(&netdev->dev, "RX: wrong CRC\n");
 | 
				
			||||||
		dev->stats.rx_crc_errors++;
 | 
							netdev->stats.rx_crc_errors++;
 | 
				
			||||||
		ret++;
 | 
							ret++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_OR) {
 | 
						if (bd->stat & RX_BD_OR) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: overrun\n");
 | 
							dev_err(&netdev->dev, "RX: overrun\n");
 | 
				
			||||||
		dev->stats.rx_over_errors++;
 | 
							netdev->stats.rx_over_errors++;
 | 
				
			||||||
		ret++;
 | 
							ret++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_MISS)
 | 
						if (bd->stat & RX_BD_MISS)
 | 
				
			||||||
		dev->stats.rx_missed_errors++;
 | 
							netdev->stats.rx_missed_errors++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & RX_BD_LC) {
 | 
						if (bd->stat & RX_BD_LC) {
 | 
				
			||||||
		dev_err(&netdev->dev, "RX: late collision\n");
 | 
							dev_err(&netdev->dev, "RX: late collision\n");
 | 
				
			||||||
		dev->stats.collisions++;
 | 
							netdev->stats.collisions++;
 | 
				
			||||||
		ret++;
 | 
							ret++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -431,15 +429,15 @@ static int ethoc_rx(struct net_device *dev, int limit)
 | 
				
			||||||
				void *src = priv->vma[entry];
 | 
									void *src = priv->vma[entry];
 | 
				
			||||||
				memcpy_fromio(skb_put(skb, size), src, size);
 | 
									memcpy_fromio(skb_put(skb, size), src, size);
 | 
				
			||||||
				skb->protocol = eth_type_trans(skb, dev);
 | 
									skb->protocol = eth_type_trans(skb, dev);
 | 
				
			||||||
				priv->stats.rx_packets++;
 | 
									dev->stats.rx_packets++;
 | 
				
			||||||
				priv->stats.rx_bytes += size;
 | 
									dev->stats.rx_bytes += size;
 | 
				
			||||||
				netif_receive_skb(skb);
 | 
									netif_receive_skb(skb);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				if (net_ratelimit())
 | 
									if (net_ratelimit())
 | 
				
			||||||
					dev_warn(&dev->dev, "low on memory - "
 | 
										dev_warn(&dev->dev, "low on memory - "
 | 
				
			||||||
							"packet dropped\n");
 | 
												"packet dropped\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				priv->stats.rx_dropped++;
 | 
									dev->stats.rx_dropped++;
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -460,30 +458,30 @@ static int ethoc_update_tx_stats(struct ethoc *dev, struct ethoc_bd *bd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & TX_BD_LC) {
 | 
						if (bd->stat & TX_BD_LC) {
 | 
				
			||||||
		dev_err(&netdev->dev, "TX: late collision\n");
 | 
							dev_err(&netdev->dev, "TX: late collision\n");
 | 
				
			||||||
		dev->stats.tx_window_errors++;
 | 
							netdev->stats.tx_window_errors++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & TX_BD_RL) {
 | 
						if (bd->stat & TX_BD_RL) {
 | 
				
			||||||
		dev_err(&netdev->dev, "TX: retransmit limit\n");
 | 
							dev_err(&netdev->dev, "TX: retransmit limit\n");
 | 
				
			||||||
		dev->stats.tx_aborted_errors++;
 | 
							netdev->stats.tx_aborted_errors++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & TX_BD_UR) {
 | 
						if (bd->stat & TX_BD_UR) {
 | 
				
			||||||
		dev_err(&netdev->dev, "TX: underrun\n");
 | 
							dev_err(&netdev->dev, "TX: underrun\n");
 | 
				
			||||||
		dev->stats.tx_fifo_errors++;
 | 
							netdev->stats.tx_fifo_errors++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & TX_BD_CS) {
 | 
						if (bd->stat & TX_BD_CS) {
 | 
				
			||||||
		dev_err(&netdev->dev, "TX: carrier sense lost\n");
 | 
							dev_err(&netdev->dev, "TX: carrier sense lost\n");
 | 
				
			||||||
		dev->stats.tx_carrier_errors++;
 | 
							netdev->stats.tx_carrier_errors++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bd->stat & TX_BD_STATS)
 | 
						if (bd->stat & TX_BD_STATS)
 | 
				
			||||||
		dev->stats.tx_errors++;
 | 
							netdev->stats.tx_errors++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dev->stats.collisions += (bd->stat >> 4) & 0xf;
 | 
						netdev->stats.collisions += (bd->stat >> 4) & 0xf;
 | 
				
			||||||
	dev->stats.tx_bytes += bd->stat >> 16;
 | 
						netdev->stats.tx_bytes += bd->stat >> 16;
 | 
				
			||||||
	dev->stats.tx_packets++;
 | 
						netdev->stats.tx_packets++;
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -514,7 +512,7 @@ static void ethoc_tx(struct net_device *dev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
 | 
					static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct net_device *dev = (struct net_device *)dev_id;
 | 
						struct net_device *dev = dev_id;
 | 
				
			||||||
	struct ethoc *priv = netdev_priv(dev);
 | 
						struct ethoc *priv = netdev_priv(dev);
 | 
				
			||||||
	u32 pending;
 | 
						u32 pending;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -529,7 +527,7 @@ static irqreturn_t ethoc_interrupt(int irq, void *dev_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pending & INT_MASK_BUSY) {
 | 
						if (pending & INT_MASK_BUSY) {
 | 
				
			||||||
		dev_err(&dev->dev, "packet dropped\n");
 | 
							dev_err(&dev->dev, "packet dropped\n");
 | 
				
			||||||
		priv->stats.rx_dropped++;
 | 
							dev->stats.rx_dropped++;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (pending & INT_MASK_RX) {
 | 
						if (pending & INT_MASK_RX) {
 | 
				
			||||||
| 
						 | 
					@ -810,8 +808,7 @@ static void ethoc_tx_timeout(struct net_device *dev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct net_device_stats *ethoc_stats(struct net_device *dev)
 | 
					static struct net_device_stats *ethoc_stats(struct net_device *dev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct ethoc *priv = netdev_priv(dev);
 | 
						return &dev->stats;
 | 
				
			||||||
	return &priv->stats;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev)
 | 
					static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev)
 | 
				
			||||||
| 
						 | 
					@ -822,7 +819,7 @@ static netdev_tx_t ethoc_start_xmit(struct sk_buff *skb, struct net_device *dev)
 | 
				
			||||||
	void *dest;
 | 
						void *dest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (unlikely(skb->len > ETHOC_BUFSIZ)) {
 | 
						if (unlikely(skb->len > ETHOC_BUFSIZ)) {
 | 
				
			||||||
		priv->stats.tx_errors++;
 | 
							dev->stats.tx_errors++;
 | 
				
			||||||
		goto out;
 | 
							goto out;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue