This module contains the following comment:

/*
 * Some drivers advance RDT too far, so that it equals RDH. This
 * somehow manages to work with real hardware but not with this
 * emulated device. We can work with these drivers if we just
 * write 1 less when we see a driver writing RDT equal to RDH,
 * see @bugref{7346}.
*/

Unfortunately, this interacts badly with the way the Linux driver performs its initialisation, which is to set RDH to zero, then RDT to zero, before enabling receive. This pair of values should indicate that there are no descriptors available to hardware (i.e. to VirtualBox), but the hack described in the comment means that VirtualBox construes it as meaning that there are lots of descriptors available, which results in the interface becoming non-functional in the presence of broadcast packets in bridge mode.

The obvious answer would be to remove the code from VirtualBox, except that it was presumably put there for a reason. It appears that bugref{7346} refers to something other than the public bug tracker, because bug 7346 there seems to be unrelated.

One possible fix would be to apply the hack only when receive is enabled, but without knowing what exactly the hack was intended to address, it's hard to be sure that won't break something.

Sylvia.

_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to