Hi, I maintain a gldv3 driver for a 10GbE. I am trying to make it support network virtualization. Though this 10GbE hardware does support multiple TX/RX rings, multiple MAC addresses & VLAN tags and PCI-X interrupt, it has very limited rx packet steering capabilities: only based on VLAN tag match, MAC address match, multicast address match, RSS match. When such a (VLAN tag, MAC addr etc) match happens, the packet is steered to a predefined ring, all other packets go to default ring. It does not check IP addresses, protocols and ports. So, for this hardware, how do I expose its ring capabilites? Is the NIC Level 1 VIRT capable only, not Level 2? I am still very confused on Rx ring groups. What is the criteria to group rings? Does the hardware must support ring group? Do I need ring group for this 10GbE? Tom -- This message posted from opensolaris.org
Nicolas Droux
2009-Jan-29 18:58 UTC
[crossbow-discuss] questions on crossbow ring capabilities
Tom, On Jan 26, 2009, at 10:05 AM, Tom Chen wrote:> Hi, > > I maintain a gldv3 driver for a 10GbE. I am trying to make it > support network virtualization. > > Though this 10GbE hardware does support multiple TX/RX rings, > multiple MAC addresses & VLAN tags and PCI-X interrupt, it has very > limited rx packet steering capabilities: only based on VLAN tag > match, MAC address match, multicast address match, RSS match. When > such a (VLAN tag, MAC addr etc) match happens, the packet is steered > to a predefined ring, all other packets go to default ring. It does > not check IP addresses, protocols and ports. > > So, for this hardware, how do I expose its ring capabilites? Is the > NIC Level 1 VIRT capable only, not Level 2?From your description it seems your device maps to MAC_VIRT_LEVEL1. Traffic is demultiplexed to multiple groups depending on L2 MAC addresses, and one or more MAC addresses can be assigned to each group. The MAC layer will invoke the addmac/remmac entry points of the driver to associate MAC addresses with groups. Within each group, the device can then have one or more hardware rings. If the hardware has multiple rings per group, then the hardware is expected to fanout the traffic to the rings of a group (RSS). Currently our interface doesn''t allow VLAN tags to be directly associated with hardware groups, so we do VLAN demultiplexing in software in mac. Enabling VLAN hardware classification is on the list of improvements that we want to make to the driver API. Nicolas. PS: BTW keep in mind that the GLDv3 driver API is still not a committed interface, and we may still make incompatible changes to the API until we make it a committed interface.> > > I am still very confused on Rx ring groups. What is the criteria to > group rings? Does the hardware must support ring group? Do I need > ring group for this 10GbE? > > Tom > -- > This message posted from opensolaris.org > _______________________________________________ > crossbow-discuss mailing list > crossbow-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/crossbow-discuss-- Nicolas Droux - Solaris Kernel Networking - Sun Microsystems, Inc. droux at sun.com - http://blogs.sun.com/droux
Sunay Tripathi
2009-Feb-06 05:40 UTC
[crossbow-discuss] questions on crossbow ring capabilities
Tom, Based on what you describe, you should use Level 1 VIRT. Basically we can create H/W Rx rings based VNICs with a MAC address or VLAN tag. The Rx ring group is used when you assign all Rx rings (more than one) to the same MAC address and the NIC can spread traffic within the assigned rings based on some hashing scheme. If not, then we can use only one Rx ring per VNIC or for primary NIC and you can advertize multiple groups with 1 Rx ring each (static). Cheers, Sunay -- This message posted from opensolaris.org