Thanks for your quick response.

> The hardware causing you problems is likely the cpu power management
> hardware.  We don't support the driver you mention, but you may want to
> try doing something in your OS to keep the cpu awake, like this:
> 
> /bin/bash
> alias haha="while true; do echo -n . > /dev/null ; done"
> haha &

Yes, I already did that, but forgot to mention this in my original mail.
This is only required on certain PCs, where the BIOS does not allow to disable 
the C1E power state.
The systems I am using have power management and C1E disabled and using a 
"background while 1 loop" does not change the picture.

> > Are there any known difference regarding the internal RX/TX latency of
> > these controllers?
> > Are there any configuration option/register setting besides interrupt
> > moderation that can explain these differences?
> 
> You should check the ITR register values, for the queues you're investigating
> to make sure they are zero.

So I guess the hardware latency for sending/receiving should be in the single 
digit microseconds range (once all ITR registers a zero)?
I looked into the source code of the QNX driver and actually found a code 
snipped for the 82574:

        /*
        ** When using MSIX interrupts we need to throttle
        ** using the EITR register (82574 only)
        */
        if (hw->mac.type == e1000_82574)
                for (i = 0; i < 4; i++)
                        E1000_WRITE_REG (hw, E1000_EITR_82574(i), 
i82544->rx_itr_val);

That looks OK to me and explains the good results for the 82574.

There is also ITR-related code for the other controller types, but it only seem 
to access queue 0:
                case    e1000_82576:
                case    e1000_82580:
                case    e1000_i350:
                case    e1000_i354:
                case    e1000_i210:
                case    e1000_i211:
                case    e1000_vfadapt:
                case    e1000_vfadapt_i350:
                        E1000_WRITE_REG (hw, E1000_GPIE, E1000_GPIE_MSIX_MODE | 
E1000_GPIE_EIAME |
                                E1000_GPIE_PBA | E1000_GPIE_NSICR);
                        E1000_WRITE_REG (hw, E1000_EITR(0), 
i82544->rx_itr_val);          <------------- only sets EITR of queue 0

So I will cross check this with the Linux e1000 driver (using the ethregs 
register dump tool) and report my findings
My expectation is that the same ping-pong benchmark under Linux should yield < 
45µs RoundTrip time with all of the above controller types, right?

Thanks in advance
  Ralf




------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to