Marvell Yukon II (msk driver) polling support

YongHyeon PYUN pyunyh at gmail.com
Tue May 31 01:57:58 UTC 2016


On Mon, May 30, 2016 at 01:44:50PM +0300, ?????????? via freebsd-drivers wrote:
> Hi All, 
> 
> I have a home NAS server with two Marvell Yukon II GBE NICs working in
> aggregated mode (lagg, round-robin packet distribution). When I'm
> measuring network performance using iperf, I'm getting near 1.5GBps
> speed and one core of my old Xeon E5060 fully loaded with interrupts. 
> 

How many number of interrupts do you see?
Default configuration will generate up to 10k interrupts per second
and I guess it wouldn't consume all available CPU cycles on your
box.  If you want to reduce number of interrupts try
increasing dev.mskc.%d.int_holdoff sysctl variable. It will reduce
number of interrupts with the cost of increased latency.

> Of course, I've thought about enabling polling to reduce CPU load, but
> found, that msk driver doesn't support it. 
> 
> I've some experience with writing Windows drivers, and I've wrote a lot
> of firmware for AVR8 MCUs. 
> 
> Can someone give me a starting point, I want to make a patch to msk
> driver to enable support of polling? 
> 

I don't think NAS server requires polling(4) since polling(4) is
for very specific workload.  If you really want to implement
polling(4) for msk(4), see polling-enabled simple drivers like rl(4). 
Probably you may have to extract most of interrupt handler and add
some glue code for callback and ioctls.  There is no publicly
available data sheet for Yukon II but I guess you can easily get
register information relevant to interrupt control from msk(4).

Good luck!


More information about the freebsd-drivers mailing list