diff options
author | Michael Brown | 2006-04-24 20:44:50 +0200 |
---|---|---|
committer | Michael Brown | 2006-04-24 20:44:50 +0200 |
commit | fcf765e42df4e3af24cf3e7924461c0aa3190e2c (patch) | |
tree | e8d5b1eb698af0de2c1318a235073fae334a9719 /src/drivers | |
parent | gcc is rather over-aggressive about optimising out static data structures (diff) | |
download | ipxe-fcf765e42df4e3af24cf3e7924461c0aa3190e2c.tar.gz ipxe-fcf765e42df4e3af24cf3e7924461c0aa3190e2c.tar.xz ipxe-fcf765e42df4e3af24cf3e7924461c0aa3190e2c.zip |
Add missing {register,free}_netdev().
Tie into existing driver API; we'll fix that up soon.
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/net/pnic.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/drivers/net/pnic.c b/src/drivers/net/pnic.c index 243235a4..d21db6e2 100644 --- a/src/drivers/net/pnic.c +++ b/src/drivers/net/pnic.c @@ -191,6 +191,7 @@ static void pnic_remove ( struct pci_device *pci ) { unregister_netdev ( netdev ); pnic_command ( pnic, PNIC_CMD_RESET, NULL, 0, NULL, 0, NULL ); + free_netdev ( netdev ); } /************************************************************************** @@ -233,6 +234,10 @@ static int pnic_probe ( struct pci_device *pci ) { netdev->poll = pnic_poll; netdev->transmit = pnic_transmit; + /* Register network device */ + if ( ( rc = register_netdev ( netdev ) ) != 0 ) + goto err; + return 0; err: @@ -256,8 +261,17 @@ static struct pci_driver pnic_driver = { // PCI_DRIVER ( pnic_driver ); + +static int pnic_hack_probe ( void *dummy, struct pci_device *pci ) { + return ( pnic_probe ( pci ) == 0 ); +} + +static void pnic_hack_disable ( void *dummy, struct pci_device *pci ) { + pnic_remove ( pci ); +} + #include "dev.h" extern struct type_driver test_driver; DRIVER ( "PNIC", test_driver, pci_driver, pnic_driver, - pnic_probe, pnic_remove ); + pnic_hack_probe, pnic_hack_disable ); |