From owner-freebsd-net@FreeBSD.ORG Mon Aug 6 21:01:00 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 355F5106566C for ; Mon, 6 Aug 2012 21:01:00 +0000 (UTC) (envelope-from aboyer@averesystems.com) Received: from mail.averesystems.com (mail.averesystems.com [208.70.68.85]) by mx1.freebsd.org (Postfix) with ESMTP id 05FCB8FC0C for ; Mon, 6 Aug 2012 21:01:00 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.averesystems.com (Postfix) with ESMTP id 245D9480780 for ; Mon, 6 Aug 2012 17:01:02 -0400 (EDT) X-Virus-Scanned: amavisd-new at mail.averesystems.com Received: from mail.averesystems.com ([127.0.0.1]) by localhost (mail.averesystems.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id a+iaUabV1nWV for ; Mon, 6 Aug 2012 17:01:01 -0400 (EDT) Received: from riven.arriad.com (206.193.225.214.nauticom.net [206.193.225.214]) by mail.averesystems.com (Postfix) with ESMTPSA id 8184548073E for ; Mon, 6 Aug 2012 17:01:01 -0400 (EDT) From: Andrew Boyer Content-Type: multipart/mixed; boundary="Apple-Mail=_74B83304-D2B0-407D-A5AF-A78C022F5F90" Date: Mon, 6 Aug 2012 17:00:58 -0400 Message-Id: To: freebsd-net@freebsd.org Mime-Version: 1.0 (Apple Message framework v1278) X-Mailer: Apple Mail (2.1278) Subject: [patch] ixgbe stats cleanup X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Aug 2012 21:01:00 -0000 --Apple-Mail=_74B83304-D2B0-407D-A5AF-A78C022F5F90 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii This patch fixes some nits in the ixgbe driver statistics: - Only read FCCRC and FCLAST on 82599+ - Store total_missed_rx in stats.mpctotal, and display it in a sysctl - Don't increment if_opackets and if_ipackets every packet; they're = overwritten by hw stats collection - Increment adapter->dropped_pkts instead of if_ierrors; if_ierrors is = overwritten by hw stats collection - Include adapter->dropped_pkts in the calculation of if_ierrors - Increment rxr->packets so that AIM works Comments welcome. -Andrew --Apple-Mail=_74B83304-D2B0-407D-A5AF-A78C022F5F90 Content-Disposition: attachment; filename=ixgbe_stats.diff Content-Type: application/octet-stream; name="ixgbe_stats.diff" Content-Transfer-Encoding: 7bit Index: sys/dev/ixgbe/ixgbe.c =================================================================== --- sys/dev/ixgbe/ixgbe.c (revision 239102) +++ sys/dev/ixgbe/ixgbe.c (working copy) @@ -3519,7 +3519,6 @@ ixgbe_txeof(struct tx_ring *txr) { struct adapter *adapter = txr->adapter; - struct ifnet *ifp = adapter->ifp; u32 first, last, done, processed; struct ixgbe_tx_buf *tx_buffer; struct ixgbe_legacy_tx_desc *tx_desc, *eop_desc; @@ -3527,8 +3526,8 @@ mtx_assert(&txr->tx_mtx, MA_OWNED); #ifdef DEV_NETMAP - if (ifp->if_capenable & IFCAP_NETMAP) { - struct netmap_adapter *na = NA(ifp); + if (adapter->ifp->if_capenable & IFCAP_NETMAP) { + struct netmap_adapter *na = NA(adapter->ifp); struct netmap_kring *kring = &na->tx_rings[txr->me]; tx_desc = (struct ixgbe_legacy_tx_desc *)txr->tx_base; @@ -3630,7 +3629,6 @@ (struct ixgbe_legacy_tx_desc *)&txr->tx_base[first]; } ++txr->packets; - ++ifp->if_opackets; /* See if there is more work now */ last = tx_buffer->eop_index; if (last != -1) { @@ -4503,7 +4501,7 @@ /* Make sure bad packets are discarded */ if (((staterr & IXGBE_RXDADV_ERR_FRAME_ERR_MASK) != 0) || (rxr->discard)) { - ifp->if_ierrors++; + adapter->dropped_pkts++; rxr->rx_discarded++; if (eop) rxr->discard = FALSE; @@ -4644,11 +4642,12 @@ /* Sending this frame? */ if (eop) { sendmp->m_pkthdr.rcvif = ifp; - ifp->if_ipackets++; rxr->rx_packets++; + rxr->rx_bytes += sendmp->m_pkthdr.len; + /* capture data for AIM */ + rxr->packets++; rxr->bytes += sendmp->m_pkthdr.len; - rxr->rx_bytes += sendmp->m_pkthdr.len; if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) ixgbe_rx_checksum(staterr, sendmp, ptype); #if __FreeBSD_version >= 800000 @@ -5168,6 +5167,8 @@ adapter->stats.pxon2offc[i] += IXGBE_READ_REG(hw, IXGBE_PXON2OFFCNT(i)); } + adapter->stats.mpctotal = total_missed_rx; + for (int i = 0; i < 16; i++) { adapter->stats.qprc[i] += IXGBE_READ_REG(hw, IXGBE_QPRC(i)); adapter->stats.qptc[i] += IXGBE_READ_REG(hw, IXGBE_QPTC(i)); @@ -5252,10 +5253,10 @@ adapter->stats.ptc1522 += IXGBE_READ_REG(hw, IXGBE_PTC1522); adapter->stats.bptc += IXGBE_READ_REG(hw, IXGBE_BPTC); adapter->stats.xec += IXGBE_READ_REG(hw, IXGBE_XEC); - adapter->stats.fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); - adapter->stats.fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); /* Only read FCOE on 82599 */ if (hw->mac.type != ixgbe_mac_82598EB) { + adapter->stats.fccrc += IXGBE_READ_REG(hw, IXGBE_FCCRC); + adapter->stats.fclast += IXGBE_READ_REG(hw, IXGBE_FCLAST); adapter->stats.fcoerpdc += IXGBE_READ_REG(hw, IXGBE_FCOERPDC); adapter->stats.fcoeprc += IXGBE_READ_REG(hw, IXGBE_FCOEPRC); adapter->stats.fcoeptc += IXGBE_READ_REG(hw, IXGBE_FCOEPTC); @@ -5273,7 +5274,7 @@ /* Rx Errors */ ifp->if_ierrors = total_missed_rx + adapter->stats.crcerrs + - adapter->stats.rlec; + adapter->stats.rlec + adapter->dropped_pkts; } /** ixgbe_sysctl_tdh_handler - Handler function @@ -5484,8 +5485,7 @@ "LRO Flushed"); } - /* MAC stats get the own sub node */ - + /* MAC stats get their own sub node */ stat_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "mac_stats", CTLFLAG_RD, NULL, "MAC Statistics"); stat_list = SYSCTL_CHILDREN(stat_node); @@ -5502,6 +5502,9 @@ SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "short_discards", CTLFLAG_RD, &stats->mspdc, "MAC Short Packets Discarded"); + SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "missed_packets", + CTLFLAG_RD, &stats->mpctotal, + "Missed Packets"); SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "local_faults", CTLFLAG_RD, &stats->mlfc, "MAC Local Faults"); --Apple-Mail=_74B83304-D2B0-407D-A5AF-A78C022F5F90 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii -------------------------------------------------- Andrew Boyer aboyer@averesystems.com --Apple-Mail=_74B83304-D2B0-407D-A5AF-A78C022F5F90--