Subject: Re: [PATCH] Fix e100 on systems that have cache incoherent DMA

From: David Acker <[email-masked]>
Date: Tue, 11 Sep 2007 16:54:59 -0400

Jeff Garzik wrote:
> David Acker wrote:
>> Let me know if there is any other information I can provide you.  I 
>> will look through the code to see what could be going on with your 
>> machine.  I will also look into reproducing these results with a newer 
>> kernel.  This may be tricky since compulab's patches are pretty stale 
>> and don't always apply easily.
> 
> 
> pktgen outputs for the various cases modified/unmodified[/others?] would 
> be nice, if you have a spot of time.
> 
>     Jeff

I am not familiar with pktgen but I seem to have it working for a simple test.
I edited the 1-1 example from ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/ .  The results with 
and without the patch are below.  Let me know if you want any other tests run.  I obtained a PCI to miniPCI adapter that 
will let me test my miniPCI based e100s on my main dev box.  I will work on reproducing Intel's results tomorrow as time 
permits.  I am also still trying to get time to work on a recent kernel merge.  Not a lot changed in the 100 since 
2.6.18.4 except a flip from readX/writeX to ioreadX/iowriteX.

-Ack

cm-debian:/tmp# ./pktgen.conf-1-1
Removing all devices
Adding eth0
Setting max_before_softirq 10000
Configuring /proc/net/pktgen/eth0
Running... ctrl^C to stop
Done

Here are the results on 2.6.18.4 with the patch I submitted on my embedded system.

cm-debian:/tmp# cat /proc/net/pktgen/eth0
Params: count 10000000  min_pkt_size: 60  max_pkt_size: 60
      frags: 0  delay: 0  clone_skb: 1000000  ifname: eth0
      flows: 0 flowlen: 0
      dst_min: 192.168.1.40  dst_max:
      src_min:   src_max:
      src_mac: 00:09:30:FF:F2:F6  dst_mac: 00:19:B9:0B:45:8E
      udp_src_min: 9  udp_src_max: 9  udp_dst_min: 9  udp_dst_max: 9
      src_mac_count: 0  dst_mac_count: 0
      Flags:
Current:
      pkts-sofar: 10000000  errors: 0
      started: 14852031282115us  stopped: 14852181463422us idle: 918us
      seq_num: 10000011  cur_dst_mac_offset: 0  cur_src_mac_offset: 0
      cur_saddr: 0x2901a8c0  cur_daddr: 0x2801a8c0
      cur_udp_dst: 9  cur_udp_src: 9
      flows: 0
Result: OK: 150181307(c150180389+d918) usec, 10000000 (60byte,0frags)
   66586pps 31Mb/sec (31961280bps) errors: 0

and here are the results without the patch:

cm-debian:/tmp# cat /proc/net/pktgen/eth0
Params: count 10000000  min_pkt_size: 60  max_pkt_size: 60
      frags: 0  delay: 0  clone_skb: 1000000  ifname: eth0
      flows: 0 flowlen: 0
      dst_min: 192.168.1.40  dst_max:
      src_min:   src_max:
      src_mac: 00:09:30:FF:F2:F6  dst_mac: 00:19:B9:0B:45:8E
      udp_src_min: 9  udp_src_max: 9  udp_dst_min: 9  udp_dst_max: 9
      src_mac_count: 0  dst_mac_count: 0
      Flags:
Current:
      pkts-sofar: 10000000  errors: 0
      started: 14864204332576us  stopped: 14864355451225us idle: 1431us
      seq_num: 10000011  cur_dst_mac_offset: 0  cur_src_mac_offset: 0
      cur_saddr: 0x2901a8c0  cur_daddr: 0x2801a8c0
      cur_udp_dst: 9  cur_udp_src: 9
      flows: 0
Result: OK: 151118649(c151117218+d1431) usec, 10000000 (60byte,0frags)
   66173pps 31Mb/sec (31763040bps) errors: 0