On 4/28/10 6:32 AM, "Arnd Bergmann" <arnd@arndb.de> wrote:
The code is correct. I probably confused you with earlier patches trying to
accommodate master/slave devices and you might have assumed enic was such a
device. But it's not. For enic, there are two device IDs, let's call one
"static" and the other "dynamic". The only difference between the two is
static enics load up fully ready to go just like a normal nic, whereas
dynamic enics load up but can't yet pass traffic because they're not
"plugged in" to the network. To plug them in, you need to associate a
port-profile. The physical analogy is this: server admin tells network
admin: plug my nic into a switch port with these characteristics. Here, the
port-profile describes those switch port characteristics. Now, there is no
master/slave relationship between static and dynamic enics. There could be
with a simple firmware update, but it's not there today. Also, I want to
point out that a single phys Cisco nic can be provisioned to expose many
static and/or many dynamic enics to the host. On the order of 100s. The
code above is to block port-profile association on static enics. Static
enics where already provisioned on the network when created so there is no
need for a port-profile push from the host.
For port-profile, we want to pass the device that is to be "plugged-in" to
the network based on port-profile association. This is the device that
gives basic connectivity to the guest interface, regardless of how the guest
interface is wired to the device. It could be direct PCI pass-thru, macvtap
stack, some yet-to-be-invented kernel-bypass stack, etc.
That's not a limitation of our device/switch.
-scott
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html