mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 14:04:26 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 6d490f62a4c7f11c552591bdd08eda3636aa0db9 Mon Sep 17 00:00:00 2001
 | |
| From: Florian Fainelli <f.fainelli@gmail.com>
 | |
| Date: Tue, 7 Jun 2016 15:06:15 -0700
 | |
| Subject: [PATCH 3/3] bgmac: Maintain some netdev statistics
 | |
| 
 | |
| Add a few netdev statistics to report transmitted and received bytes and
 | |
| packets and a few obvious errors.
 | |
| 
 | |
| Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
 | |
| Signed-off-by: David S. Miller <davem@davemloft.net>
 | |
| ---
 | |
|  drivers/net/ethernet/broadcom/bgmac.c | 10 ++++++++++
 | |
|  1 file changed, 10 insertions(+)
 | |
| 
 | |
| --- a/drivers/net/ethernet/broadcom/bgmac.c
 | |
| +++ b/drivers/net/ethernet/broadcom/bgmac.c
 | |
| @@ -246,6 +246,8 @@ err_dma_head:
 | |
|  
 | |
|  err_drop:
 | |
|  	dev_kfree_skb(skb);
 | |
| +	net_dev->stats.tx_dropped++;
 | |
| +	net_dev->stats.tx_errors++;
 | |
|  	return NETDEV_TX_OK;
 | |
|  }
 | |
|  
 | |
| @@ -284,6 +286,8 @@ static void bgmac_dma_tx_free(struct bgm
 | |
|  				       DMA_TO_DEVICE);
 | |
|  
 | |
|  		if (slot->skb) {
 | |
| +			bgmac->net_dev->stats.tx_bytes += slot->skb->len;
 | |
| +			bgmac->net_dev->stats.tx_packets++;
 | |
|  			bytes_compl += slot->skb->len;
 | |
|  			pkts_compl++;
 | |
|  
 | |
| @@ -464,6 +468,7 @@ static int bgmac_dma_rx_read(struct bgma
 | |
|  				bgmac_err(bgmac, "Found poisoned packet at slot %d, DMA issue!\n",
 | |
|  					  ring->start);
 | |
|  				put_page(virt_to_head_page(buf));
 | |
| +				bgmac->net_dev->stats.rx_errors++;
 | |
|  				break;
 | |
|  			}
 | |
|  
 | |
| @@ -471,6 +476,8 @@ static int bgmac_dma_rx_read(struct bgma
 | |
|  				bgmac_err(bgmac, "Found oversized packet at slot %d, DMA issue!\n",
 | |
|  					  ring->start);
 | |
|  				put_page(virt_to_head_page(buf));
 | |
| +				bgmac->net_dev->stats.rx_length_errors++;
 | |
| +				bgmac->net_dev->stats.rx_errors++;
 | |
|  				break;
 | |
|  			}
 | |
|  
 | |
| @@ -481,6 +488,7 @@ static int bgmac_dma_rx_read(struct bgma
 | |
|  			if (unlikely(!skb)) {
 | |
|  				bgmac_err(bgmac, "build_skb failed\n");
 | |
|  				put_page(virt_to_head_page(buf));
 | |
| +				bgmac->net_dev->stats.rx_errors++;
 | |
|  				break;
 | |
|  			}
 | |
|  			skb_put(skb, BGMAC_RX_FRAME_OFFSET +
 | |
| @@ -490,6 +498,8 @@ static int bgmac_dma_rx_read(struct bgma
 | |
|  
 | |
|  			skb_checksum_none_assert(skb);
 | |
|  			skb->protocol = eth_type_trans(skb, bgmac->net_dev);
 | |
| +			bgmac->net_dev->stats.rx_bytes += len;
 | |
| +			bgmac->net_dev->stats.rx_packets++;
 | |
|  			napi_gro_receive(&bgmac->napi, skb);
 | |
|  			handled++;
 | |
|  		} while (0);
 |