Opened 4 years ago
Last modified 4 years ago
#20379 new defect
6.1.18 to 6.1.20 Intel pro/1000 changes
Reported by: | AndrewMC | Owned by: | |
---|---|---|---|
Component: | network | Version: | VirtualBox 6.1.20 |
Keywords: | Cc: | ||
Guest type: | other | Host type: | Windows |
Description
Hello,
Current Menuet64 network driver (bridged) for i8254x works fine with VirtualBox 6.1.18, but not anymore with 6.1.20.
I've read from previous tickets that for example the RDT register and interrupts are handled differently in 6.1.20.
So could you provide some (bit-level) details about the RDT register (and possibly other) changes, so I can debug the driver here ?
Thank you.
Change History (5)
comment:1 by , 4 years ago
comment:2 by , 4 years ago
Yes, the driver works with real hardware.
In case the Tx descriptors are rejected, is there a way to see that at runtime messages ?
How do I enable viewing the e1000 runtime logs (E1kLog)?
comment:3 by , 4 years ago
The only log messages which are compiled into release builds are the ones with E1kLogRel, and they end up in VBox.log.
The E1kLog messages (the non-Rel ones) are compiled only for log enabled builds, usually into debug builds. So those need a special build, and also appropriate logging configuration (usually using environment variables) for producing a debug log file.
comment:4 by , 4 years ago
More results
82543GC and real-hw 82541PI: The driver works fine.
82540EM and 82545EM:
Driver works after I disconnect and then reconnect the virtual cable from the network card. Also the driver works after I save, shutdown and then re-start the virtual machine.
PHY isn't modified by the driver.
Should the cable connect/linkup -check be triggered now by software?
comment:5 by , 4 years ago
The driver now works with all three cards!
I added a controller reset (ctrl.rst), which also triggered the cable connect check.
Thank you for the help and VirtualBox!
Does the driver work with a real E1000? Because the changes in 6.1.20 are mostly for more precisely doing what the real silicon does (and what the spec forgets to mention): a small adjustment to the RDT checks (making OS/2 happy again), offering ICS read (VxWorks compatibility relying on behavior which isn't written down anywhere except in their driver source code), keep links down as long as the cable is disconnected and make sure that only packets with valid Tx descriptors are considered. The diff for DevE1000.cpp is quite manageable...
As long as your driver sets the RDT register as described in the spec it will work. OS/2 already is bending the spec (which likely was abstracted several times from what the real silicon does). RDT should be in the range of 0..(ring size - 1) for obvious reasons, and OS/2 exceeds this by 1 already which is now OK.
I can't explain why you had no trouble with 6.1.18 (which had slightly more restrictive RDT checks) and suddenly with 6.1.20.
Changes to RDT related code:
6.1.20: https://www.virtualbox.org/changeset/88372/vbox
https://www.virtualbox.org/changeset/88424/vbox
6.1.18: https://www.virtualbox.org/changeset/87109/vbox
https://www.virtualbox.org/changeset/87111/vbox