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"

Reply via email to