Hello Peter,
below is the patch used to fix the issue.
Regards,
Alexander Eichner
Index: trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
===================================================================
--- a/trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
+++ b/trunk/src/VBox/Devices/Network/DevVirtioNet.cpp
@@ -53,4 +53,5 @@
#include <VBox/version.h>
#include <VBox/log.h>
+#include <VBox/pci.h>
@@ -210,6 +211,4 @@
#define PCI_DEVICE_ID_VIRTIONET_HOST 0x1000 /**< VirtIO
transitional device ID for network card */
-#define PCI_CLASS_BASE_NETWORK_CONTROLLER 0x0200 /**< PCI
Network device class */
-#define PCI_CLASS_SUB_NET_ETHERNET_CONTROLLER 0x00 /**< PCI NET
Controller subclass */
#define PCI_CLASS_PROG_UNSPECIFIED 0x00 /**< Programming
interface. N/A. */
#define VIRTIONET_PCI_CLASS 0x01 /**< Base class
Mass Storage? */
@@ -3516,6 +3515,6 @@
VIRTIOPCIPARAMS VirtioPciParams;
VirtioPciParams.uDeviceId =
PCI_DEVICE_ID_VIRTIONET_HOST;
- VirtioPciParams.uClassBase =
PCI_CLASS_BASE_NETWORK_CONTROLLER;
- VirtioPciParams.uClassSub =
PCI_CLASS_SUB_NET_ETHERNET_CONTROLLER;
+ VirtioPciParams.uClassBase = VBOX_PCI_CLASS_NETWORK;
+ VirtioPciParams.uClassSub =
VBOX_PCI_SUB_NETWORK_ETHERNET;
VirtioPciParams.uClassProg = PCI_CLASS_PROG_UNSPECIFIED;
VirtioPciParams.uSubsystemId =
DEVICE_PCI_NETWORK_SUBSYSTEM; /* VirtIO 1.0 allows PCI Device ID here */
> On 14.08.2023 18:07, Peter Palúch <[email protected]> wrote:
>
> Hello Alexander,
>
> Many thanks for the information!
>
> If I may ask - can you share more details on how you fixed this issue? Also,
> has your fix been only merged recently? 7.0.10 did not yet contain it.
>
> Best regards,
> Peter
>
> po 14. 8. 2023 o 17:05 Alexander Eichner <[email protected]>
> napísal(a):
> Hi Peter,
>
> Thanks for the patch. We fixed the issue internally, albeit a bit differently.
>
> Regards,
> Alexander Eichner
>
>> On 11.08.2023 23:36, Peter Palúch via vbox-dev <[email protected]>
>> wrote:
>>
>> Greetings,
>>
>> Attaching a patch fixing the bug #21516 (Cisco CSR 1000v and 8000v does not
>> recognize interfaces).
>>
>> It turns out that in src/VBox/Devices/Network/DevVirtioNet.cpp, the macro
>> PCI_CLASS_BASE_NETWORK_CONTROLLER was set to 0x0200 (0x02 =PCI Network
>> Device Class ID, 0x00 = Ethernet subclass). However, this macro is passed to
>> another macro, PDMPciDevSetClassBase, that expects uint8_t as the PCI device
>> class value. This has caused the virtio-net PCI adapter to be reported with
>> the PCI class/subclass 0x0000, confusing some host operating systems.
>>
>> The fix is trivial - set PCI_CLASS_BASE_NETWORK_CONTROLLER to 0x02 instead
>> of 0x0200.
>>
>> Please consider integrating this fix at your earliest convenience.
>>
>> Thank you!
>>
>> Best regards,
>> Peter
>> <virtionet-21516.patch>_______________________________________________
>> vbox-dev mailing list
>> [email protected]
>> https://www.virtualbox.org/mailman/listinfo/vbox-dev
>
_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev