summaryrefslogtreecommitdiffstats
path: root/src/net/netdevice.c
diff options
context:
space:
mode:
authorMichael Brown2007-01-10 17:16:05 +0100
committerMichael Brown2007-01-10 17:16:05 +0100
commit1fa5cd0e2b3bd6c85ff4c58594e609ed11bc407d (patch)
tree1cf2bbc1fc418b1fdd0f49715f1b0ad00a41ee6d /src/net/netdevice.c
parentAdd device description fields to struct device. (diff)
downloadipxe-1fa5cd0e2b3bd6c85ff4c58594e609ed11bc407d.tar.gz
ipxe-1fa5cd0e2b3bd6c85ff4c58594e609ed11bc407d.tar.xz
ipxe-1fa5cd0e2b3bd6c85ff4c58594e609ed11bc407d.zip
Add find_pci_netdev()
Diffstat (limited to 'src/net/netdevice.c')
-rw-r--r--src/net/netdevice.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/net/netdevice.c b/src/net/netdevice.c
index d8de81be..be3d1ffe 100644
--- a/src/net/netdevice.c
+++ b/src/net/netdevice.c
@@ -314,6 +314,24 @@ struct net_device * find_netdev ( const char *name ) {
}
/**
+ * Get network device by PCI bus:dev.fn address
+ *
+ * @v busdevfn PCI bus:dev.fn address
+ * @ret netdev Network device, or NULL
+ */
+struct net_device * find_pci_netdev ( unsigned int busdevfn ) {
+ struct net_device *netdev;
+
+ list_for_each_entry ( netdev, &net_devices, list ) {
+ if ( ( netdev->dev->desc.bus_type == BUS_TYPE_PCI ) &&
+ ( netdev->dev->desc.pci.busdevfn == busdevfn ) )
+ return netdev;
+ }
+
+ return NULL;
+}
+
+/**
* Transmit network-layer packet
*
* @v pkb Packet buffer