Re: [PATCH 2/2][RFC] virtio_net: Add MAC fitler table support

Alex Williamson
2009-01-10T18:50:38Z

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.