Add find_pci_netdev()
authorMichael Brown <mcb30@etherboot.org>
Wed, 10 Jan 2007 16:16:05 +0000 (16:16 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 10 Jan 2007 16:16:05 +0000 (16:16 +0000)
src/include/gpxe/netdevice.h
src/net/netdevice.c

index b029d16..f9d507b 100644 (file)
@@ -264,6 +264,8 @@ extern void netdev_close ( struct net_device *netdev );
 extern void unregister_netdev ( struct net_device *netdev );
 extern void free_netdev ( struct net_device *netdev );
 struct net_device * find_netdev ( const char *name );
+struct net_device * find_pci_netdev ( unsigned int busdevfn );
+
 extern int net_tx ( struct pk_buff *pkb, struct net_device *netdev,
                    struct net_protocol *net_protocol, const void *ll_dest );
 extern int net_rx ( struct pk_buff *pkb, struct net_device *netdev,
index d8de81b..be3d1ff 100644 (file)
@@ -313,6 +313,24 @@ struct net_device * find_netdev ( const char *name ) {
        return NULL;
 }
 
+/**
+ * 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
  *