On Mon, 4 Jan 2016, Claudio Jeker wrote: > On Sat, Jan 02, 2016 at 04:04:33PM +0100, Mark Kettenis wrote: > > > Date: Sat, 2 Jan 2016 10:57:41 +0100 > > > From: Martin Pieuchot <m...@openbsd.org> > > > > > > If it's acceptable performance-wise to do the check unconditionally I > > > believe that's the way to go. If not I'm a bit afraid of introducing > > > a flag/capability for a single driver. Do you know if any other driver > > > could use it? > > > > I suppose any paravirtualized network driver would need this; i.e. my > > sun4v vnet(4) driver and the xen stuff mikeb@ is working on. > >
That really depends on the device. Not all need to have the same weird semantics as virtio. But I wouldn't rule it out, either. > Shouldn't all these interfaces have the PROMISC flag set all the time > instead? They seem to be always promiscous since they don't have a HW mac > address filter. Doing that would solve the problem in a simple way > (special ioctl handling per driver). No, it's not the same as always promiscous. The virtio specification says "there is a filter, but unwanted packets may still arrive". The reliability of the HW mac address filter depends on the implementation. Some have a reliable filter (e.g. the one in qemu), some rely on the software bridge (e.g. the vhost-net implementation in the linux kernel). In order to reliably get all packets, the driver has to explicitly tell the device to switch PROMISC mode on.