On Sat, 2009-01-10 at 12:18 -0600, Anthony Liguori wrote: > Ideally, you'd have an area of guest memory sized by the guest (so there > was no intrinsic limit on table size) that was given to the host to use > as the filter tables. The only way this works with virtio is if you > send this over a virtqueue in the form of messages. You could write a > pfn to the config space but then you lose all the mapping/unmapping > abstraction that virtqueue gives you (even though we don't do anything > useful with that abstraction today :-)).
Hmm, that's not quite how I was implementing it. The uc_list and mc_list are stored up in the netdev level, so there's not much point in duplicating it in the guest virtio-net driver. The interface I was working on has two commands. The first tells the host to allocate the MAC filter table for a guest provided number of entries (perhaps a module parameter, with reasonable default). The other is a set command with an sg entry providing a buffer of all the MAC entries for the table. If sg entries are no more than a page, this limits us to ~680 MAC table entries, which I think is far more than any piece of real hardware (and large enough that you'd probably want to turn on promiscuous already). The VLAN equivalent is a bit easier since by definition there are 4k possible VLANs. There I think a set bit/clear bit message interface is appropriate (and maybe a clear all for a reset condition). Let me know if that sounds reasonable. Thanks, Alex -- Alex Williamson HP Open Source & Linux Org. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html