[Maverick] [PATCH 0/2] Enable support for 82579 LOM's

Chris Van Hoof vanhoof at canonical.com
Tue Sep 7 17:10:08 UTC 2010


On 09/07/2010 12:01 PM, Tim Gardner wrote:
> On 09/07/2010 09:55 AM, Chris Van Hoof wrote:
>> On 09/01/2010 10:09 PM, leann.ogasawara at canonical.com wrote:
>>> Even though we can provide a full backport of the e1000e driver from
>>> 2.6.36 to enable 82579 LOM's via linux-backports-modules, I believe it
>>> would also be reasonable to add a minimal set of 82579 enablement
>>> patches to the main distro kernel. Those seeking the complete driver
>>> backport can use LBM. Thoughts?
>>>
>>> I've built and tested the following two patches and confirmed they do
>>> enable an 82579 LOM. I additionally tested on an older platform which
>>> leverages the e1000e driver and confirm I see no regressions.
>>>
>>> Thanks,
>>> Leann
>>>
>>> Bruce Allan (2):
>>> e1000e: initial support for 82579 LOMs
>>> e1000e: correct MAC-PHY interconnect register offset for 82579
>>>
>>> drivers/net/e1000e/defines.h | 2 +
>>> drivers/net/e1000e/e1000.h | 4 +
>>> drivers/net/e1000e/ethtool.c | 15 ++-
>>> drivers/net/e1000e/hw.h | 12 ++-
>>> drivers/net/e1000e/ich8lan.c | 326
>>> +++++++++++++++++++++++++++++++++++++++---
>>> drivers/net/e1000e/netdev.c | 70 ++++++----
>>> drivers/net/e1000e/phy.c | 3 +
>>> 7 files changed, 385 insertions(+), 47 deletions(-)
>>>
>>
>> Hey guys -- Just did a bit of smoke testing with these two patches on a
>> Intel 82579LM. I used the mtools suite from http://29west.com/mtools/
>> (free to to public to use).
>>
>> Mtools provides a set of utilities to test multicast performance, and in
>> the past has been quite helpful for me in testing driver functionality.
>> I can also run through and post some raw netperf runs if needed:
>>
>> All tests ran with:
>>
>> * http://people.canonical.com/~ogasawara/lp601044/
>>
>> $ lspci
>> [...]
>> 00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network
>> Connection (rev 02)
>> [...]
>> $ uname -a
>> Linux shanghai 2.6.35-19-generic #29+lp601044 SMP Mon Aug 30 20:24:58
>> UTC 2010 x86_64 GNU/Linux
>>
>> $ modinfo e1000e
>> filename:
>> /lib/modules/2.6.35-19-generic/kernel/drivers/net/e1000e/e1000e.ko
>> version: 1.0.2-k4
>> [...]
>>
>> To summarize my results, I'm able to successfully publish 11000 packets
>> in a single burst within ~1.5 seconds to a machine with a 82579LM based
>> Intel card. I'm also able to run this in reverse and receive 11000
>> packets in a single burst published by another host with an e1000e card.
>> All packets are 1450 bytes.
>>
>> I do not see any packet loss until I move the bursts into the 12000
>> packet range, which I could tune around if needed.
>>
>> Not a peep out of dmesg during these runs. Please let me know if there
>> are any questions.
>>
>>
>>
>> = 82579LM as publisher results =
>>
>> == 5000 1450 byte UDP packet burst ==
>> $ sudo sh udp_ 5000
>> Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.86
>> Setting IP_MUTLICAST_IF to 10.42.43.86
>> Sending 1 bursts of 5000 1450-byte messages
>> Sending burst of 5000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 5000 messages sent (not including 'stat')
>> Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.86
>> Setting IP_MUTLICAST_IF to 10.42.43.86
>> Sending 1 bursts of 5000 1450-byte messages
>> Sending burst of 5000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 5000 messages sent (not including 'stat')
>>
>> == 5000 1450 byte UDP packet burst (receiver) ==
>> $ sudo sh recv_
>> Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.1
>> 5000 msgs sent, 5000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.109690
>> 5000 msgs sent, 5000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.109230
>>
>>
>> == 10000 1450 byte UDP packet burst ==
>> $ sudo sh udp_ 10000
>> Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.86
>> Setting IP_MUTLICAST_IF to 10.42.43.86
>> Sending 1 bursts of 10000 1450-byte messages
>> Sending burst of 10000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 10000 messages sent (not including 'stat')
>> Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.86
>> Setting IP_MUTLICAST_IF to 10.42.43.86
>> Sending 1 bursts of 10000 1450-byte messages
>> Sending burst of 10000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 10000 messages sent (not including 'stat')
>>
>> == 10000 1450 byte UDP packet burst (receiver) ==
>> $ sudo sh recv_
>> Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.1
>> 10000 msgs sent, 10000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.201360
>> 10000 msgs sent, 10000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.188350
>>
>>
>> = 82579LM as receiver results =
>> == 5000 1450 byte UDP packet burst ==
>> $ sudo sh udp_ 5000
>> Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.1
>> Setting IP_MUTLICAST_IF to 10.42.43.1
>> Sending 1 bursts of 5000 1450-byte messages
>> Sending burst of 5000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 5000 messages sent (not including 'stat')
>> Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.1
>> Setting IP_MUTLICAST_IF to 10.42.43.1
>> Sending 1 bursts of 5000 1450-byte messages
>> Sending burst of 5000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 5000 messages sent (not including 'stat')
>>
>> == 5000 1450 byte UDP packet burst (receiver) ==
>> $ sudo sh recv_
>> Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.86
>> 5000 msgs sent, 5000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.258310
>> 5000 msgs sent, 5000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.256610
>>
>>
>> == 10000 1450 byte UDP packet burst ==
>> $ sudo sh udp_ 10000
>> Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.1
>> Setting IP_MUTLICAST_IF to 10.42.43.1
>> Sending 1 bursts of 10000 1450-byte messages
>> Sending burst of 10000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 10000 messages sent (not including 'stat')
>> Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216
>> 233.0.0.1 16384 2 10.42.43.1
>> Setting IP_MUTLICAST_IF to 10.42.43.1
>> Sending 1 bursts of 10000 1450-byte messages
>> Sending burst of 10000 msgs
>> Pausing before sending 'stat'
>> Sending stat
>> 10000 messages sent (not including 'stat')
>>
>> == 10000 1450 byte UDP packet burst (receiver) ==
>> $ sudo sh recv_
>> Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.86
>> 10000 msgs sent, 10000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.517340
>> 10000 msgs sent, 10000 received (not including 'stat')
>> 0.000000% loss Elapsed time: 1.519040
>>
>
> This certainly seems like sufficient throughput for basic enablement. I
> wonder if there is any difference with the full 2.6.36-rc3 backport that
> Leann published in maverick LBM. Perhaps you could try installing
> linux-backports-modules-net-maverick-generic ?
>
> rtg

