From owner-freebsd-drivers@FreeBSD.ORG Thu Oct 3 07:14:06 2013 Return-Path: Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2025013A for ; Thu, 3 Oct 2013 07:14:06 +0000 (UTC) (envelope-from paul-a.patience@polymtl.ca) Received: from ironport2-out.teksavvy.com (ironport2-out.teksavvy.com [206.248.154.182]) by mx1.freebsd.org (Postfix) with ESMTP id E251F288A for ; Thu, 3 Oct 2013 07:14:05 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjoIABK/CFFFpcPK/2dsb2JhbABErF0BikSEE4NZF3OCTBMccgFKP4gJoAuhIo1hgykDn1yGfIMT X-IPAS-Result: AjoIABK/CFFFpcPK/2dsb2JhbABErF0BikSEE4NZF3OCTBMccgFKP4gJoAuhIo1hgykDn1yGfIMT X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="34650426" Received: from 69-165-195-202.cable.teksavvy.com (HELO d530.9front) ([69.165.195.202]) by ironport2-out.teksavvy.com with ESMTP; 03 Oct 2013 03:10:36 -0400 Message-ID: <64bad99f27cc6c5cafd063e2d3232e68@yourdomain.dom> Date: Thu, 3 Oct 2013 03:13:58 -0400 From: Paul A. Patience To: freebsd-drivers@freebsd.org Subject: [patch] sys/dev/nfe/if_nfe.c MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Oct 2013 07:14:06 -0000 Hello, I _may_ have found another bug in nfe(4). If the goal in nfe_stats_clear() is to read all the stats registers, then it is doing it wrong. It currently reads every fourth register. Here is a patch to fix this behaviour: --- if_nfe.c.original Thu Oct 3 03:10:11 2013 +++ if_nfe.c Thu Oct 3 03:11:10 2013 @@ -3205,8 +3205,8 @@ else return; - for (i = 0; i < mib_cnt; i += sizeof(uint32_t)) - NFE_READ(sc, NFE_TX_OCTET + i); + for (i = 0; i < mib_cnt; i++) + NFE_READ(sc, NFE_TX_OCTET + i*sizeof(uint32_t)); if ((sc->nfe_flags & NFE_MIB_V3) != 0) { NFE_READ(sc, NFE_TX_UNICAST); -- pap