From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH 1/4] e1000: remove crc size from all byte counters Date: Mon, 16 Nov 2015 08:54:40 -0800 Message-ID: <20151116085440.3dca3ce0@samsung9> References: <1447670117-17723-1-git-send-email-harry.van.haaren@intel.com> <1447670117-17723-2-git-send-email-harry.van.haaren@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: Harry van Haaren Return-path: Received: from mx0b-000f0801.pphosted.com (mx0b-000f0801.pphosted.com [67.231.152.113]) by dpdk.org (Postfix) with ESMTP id 5A06F58C3 for ; Mon, 16 Nov 2015 17:54:54 +0100 (CET) In-Reply-To: <1447670117-17723-2-git-send-email-harry.van.haaren@intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Mon, 16 Nov 2015 10:35:14 +0000 Harry van Haaren wrote: > This patch removes the crc bytes from byte counter statistics. > > Signed-off-by: Harry van Haaren > --- > drivers/net/e1000/igb_ethdev.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c > index 88995b0..0ad7341 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -1480,6 +1480,13 @@ igb_read_stats_registers(struct e1000_hw *hw, struct e1000_hw_stats *stats) > { > int pause_frames; > > + uint64_t old_gprc = stats->gprc; > + uint64_t old_gptc = stats->gptc; > + uint64_t old_tpr = stats->tpr; > + uint64_t old_tpt = stats->tpt; > + uint64_t old_rpthc = stats->rpthc; > + uint64_t old_hgptc = stats->hgptc; > + > if(hw->phy.media_type == e1000_media_type_copper || > (E1000_READ_REG(hw, E1000_STATUS) & E1000_STATUS_LU)) { > stats->symerrs += > @@ -1521,10 +1528,13 @@ igb_read_stats_registers(struct e1000_hw *hw, struct e1000_hw_stats *stats) > /* For the 64-bit byte counters the low dword must be read first. */ > /* Both registers clear on the read of the high dword */ > > + /* Workaround CRC bytes included in size, take away 4 bytes/packet */ > stats->gorc += E1000_READ_REG(hw, E1000_GORCL); > stats->gorc += ((uint64_t)E1000_READ_REG(hw, E1000_GORCH) << 32); > + stats->gorc -= (stats->gprc - old_gprc) * 4; > stats->gotc += E1000_READ_REG(hw, E1000_GOTCL); > stats->gotc += ((uint64_t)E1000_READ_REG(hw, E1000_GOTCH) << 32); > + stats->gotc -= (stats->gptc - old_gptc) * 4; > > stats->rnbc += E1000_READ_REG(hw, E1000_RNBC); > stats->ruc += E1000_READ_REG(hw, E1000_RUC); > @@ -1532,13 +1542,16 @@ igb_read_stats_registers(struct e1000_hw *hw, struct e1000_hw_stats *stats) > stats->roc += E1000_READ_REG(hw, E1000_ROC); > stats->rjc += E1000_READ_REG(hw, E1000_RJC); > > + stats->tpr += E1000_READ_REG(hw, E1000_TPR); > + stats->tpt += E1000_READ_REG(hw, E1000_TPT); > + > stats->tor += E1000_READ_REG(hw, E1000_TORL); > stats->tor += ((uint64_t)E1000_READ_REG(hw, E1000_TORH) << 32); > + stats->tor -= (stats->tpr - old_tpr) * 4; Why not use ETHER_CRC_LEN rather than magic # 4?