#
DRIVERS_rpi += smsc95xx lan78xx
-# Virtualised NIC drivers with hypervisor-specific bus types
-#
-DRIVERS_vmbus_net += netvsc
-DRIVERS_xenbus_net += netfront
-
###############################################################################
#
# Drag in the bulk of the build system
# Include SNP and MNP drivers in the all-drivers build
#
-DRIVERS_efi_net += snp mnp
DRIVERS_ipxe += $(DRIVERS_efi_net)
# Rules for building EFI files
# Source directories
#
SRCDIRS += drivers/linux
+SRCDIRS += drivers/net/linux
SRCDIRS += interface/linux
NON_AUTO_SRCS += interface/linux/linux_api.c
# Include Linux-specific drivers in all-drivers build
#
-DRIVERS_linux_net += af_packet
-DRIVERS_linux_net += slirp
-DRIVERS_linux_net += tap
DRIVERS_ipxe += $(DRIVERS_linux_net)
# Compiler flags for building host API wrapper
# Include Xen and Hyper-V drivers in the all-drivers build
#
-DRIVERS_ipxe += $(DRIVERS_xenbus_net)
+DRIVERS_ipxe += $(DRIVERS_xen_net)
DRIVERS_ipxe += $(DRIVERS_vmbus_net)
# Include Xen and Hyper-V drivers in the all-drivers build
#
-DRIVERS_ipxe += $(DRIVERS_xenbus_net)
+DRIVERS_ipxe += $(DRIVERS_xen_net)
DRIVERS_ipxe += $(DRIVERS_vmbus_net)
.start = mnpnet_start,
.stop = mnpnet_stop,
};
+
+/* Generate build rules */
+EFI_ROM ( "mnp", "Managed Network Protocol NIC" );
/** Drag in MNP driver */
REQUIRING_SYMBOL ( snp_driver );
REQUIRE_SYMBOL ( mnp_driver );
+
+/* Generate build rules */
+EFI_ROM ( "snp", "Simple Network Protocol NIC" );
.probe = af_packet_nic_probe,
.remove = af_packet_nic_remove,
};
+
+/* Generate build rules */
+LINUX_ROM ( "af_packet", "AF_PACKET binding NIC" );
.probe = slirp_probe,
.remove = slirp_remove,
};
+
+/* Generate build rules */
+LINUX_ROM ( "slirp", "libslirp NIC" );
.probe = tap_probe,
.remove = tap_remove,
};
+
+/* Generate build rules */
+LINUX_ROM ( "tap", "Linux TUN/TAP NIC" );
.remove = netfront_remove,
};
+/* Generate build rules */
+XEN_ROM ( "netfront", "Xen netfront virtual NIC" );
+
/******************************************************************************
*
* Emulated PCI device inhibitor
.reset = netvsc_reset,
.remove = netvsc_remove,
};
+
+/* Generate build rules */
+VMBUS_ROM ( "netvsc", "Hyper-V NetVSC RNDIS virtual NIC" );
#define EFI_DRIVER_SNP 04 /**< SNP protocol drivers */
#define EFI_DRIVER_MNP 05 /**< MNP protocol drivers */
+/** Define build rules for an EFI driver */
+#define EFI_ROM( _name, _desc )
+
/**
* Set EFI driver-private data
*
/** Declare a Linux driver */
#define __linux_driver __table_entry(LINUX_DRIVERS, 01)
+/** Define build rules for a Linux driver */
+#define LINUX_ROM( _name, _desc )
+
/**
* Set linux device driver-private data
*
/** Declare a VMBus device driver */
#define __vmbus_driver __table_entry ( VMBUS_DRIVERS, 01 )
+/** Define build rules for a VMBus device driver */
+#define VMBUS_ROM( _name, _desc )
+
/**
* Set VMBus device driver-private data
*
/** Declare a Xen device driver */
#define __xen_driver __table_entry ( XEN_DRIVERS, 01 )
+/** Define build rules for a Xen device driver */
+#define XEN_ROM( _name, _desc )
+
/**
* Set Xen device driver-private data
*
my %RE = (
'parse_driver_class' => qr{ drivers/ (\w+?) / }x,
'parse_family' => qr{^ (?:\./)? (.*) \..+? $}x,
- 'find_rom_line' => qr/^ \s* ( (PCI|ISA|USB|DT)_ROM \s*
+ 'find_rom_line' => qr/^ \s* ( (PCI|ISA|USB|DT|EFI|
+ LINUX|XEN|VMBUS)_ROM \s*
\( \s* (.*?) \s* \) \s* ) [,;]/msx,
'find_secboot' => qr/^ \s* FILE_SECBOOT \s*
\( \s* PERMITTED \s* \) \s* ; \s* $/mx,
return process_isa_rom($state, $rom_decl) if $rom_type eq "ISA";
return process_usb_rom($state, $rom_decl) if $rom_type eq "USB";
return process_dt_rom($state, $rom_decl) if $rom_type eq "DT";
- return;
+ return process_basic_rom($state, $rom_decl);
}
# Extract values from PCI_ROM declaration lines and dispatch to
return 1;
}
+# Extract values from basic ROM declaration lines and dispatch to
+# Makefile rule generator
+sub process_basic_rom {
+ my ($state, $decl) = @_;
+ return unless defined $decl;
+ return unless length $decl;
+ (my $image, $decl) = extract_quoted_string($decl, 'IMAGE');
+ (my $desc, $decl) = extract_quoted_string($decl, 'DESCRIPTION');
+ if ( $image and $desc ) {
+ print_make_rules( $state, $image, $desc );
+ } else {
+ my $macro = (uc $state->{'type'})."_ROM";
+ log_debug("WARNING", "Malformed $macro macro on line $. of $state->{source_file}");
+ }
+ return 1;
+}
+
# Output Makefile rules for the specified ROM declarations
sub print_make_rules {
my ( $state, $image, $desc, $vendor, $device, $dup ) = @_;