Sigh, yes, you're right, I will get this corrected after the holiday weekend.
Thanks, Jack On Sat, Sep 5, 2009 at 10:45 AM, Dmitrij Tejblum <tejb...@yandex-team.ru>wrote: > Jack, > > The code you committed does not look right with respect to missed packets > counting: > > > for (int i = 0; i < 8; i++) { > /* missed_rx tallies misses for the gprc workaround */ > missed_rx += IXGBE_READ_REG(hw, IXGBE_MPC(i)); > adapter->stats.mpc[i] += missed_rx; > /* Running comprehensive total for stats display */ > total_missed_rx += adapter->stats.mpc[i]; > if (hw->mac.type == ixgbe_mac_82598EB) > adapter->stats.rnbc[i] += > IXGBE_READ_REG(hw, IXGBE_RNBC(i)); > } > > You see, the value of the MPC(0) register also added to mpc[1], mpc[2], ... > mpc[7], and thus gets added to total_missed_rx 8 times. The MPC(1) register > gets added to total_missed_rx 7 times, and so on. > > > I would suggest something like this: > > for (int i = 0; i < 8; i++) { > u32 mp; > mp = IXGBE_READ_REG(hw, IXGBE_MPC(i)); > /* missed_rx tallies misses for the gprc workaround */ > missed_rx += mp; > adapter->stats.mpc[i] += mp; > /* Running comprehensive total for stats display */ > total_missed_rx += adapter->stats.mpc[i]; > if (hw->mac.type == ixgbe_mac_82598EB) > adapter->stats.rnbc[i] += > IXGBE_READ_REG(hw, IXGBE_RNBC(i)); > } > > Also, there was PR kern/127834 on this issue, that should be closed as the > issue fixed. > > > > > -- > Dima > _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"