From e7a7e480364a9ce71283745386a3316ae9843b27 Mon Sep 17 00:00:00 2001 From: jljusten Date: Wed, 15 May 2013 18:21:08 +0000 Subject: OvmfPkg: QemuBootOrder: recognize Ethernet OFW device paths Tested with the e1000, ne2k_pci, pcnet, rtl8139, and virtio iPXE UEFI oprom drivers distributed with qemu-1.5.0-rc1. Also tested with Intel's e1000 driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Jordan Justen git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14367 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'OvmfPkg/Library') diff --git a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c index d2d60c389f..9f94e2424a 100644 --- a/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c +++ b/OvmfPkg/Library/PlatformBdsLib/QemuBootOrder.c @@ -677,6 +677,35 @@ TranslateOfwNodes ( TargetLun[0], TargetLun[1] ); + } else if (NumNodes >= 3 && + SubstringEq (OfwNode[1].DriverName, "ethernet") && + SubstringEq (OfwNode[2].DriverName, "ethernet-phy") + ) { + // + // OpenFirmware device path (Ethernet NIC): + // + // /pci@i0cf8/ethernet@3[,2]/ethernet-phy@0 + // ^ ^ ^ + // | | fixed + // | PCI slot[, function] holding Ethernet card + // PCI root at system bus port, PIO + // + // UEFI device path prefix (dependent on presence of nonzero PCI function): + // + // PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400E15EEF,0x1) + // PciRoot(0x0)/Pci(0x3,0x2)/MAC(525400E15EEF,0x1) + // ^ ^ + // MAC address IfType (1 == Ethernet) + // + // (Some UEFI NIC drivers don't set 0x1 for IfType.) + // + Written = UnicodeSPrintAsciiFormat ( + Translated, + *TranslatedSize * sizeof (*Translated), // BufferSize in bytes + "PciRoot(0x0)/Pci(0x%x,0x%x)/MAC", + PciDevFun[0], + PciDevFun[1] + ); } else { return RETURN_UNSUPPORTED; } -- cgit v1.2.3