summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/core/cachedhcp.c22
-rw-r--r--src/arch/i386/interface/vmware/guestinfo.c10
-rw-r--r--src/net/ipv6.c11
-rw-r--r--src/net/neighbour.c11
-rw-r--r--src/net/netdevice.c20
-rw-r--r--src/net/vlan.c11
6 files changed, 13 insertions, 72 deletions
diff --git a/src/arch/i386/core/cachedhcp.c b/src/arch/i386/core/cachedhcp.c
index 9ebde3e8c..b967e9b98 100644
--- a/src/arch/i386/core/cachedhcp.c
+++ b/src/arch/i386/core/cachedhcp.c
@@ -159,30 +159,8 @@ static int cachedhcp_probe ( struct net_device *netdev ) {
return 0;
}
-/**
- * Handle network device link state change
- *
- * @v netdev Network device
- */
-static void cachedhcp_notify ( struct net_device *netdev __unused ) {
-
- /* Nothing to do */
-}
-
-/**
- * Handle network device removal
- *
- * @v netdev Network device
- */
-static void cachedhcp_remove ( struct net_device *netdev __unused ) {
-
- /* Nothing to do */
-}
-
/** Cached DHCP packet network device driver */
struct net_driver cachedhcp_driver __net_driver = {
.name = "cachedhcp",
.probe = cachedhcp_probe,
- .notify = cachedhcp_notify,
- .remove = cachedhcp_remove,
};
diff --git a/src/arch/i386/interface/vmware/guestinfo.c b/src/arch/i386/interface/vmware/guestinfo.c
index 7fa41b86b..aa10fc015 100644
--- a/src/arch/i386/interface/vmware/guestinfo.c
+++ b/src/arch/i386/interface/vmware/guestinfo.c
@@ -244,15 +244,6 @@ static int guestinfo_net_probe ( struct net_device *netdev ) {
}
/**
- * Handle network device or link state change
- *
- * @v netdev Network device
- */
-static void guestinfo_net_notify ( struct net_device *netdev __unused ) {
- /* Nothing to do */
-}
-
-/**
* Remove per-netdevice GuestInfo settings
*
* @v netdev Network device
@@ -276,6 +267,5 @@ static void guestinfo_net_remove ( struct net_device *netdev ) {
struct net_driver guestinfo_net_driver __net_driver = {
.name = "GuestInfo",
.probe = guestinfo_net_probe,
- .notify = guestinfo_net_notify,
.remove = guestinfo_net_remove,
};
diff --git a/src/net/ipv6.c b/src/net/ipv6.c
index cbd4e3e59..8279f0587 100644
--- a/src/net/ipv6.c
+++ b/src/net/ipv6.c
@@ -944,16 +944,6 @@ static int ipv6_probe ( struct net_device *netdev ) {
}
/**
- * Handle IPv6 network device or link state change
- *
- * @v netdev Network device
- */
-static void ipv6_notify ( struct net_device *netdev __unused ) {
-
- /* Nothing to do */
-}
-
-/**
* Destroy IPv6 network device
*
* @v netdev Network device
@@ -973,7 +963,6 @@ static void ipv6_remove ( struct net_device *netdev ) {
struct net_driver ipv6_driver __net_driver = {
.name = "IPv6",
.probe = ipv6_probe,
- .notify = ipv6_notify,
.remove = ipv6_remove,
};
diff --git a/src/net/neighbour.c b/src/net/neighbour.c
index c175665a0..e3026ce46 100644
--- a/src/net/neighbour.c
+++ b/src/net/neighbour.c
@@ -376,16 +376,6 @@ int neighbour_define ( struct net_device *netdev,
}
/**
- * Update neighbour cache on network device creation
- *
- * @v netdev Network device
- */
-static int neighbour_probe ( struct net_device *netdev __unused ) {
- /* Nothing to do */
- return 0;
-}
-
-/**
* Update neighbour cache on network device state change or removal
*
* @v netdev Network device
@@ -404,7 +394,6 @@ static void neighbour_flush ( struct net_device *netdev ) {
/** Neighbour driver (for net device notifications) */
struct net_driver neighbour_net_driver __net_driver = {
.name = "Neighbour",
- .probe = neighbour_probe,
.notify = neighbour_flush,
.remove = neighbour_flush,
};
diff --git a/src/net/netdevice.c b/src/net/netdevice.c
index c7c86c1a2..fcd1f7cf2 100644
--- a/src/net/netdevice.c
+++ b/src/net/netdevice.c
@@ -90,8 +90,10 @@ static int netdev_has_ll_addr ( struct net_device *netdev ) {
static void netdev_notify ( struct net_device *netdev ) {
struct net_driver *driver;
- for_each_table_entry ( driver, NET_DRIVERS )
- driver->notify ( netdev );
+ for_each_table_entry ( driver, NET_DRIVERS ) {
+ if ( driver->notify )
+ driver->notify ( netdev );
+ }
}
/**
@@ -535,7 +537,7 @@ int register_netdev ( struct net_device *netdev ) {
/* Probe device */
for_each_table_entry ( driver, NET_DRIVERS ) {
- if ( ( rc = driver->probe ( netdev ) ) != 0 ) {
+ if ( driver->probe && ( rc = driver->probe ( netdev ) ) != 0 ) {
DBGC ( netdev, "NETDEV %s could not add %s device: "
"%s\n", netdev->name, driver->name,
strerror ( rc ) );
@@ -546,8 +548,10 @@ int register_netdev ( struct net_device *netdev ) {
return 0;
err_probe:
- for_each_table_entry_continue_reverse ( driver, NET_DRIVERS )
- driver->remove ( netdev );
+ for_each_table_entry_continue_reverse ( driver, NET_DRIVERS ) {
+ if ( driver->remove )
+ driver->remove ( netdev );
+ }
clear_settings ( netdev_settings ( netdev ) );
unregister_settings ( netdev_settings ( netdev ) );
err_register_settings:
@@ -629,8 +633,10 @@ void unregister_netdev ( struct net_device *netdev ) {
netdev_close ( netdev );
/* Remove device */
- for_each_table_entry_reverse ( driver, NET_DRIVERS )
- driver->remove ( netdev );
+ for_each_table_entry_reverse ( driver, NET_DRIVERS ) {
+ if ( driver->remove )
+ driver->remove ( netdev );
+ }
/* Unregister per-netdev configuration settings */
clear_settings ( netdev_settings ( netdev ) );
diff --git a/src/net/vlan.c b/src/net/vlan.c
index 1a2a08622..b4ddde42d 100644
--- a/src/net/vlan.c
+++ b/src/net/vlan.c
@@ -440,16 +440,6 @@ int vlan_destroy ( struct net_device *netdev ) {
}
/**
- * Do nothing
- *
- * @v trunk Trunk network device
- * @ret rc Return status code
- */
-static int vlan_probe ( struct net_device *trunk __unused ) {
- return 0;
-}
-
-/**
* Handle trunk network device link state change
*
* @v trunk Trunk network device
@@ -505,7 +495,6 @@ static void vlan_remove ( struct net_device *trunk ) {
/** VLAN driver */
struct net_driver vlan_driver __net_driver = {
.name = "VLAN",
- .probe = vlan_probe,
.notify = vlan_notify,
.remove = vlan_remove,
};