Fix issue preventing network adapter detection with multiple adapters

This commit is contained in:
tinkeros 2023-01-05 20:42:57 -06:00
parent b14b485716
commit 025cc946d4
2 changed files with 17 additions and 24 deletions

View file

@ -24,32 +24,23 @@ U0 NetDriverInit()
CPCIDev *net_driver_pci = PCIDevFind(PCIC_NETWORK);
Bool found = FALSE;
switch (net_driver_pci->vendor_id)
if (net_driver_pci)
{
case PCIV_PCNET:
switch (net_driver_pci->device_id)
{
case PCID_PCNET:
NetDriverInclude("PCNet");
found = TRUE;
break;
}
break;
case PCIV_E1000:
switch (net_driver_pci->device_id)
{
case PCID_82545EM:
NetDriverInclude("E1000");
found = TRUE;
break;
}
break;
case PCIV_VIRTIO:
if (net_driver_pci=PCIDevFind(, , PCIV_PCNET, PCID_PCNET))
{
NetDriverInclude("PCNet");
found = TRUE;
}
else if (net_driver_pci=PCIDevFind(, , PCIV_E1000, PCID_82545EM))
{
NetDriverInclude("E1000");
found = TRUE;
}
else if (net_driver_pci=PCIDevFind(PCIC_NETWORK, , PCIV_VIRTIO, ))
{
NetDriverInclude("VirtIONet");
found = TRUE;
break;
}
}
if (!found)

View file

@ -55,7 +55,7 @@ lud_done:
public CPCIDev *PCIDevFind(U16 class_code=NULL, U16 sub_code=NULL,
U16 vendor_id=NULL, U16 device_id=NULL,
U8 _bus=0xFF, U8 _dev=0xFF, U8 _fun=0xFF)
{//return first device with matching class & subcode, vendor & device id, or a specific device.
{//return first device with matching class & subcode, vendor & device id, class & device id, class & vendor id or a specific device.
PCILookUpDevs;
CPCIDev *p = dev.pci_head.next;
@ -63,6 +63,8 @@ public CPCIDev *PCIDevFind(U16 class_code=NULL, U16 sub_code=NULL,
{
if (p->vendor_id == vendor_id && p->device_id == device_id ||
p->class_code == class_code && p->sub_code == sub_code ||
p->class_code == class_code && p->device_id == device_id && vendor_id == NULL ||
p->class_code == class_code && p->vendor_id == vendor_id && device_id == NULL ||
p->bus == _bus && p->dev == _dev && p->fun == _fun)
return p;