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);
|