Nicolas Droux wrote:

On Apr 18, 2007, at 11:38 AM, Garrett D'Amore wrote:

Heavily used depends on what systems you have at hand. hme and eri are _widely_ deployed, and _widely_ used. E.g. all UltraSPARC II/IIi/IIe based systems shipped with either eri or hme. This includes "big" systems like E10k, E6500, etc.

The other "popular" nic is qfe, but that code doesn't live in ON where I can readily access it. (The argument for doing qfe is probably quite compelling, as a lot of qfe NICs were sold, even well after gigabit started to become popular.)

We can probably compile a long list of drivers which are commonly used on the various platforms that have shipped over the years. The vast majority of these drivers are however not even 1Gb/s NICs, and should work fine under the Nemo unification softmac shim, which will bring them under the Nemo framework without porting needed.

Here are the compelling reasons to consider moving some of these legacy drivers to Nemo:

1) these drivers have a lot of cut-n-paste code... e.g. DLPI handling in hme, eri, probably contribute over 5K lines _each_. Most of that code is also duplicated in both GLDv2 and in nemo. More lines of code == more chances for bugs == more support headaches.

2) nemo-ification automatically gets quite a bit of "free" performance in fewer CPU cycles used (direct function calls, etc.)

3) it gets us one step closer to being able to eliminate legacy APIs... possibly making the _frameworks_ simpler. (For example, some Consolidation Private and Contracted Private interfaces for things like HW checksum offload, DLPI fastpath, etc. can pretty much get eradicated once the last Sun consumers of them go away.)

4) centralizing functionality for stuff like DLPI handling means reduces long term support costs for drivers like eri, hme, etc.

5) unifies administrative tasks... e.g. these drivers can adopt things like Brussels, will "just work" with dladm (they don't today!) etc.

6) ultimately leading us one step closer towards nixing "ndd" (see point #3 above, again) (Also removing duplicated kstat and ndd code in _these_ drivers.)

7) paves the way for these drivers to support additional crossbow features like Multiple Unicast Address support, interrupt blanking (which may or may not be useful with 100Mb links... but imagine an older system like an E450 with a few dozen 100Mbit links on it...)

8) as another item on #2, nemoification gets free multi-data-transmit (and receive!), yielding better performance as well.

9) ultimately, also eradicating special case code in places like SunVTS and other test suites, that have special cases for devices like hme, gem, etc. (e.g. using custom ioctls to set loopback modes.)

10) making these drivers DLPI style 1, bringing us much closer to removing the long standing DLPI style 2 "bug".

Finally, for most of these legacy drivers, the effort to convert is quite small. On the order of a man day. Seriously. With all these benefits at such a low cost, why _wouldn't_ we do it?

Historically the complaint was that GLDv2 wouldn't support everything these drivers wanted, or couldn't keep up in terms of performance (that was an outright lie, as my analysis some 4 years ago showed). With nemo, this is the way to go.

   -- Garrett

Nicolas.

--Nicolas Droux - Solaris Networking - Sun Microsystems, Inc.
[EMAIL PROTECTED] - http://blogs.sun.com/droux



_______________________________________________
crossbow-discuss mailing list
[EMAIL PROTECTED]
http://opensolaris.org/mailman/listinfo/crossbow-discuss

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to