Re: [PATCH net v1 1/1] net: fec: Fix Transmitted bytes counter
From: David Miller <davem@davemloft.net>
Date: 2013-07-01 20:40:01
From: Duan Fugang-B38611 <redacted> Date: Fri, 28 Jun 2013 02:11:30 +0000
On 06/28/13 02:25, Jim Baxter wrote:quoted
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index ed6180e..05a5f76 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c@@ -738,6 +738,7 @@ fec_enet_tx(struct net_device *ndev) ndev->stats.tx_carrier_errors++; } else { ndev->stats.tx_packets++; + ndev->stats.tx_bytes += bdp->cbd_datlen; } if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS) && --You cannot stat. tx_bytes in here, since stat.tx_bytes indicate that all bytes sent by MAC regardless whether there have error packets or not. You must add the stat. at xmit function as below:
I completely disagree. tx_bytes indicates what actually made it to the wires, so Jim's original patch is the correct one. Every single driver I have ever written, always increments tx_bytes in the transmit completion handler, not when the device layer gives the packet to the driver.