Add support for adjusting the interrupt throttling rate via
hw.emX.int_throttle_ceil, and change the default from 8000hz
to 10000hz to improve throughput with default TCP window sizes
through a GiGE switch in a LAN environment.
Note the following test results using iperf between two machines:
* Shuttle Athlon 64 3200+ box, EM card in 32 bit PCI slot
* 2 machines connected through a GiGE switch
* All other hw.em0 delays set to 0 on both sides
* throttle settings set on both sides
* -w option set on iperf client AND server for 63.5KB window
* software interrupt throttling has been turned off for these tests
throttle result result
freq (32.5KB win) (63.5KB win)
(default)
-------- -------------- -----------
maxrate 481 MBit/s 533 MBit/s (not sure what's going on here)
120000 518 MBit/s 558 MBit/s (not sure what's going on here)
100000 613 MBit/s 667 MBit/s (not sure what's going on here)
70000 679 MBit/s 691 MBit/s
60000 668 MBit/s 694 MBit/s
50000 678 MBit/s 684 MBit/s
40000 694 MBit/s 696 MBit/s
30000 694 MBit/s 696 MBit/s
20000 698 MBit/s 703 MBit/s
10000 707 MBit/s 716 MBit/s
9000 708 MBit/s 716 MBit/s
8000 710 MBit/s 717 MBit/s <--- drop off pt 32.5KB win
7000 683 MBit/s 716 MBit/s
6000 680 MBit/s 720 MBit/s
5000 652 MBit/s 718 MBit/s <--- drop off pt 63.5KB win
4000 555 Mbit/s 695 MBit/s
3000 522 MBit/s 533 MBit/s <--- GiGE throttling likely
2000 449 MBit/s 384 MBit/s (256 ring descriptors =
1000 260 MBit/s 193 MBit/s 2500 hz minimum)