Hi Tim -- I updated to 2.6.35-20-generic + 
linux-backports-modules-net-maverick-generic and re-ran through the 
tests.  Here are the averages from the tests:

== publisher averages ==
2.6.35-19-generic+lp601044: 5k = 1.10946 ... 10k = 1.19486
2.6.35-20-generic (lbm):    5k = 1.12047 ... 10k = 1.18845

== receiver averages ==
2.6.35-19-generic+lp601044: 5k = 1.25746 ... 10k = 1.51819
2.6.35-20-generic (lbm):    5k = 1.24325 ... 10k = 1.43217

It looks like the lbm version is a bit quicker on both the publishing 
and receiving side when dealing with 10k packets (publisher .00641s 
faster, and receiver .08602s faster), but really about the same overall 
in terms of basic performance.

The numbers on lbm for publishing a 5k burst are are a bit higher 
(.01101), but I would expect this to average out with a longer duration run.

--chris


$ uname -a
Linux shanghai 2.6.35-20-generic #29-Ubuntu SMP Fri Sep 3 14:55:28 UTC 
2010 x86_64 GNU/Linux

$ lspci | grep -i eth
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network 
Connection (rev 02)

vanhoof at shanghai:~$ modinfo e1000e
filename:       /lib/modules/2.6.35-20-generic/updates/net/e1000e.ko
version:        1.2.7-k2
[...]

