Re: [Qemu-devel] [PATCH 3/4] qemu:virtio-net: Add support for qemu_vlan_rxfilter

Paul Brook
2009-02-13T17:04:52Z

> > A simple "Something changed, please try your filter again" callback
> > automatically covers all these cases.
>
> It doesn't, if tap has no memory of how many clients require a filter.

I'm talking about a callback for devices requesting an inbound filter. Devices
implementing outgoing (device->vlan) filters just do as they're told.

> If tap just answers "YES and installs the kernel filter" or "NO and
> doesn't install the kernel filter" and doesn't remember how many
> clients need a filter, then:
>...
> In other words, tap needs to distinguish three states:
>
>      "1 filter requested and installed in the kernel"
>      ">1 filter requested, none installed in the kernel"
>      "0 filters requested, none installed in the kernel"

Absolutely not. This is the reason we have separate the "request an incoming
filter" API from the "provide an outgoing filter" callback. It allows the
vlan code to arbitrate in the middle. A vlan is a bus network, not a set of
point-point connections. I haven't checked whether the proposed patch gets
this right. I suspect it probably doesn't.

This is why the initial patch that had clients talking to each other directly
was completely wrong.

Paul