diff options
author | Michael Brown <mcb30@etherboot.org> | 2006-06-08 15:18:27 +0000 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2006-06-08 15:18:27 +0000 |
commit | 1697c78848c4811aef8b394262c64d6eae335911 (patch) | |
tree | 312168c572540aefc101be41c326f992f842f348 /src/drivers/net/legacy.c | |
parent | fdf62528ca46f6e7e9bc75207e8c49f60e510c07 (diff) | |
download | ipxe-1697c78848c4811aef8b394262c64d6eae335911.tar.gz |
Legacy drivers cannot cope with multiple active devices.
Diffstat (limited to 'src/drivers/net/legacy.c')
-rw-r--r-- | src/drivers/net/legacy.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/drivers/net/legacy.c b/src/drivers/net/legacy.c index 96b3bcbc..a2533b76 100644 --- a/src/drivers/net/legacy.c +++ b/src/drivers/net/legacy.c @@ -18,6 +18,8 @@ struct nic nic; +static int legacy_registered = 0; + static int legacy_transmit ( struct net_device *netdev, struct pk_buff *pkb ) { struct nic *nic = netdev->priv; struct ethhdr *ethhdr = pkb->data; @@ -58,6 +60,9 @@ int legacy_probe ( struct pci_device *pci, void ( * disable ) ( struct nic *nic ) ) { struct net_device *netdev; int rc; + + if ( legacy_registered ) + return -EBUSY; netdev = alloc_etherdev ( 0 ); if ( ! netdev ) @@ -84,6 +89,7 @@ int legacy_probe ( struct pci_device *pci, /* Do not remove this message */ printf ( "WARNING: Using legacy NIC wrapper\n" ); + legacy_registered = 1; return 0; } @@ -95,6 +101,7 @@ void legacy_remove ( struct pci_device *pci, unregister_netdev ( netdev ); disable ( nic ); free_netdev ( netdev ); + legacy_registered = 0; } void pci_fill_nic ( struct nic *nic, struct pci_device *pci ) { |