]> git.proxmox.com Git - grub2.git/commit
efinet: skip virtual IPv4 and IPv6 devices when enumerating cards
authorAndrei Borzenkov <arvidjaar@gmail.com>
Thu, 7 May 2015 17:37:17 +0000 (20:37 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Thu, 7 May 2015 17:37:17 +0000 (20:37 +0300)
commitc52ae40570c3bfbcca22d2195f5e6b31009d8a3f
treead11f8d184cb2ab83f7271da2022a48cd21051e8
parent7b386b703154c0901c4616badf18ddb260954bc1
efinet: skip virtual IPv4 and IPv6 devices when enumerating cards

EDK2 PXE driver creates two child devices - IPv4 and IPv6 - with
bound SNP instance. This means we get three cards for every physical
adapter when enumerating. Not only is this confusing, this may result
in grub ignoring packets that come in via the "wrong" card.

Example of device hierarchy is

 Ctrl[91] PciRoot(0x0)/Pci(0x3,0x0)
   Ctrl[95] PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)
     Ctrl[B4] PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/IPv4(0.0.0.0)
     Ctrl[BC] PciRoot(0x0)/Pci(0x3,0x0)/MAC(525400123456,0x1)/IPv6(0000:0000:0000:0000:0000:0000:0000:0000)

Skip PXE created virtual devices when enumerating cards. Make sure to
find real card when applying initial autoconfiguration during PXE boot,
this information is associated with one of child devices.
grub-core/net/drivers/efi/efinet.c