[vbox-dev] DevE1000.cpp and Linux Driver

Sylvia Else sylviaw79 at cryogenic.net
Thu Mar 22 03:45:21 GMT 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