Discovering "onboard" NIC

I have the pleasure of writing a LAN assignment routine that must work on
several motherboards. My executable finds all of the PCI network cards and
builds a script that will start the correct network driver and assign a
specific logical lan number to each card (chipset). It is a bit like
nettrap with some extra knowledge.

My problem is identifying a chipset that is located on the motherboard.

Sometimes it is easy to spot these devices, the PCI BIOS reports a device on
bus 0, slot 0, etc. But I have also seen a motherboard report the onboard
chipset as bus 2, device 2, slot 7. This motherboard only has 6 slots, so
it is easy for me to know that slot 7 is a “pseudo” slot in motherboard.

The problem I need to solve is how to discover this in code.

Anyone out there up on the PCI BIOS? I have a PCI BIOS 2.1 spec. but it is
not helpful with this problem. I suspect that there a some type of map or
identification method that would help me map the cards/chipsets.

Phil Wilson