Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Dec 2013 08:49:49 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        Michael Tuexen <Michael.Tuexen@lurchi.franken.de>
Cc:        Jack F Vogel <jfv@freebsd.org>, freebsd-net <freebsd-net@freebsd.org>, Ryan Stone <rysto32@gmail.com>
Subject:   Re: buf_ring in HEAD is racy
Message-ID:  <CAJ-Vmo=%2BxqBc1S5ENNq5Fdh26gxKhiMTq3w9Uqk7zPrBTMizzQ@mail.gmail.com>
In-Reply-To: <CAJ-Vmomw8qF4f=ZVA0ELHOXtcD-4OQosBU3gqeM5p-zKbPbcdg@mail.gmail.com>
References:  <CAFMmRNyJpvZ0AewWr62w16=qKer%2BFNXUJJy0Qc=EBqMnUV3OyQ@mail.gmail.com> <CAJ-VmonJG-M_f_m36f-z3ArumBKNdt5%2B6muwFJzWABRxRQWJaw@mail.gmail.com> <CAJ-Vmo=OpWZ_OphA=%2BXbmgHw%2BFwuCMwngHq9_2WOnNHMa_RA9A@mail.gmail.com> <CAJ-Vmo=iayVJiMNihmPf_Dd18uEZ5W-j9E3g4SeaRhfFJQj4Ow@mail.gmail.com> <E5612C2C-C9B9-45D8-A794-9993FE39D9E6@lurchi.franken.de> <CAJ-Vmomw8qF4f=ZVA0ELHOXtcD-4OQosBU3gqeM5p-zKbPbcdg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Try:

Index: sys/dev/ixgbe/ixgbe.c
===================================================================
--- sys/dev/ixgbe/ixgbe.c       (revision 2995)
+++ sys/dev/ixgbe/ixgbe.c       (working copy)
@@ -5178,6 +5178,7 @@
        struct ixgbe_hw *hw = &adapter->hw;
        u32  missed_rx = 0, bprc, lxon, lxoff, total;
        u64  total_missed_rx = 0;
+       u64  odrops = 0;

        adapter->stats.crcerrs += IXGBE_READ_REG(hw, IXGBE_CRCERRS);
        adapter->stats.illerrc += IXGBE_READ_REG(hw, IXGBE_ILLERRC);
@@ -5308,6 +5309,11 @@
                adapter->stats.fcoedwtc += IXGBE_READ_REG(hw, IXGBE_FCOEDWTC);
        }

+       /* TX drops */
+       for (int i = 0; i < adapter->num_queues; i++) {
+               odrops += adapter->tx_rings[i].br->br_drops;
+       }
+
        /* Fill out the OS statistics structure */
        ifp->if_ipackets = adapter->stats.gprc;
        ifp->if_opackets = adapter->stats.gptc;
@@ -5317,6 +5323,9 @@
        ifp->if_omcasts = adapter->stats.mptc;
        ifp->if_collisions = 0;

+       /* TX drops are stored in if_snd for now, not the top level counters */
+       ifp->if_snd.ifq_drops = odrops;
+
        /* Rx Errors */
        ifp->if_iqdrops = total_missed_rx;
        ifp->if_ierrors = adapter->stats.crcerrs + adapter->stats.rlec;


-adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=%2BxqBc1S5ENNq5Fdh26gxKhiMTq3w9Uqk7zPrBTMizzQ>