vanhoof at shanghai:~$ dpkg -l linux-backports-modules-net-maverick-generic
||/ Name           Version        Description
+++-==============-==============-============================================
ii  linux-backport 2.6.35.20.21   Backported ethernet drivers for 
generic kern


= 82579LM as publisher results =
== 5000 1450 byte UDP packet burst ==
$ sudo sh udp_ 5000
Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.86
Setting IP_MUTLICAST_IF to 10.42.43.86
Sending 1 bursts of 5000 1450-byte messages
Sending burst of 5000 msgs
Pausing before sending 'stat'
Sending stat
5000 messages sent (not including 'stat')
Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.86
Setting IP_MUTLICAST_IF to 10.42.43.86
Sending 1 bursts of 5000 1450-byte messages
Sending burst of 5000 msgs
Pausing before sending 'stat'
Sending stat
5000 messages sent (not including 'stat')

== 5000 1450 byte UDP packet burst (receiver) ==
$ sudo sh recv_
Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.1
5000 msgs sent, 5000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.120430
5000 msgs sent, 5000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.120510


== 10000 1450 byte UDP packet burst ==
$ sudo sh udp_ 10000
Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.86
Setting IP_MUTLICAST_IF to 10.42.43.86
Sending 1 bursts of 10000 1450-byte messages
Sending burst of 10000 msgs
Pausing before sending 'stat'
Sending stat
10000 messages sent (not including 'stat')
Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.86
Setting IP_MUTLICAST_IF to 10.42.43.86
Sending 1 bursts of 10000 1450-byte messages
Sending burst of 10000 msgs
Pausing before sending 'stat'
Sending stat
10000 messages sent (not including 'stat')

== 10000 1450 byte UDP packet burst (receiver) ==
$ sudo sh recv_
10000 msgs sent, 10000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.187770
10000 msgs sent, 10000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.189120



= 82579LM as receiver results =
== 5000 1450 byte UDP packet burst ==
$ sudo sh udp_ 5000
Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.1
Setting IP_MUTLICAST_IF to 10.42.43.1
Sending 1 bursts of 5000 1450-byte messages
Sending burst of 5000 msgs
Pausing before sending 'stat'
Sending stat
5000 messages sent (not including 'stat')
Equiv cmd line: msend -b5000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.1
Setting IP_MUTLICAST_IF to 10.42.43.1
Sending 1 bursts of 5000 1450-byte messages
Sending burst of 5000 msgs
Pausing before sending 'stat'
Sending stat
5000 messages sent (not including 'stat')

== 5000 1450 byte UDP packet burst (receiver) ==
$ sudo sh recv_
Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.86
5000 msgs sent, 5000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.239440
5000 msgs sent, 5000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.247050


== 10000 1450 byte UDP packet burst ==
$ sudo sh udp_ 10000
Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.1
Setting IP_MUTLICAST_IF to 10.42.43.1
Sending 1 bursts of 10000 1450-byte messages
Sending burst of 10000 msgs
Pausing before sending 'stat'
Sending stat
10000 messages sent (not including 'stat')
Equiv cmd line: msend -b10000 -m1450 -n1 -p1000 -s1000 -S16777216 
233.0.0.1 16384 2 10.42.43.1
Setting IP_MUTLICAST_IF to 10.42.43.1
Sending 1 bursts of 10000 1450-byte messages
Sending burst of 10000 msgs
Pausing before sending 'stat'
Sending stat
10000 messages sent (not including 'stat')

== 10000 1450 byte UDP packet burst (receiver) ==
$ sudo sh recv_
Equiv cmd line: mdump -p0 -Q2 -r16777216 233.0.0.1 16384 10.42.43.86
10000 msgs sent, 10000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.429760
10000 msgs sent, 10000 received (not including 'stat')
0.000000% loss	Elapsed time: 1.434570





More information about the kernel-team mailing list