summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/pnic.c
diff options
context:
space:
mode:
authorMichael Brown2006-04-24 20:44:50 +0200
committerMichael Brown2006-04-24 20:44:50 +0200
commitfcf765e42df4e3af24cf3e7924461c0aa3190e2c (patch)
treee8d5b1eb698af0de2c1318a235073fae334a9719 /src/drivers/net/pnic.c
parentgcc is rather over-aggressive about optimising out static data structures (diff)
downloadipxe-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/net/pnic.c')
-rw-r--r--src/drivers/net/pnic.c16
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 );