From 1697c78848c4811aef8b394262c64d6eae335911 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 8 Jun 2006 15:18:27 +0000 Subject: [PATCH] Legacy drivers cannot cope with multiple active devices. --- src/drivers/net/legacy.c | 7 +++++++ 1 file changed, 7 insertions(+) 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 ) {