aboutsummaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2023-09-13 16:29:59 +0100
committerMichael Brown <mcb30@ipxe.org>2023-09-13 20:23:46 +0100
commitae4e85bde97c9b216736a5087039f3309a628d24 (patch)
tree39d706e2f330bd015d11ce38193c1baeab207cc8 /src/arch
parenteeb7cd56e54e2bc649626988872c170fba37c163 (diff)
downloadipxe-ae4e85bde97c9b216736a5087039f3309a628d24.tar.gz
[netdevice] Allocate private data for each network upper-layer driver
Allow network upper-layer drivers (such as LLDP, which attaches to each network device in order to provide a corresponding LLDP settings block) to specify a size for private data, which will be allocated as part of the network device structure (as with the existing private data allocated for the underlying device driver). This will allow network upper-layer drivers to be simplified by omitting memory allocation and freeing code. If the upper-layer driver requires a reference counter (e.g. for interface initialisation), then it may use the network device's existing reference counter, since this is now the reference counter for the containing block of memory. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/interface/pxe/pxe_call.c3
-rw-r--r--src/arch/x86/interface/vmware/guestinfo.c8
2 files changed, 8 insertions, 3 deletions
diff --git a/src/arch/x86/interface/pxe/pxe_call.c b/src/arch/x86/interface/pxe/pxe_call.c
index 671182991..0e8d5c5a8 100644
--- a/src/arch/x86/interface/pxe/pxe_call.c
+++ b/src/arch/x86/interface/pxe/pxe_call.c
@@ -375,9 +375,10 @@ int pxe_start_nbp ( void ) {
* Notify BIOS of existence of network device
*
* @v netdev Network device
+ * @v priv Private data
* @ret rc Return status code
*/
-static int pxe_notify ( struct net_device *netdev ) {
+static int pxe_notify ( struct net_device *netdev, void *priv __unused ) {
/* Do nothing if we already have a network device */
if ( pxe_netdev )
diff --git a/src/arch/x86/interface/vmware/guestinfo.c b/src/arch/x86/interface/vmware/guestinfo.c
index a0530c8d1..b52c2e87b 100644
--- a/src/arch/x86/interface/vmware/guestinfo.c
+++ b/src/arch/x86/interface/vmware/guestinfo.c
@@ -207,9 +207,11 @@ struct init_fn guestinfo_init_fn __init_fn ( INIT_NORMAL ) = {
* Create per-netdevice GuestInfo settings
*
* @v netdev Network device
+ * @v priv Private data
* @ret rc Return status code
*/
-static int guestinfo_net_probe ( struct net_device *netdev ) {
+static int guestinfo_net_probe ( struct net_device *netdev,
+ void *priv __unused ) {
struct settings *settings;
int rc;
@@ -247,8 +249,10 @@ static int guestinfo_net_probe ( struct net_device *netdev ) {
* Remove per-netdevice GuestInfo settings
*
* @v netdev Network device
+ * @v priv Private data
*/
-static void guestinfo_net_remove ( struct net_device *netdev ) {
+static void guestinfo_net_remove ( struct net_device *netdev,
+ void *priv __unused ) {
struct settings *parent = netdev_settings ( netdev );
struct settings *settings;