[prev in list] [next in list] [prev in thread] [next in thread] 

List:       opensolaris-driver-discuss
Subject:    [driver-discuss] Crossbow heads-up to device driver writers
From:       Nicolas Droux <Nicolas.Droux () Sun ! COM>
Date:       2008-12-05 21:16:07
Message-ID: 031F3402-46D4-4A56-AE43-DE732AA55341 () Sun ! COM
[Download RAW message or body]

As you may already know, the Crossbow project just integrated in  
Nevada build 105. Crossbow provides major features such as MAC  
virtualization (virtual switching, virtual NICs),  traffic flows,  
resource control, better observability, and significant performance  
gains. More more information about Crossbow, see:

http://opensolaris.org/os/project/crossbow

In order to provide these enhancements, the Crossbow project made  
changes to the GLDv3 driver interface which was originally introduced  
as part of Project Nemo. We did not originally commit these GLDv3  
interfaces in anticipation of these changes. Now that Crossbow is in  
the ON gate, we will start the work needed to make GLDv3 a committed  
interface for 3rd parties' use. This is one of the top item on our  
priority list.

At this point all the GLDv3 network device drivers already in ON have  
been updated to comply to the GLDv3 changes made by Crossbow. We know  
that several 3rd parties have been experimenting with GLDv3. We really  
appreciate the device driver writers out there who started to port  
their drivers to GLDv3 and giving us feedback on the APIs. If you are  
one of these developers, you have to update and recompile your GLDv3  
driver in order to use it on Nevada build 105 and later. Note again  
that this does not apply to drivers that are already in the ON  
consolidation, since those have been already updated as part of the  
Crossbow project.

If you already have a GLDv3 driver, it should be straightforward to  
port to this updated interface. The main changes made to the driver  
API are the following:

- New MAC_CAPAB_RINGS capability: used by drivers to advertise receive  
and transmit rings, polling entry point for receive rings, and  
transmit entry points for transmit rings. This allows for dynamic host- 
driven polling for more efficient receive processing, host-based  
transmit fanout for better scalability, and hardware classification  
for efficient virtualization. This new capability replaces the  
previous blanking capability.

- The multiple MAC address support has been split between two  
capabilities: additional factory MAC address values are exposed via a  
new  MAC_CAPAB_MULTIFACTADDR capability, multiple unicast MAC address  
slots are programmed via the new MAC_CAPAB_RINGS capability (see above)

- Other minor changes have been made to the signature of other entry  
points of the API.

Note again that the GLDv3 driver API is still not a committed  
interface. Minor changes will still be made to the API as we ramp up  
our efforts to make it a committed interface. We don't anticipate  
these changes to be major, and we will do our best to give a heads-up  
to the OpenSolaris community when making incompatible changes to the  
API as part of this effort.

As part of making GLDv3 a committed interface, we will gradually write  
more documentation (reference guide, man pages, porting guide, sample  
code, etc) to help device driver writers. These documents will be  
posted on opensolaris.org as they become available.

For the 3rd party device driver writers who have already experimented  
with GLDv3 and want to port their drivers, you can look at the drivers  
in ON (for example ixgbe) which have been already ported to the latest  
API. Diffs of the changes made to the drivers by the Crossbow project  
can be seen in the following webrev:

http://cr.opensolaris.org/~ndroux/crossbow/webrev-103.2

The updated driver sources are also now in the ON consolidation  
starting with build 105.

We hope that this information will help the device driver writers out  
there who want to experiment with the latest OpenSolaris networking  
features. We're looking forward to receiving your feedback.

Also, if you are using the GLDv3 driver interface from your driver  
please let us know (or send me private email). We're planning to  
create a separate alias for GLDv3 driver API related discussions,  
announcements, etc, and we can directly add you to the alias once it's  
created.

If you have any questions or comments please drop us a note at crossbow-discuss@opensolaris.org

Thanks,
Nicolas.

-- 
Nicolas Droux - Solaris Kernel Networking - Sun Microsystems, Inc.
nicolas.droux@sun.com - http://blogs.sun.com/droux

_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic