[vbox-dev] DevE1000.cpp and Linux Driver
Sylvia Else
sylviaw79 at cryogenic.net
Thu Mar 22 03:45:21 UTC 2018
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.
More information about the vbox-dev
mailing list