aboutsummaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2020-10-19 14:42:11 +0100
committerMichael Brown <mcb30@ipxe.org>2020-10-19 14:45:49 +0100
commit04cb17de505317db56623b8b4d07b242dec35256 (patch)
treef5dbde17ed38df51f3c47c173c2466a42c0dd9a4 /src/net
parent2d49ce6f08002d9e92c2ba819c65a8b093e975f4 (diff)
downloadipxe-04cb17de505317db56623b8b4d07b242dec35256.tar.gz
[aoe] Allow AoE device to be described using an EFI device path
There is no standard defined for AoE device paths in the UEFI specification, and it seems unlikely that any standard will be adopted in future. Choose to construct an AoE device path using a concatenation of the network device path and a SATA device path, treating the AoE major and minor numbers as the HBA port number and port multiplier port number respectively. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net')
-rw-r--r--src/net/aoe.c31
1 files changed, 2 insertions, 29 deletions
diff --git a/src/net/aoe.c b/src/net/aoe.c
index 3a6611d04..e785e8979 100644
--- a/src/net/aoe.c
+++ b/src/net/aoe.c
@@ -42,6 +42,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/open.h>
#include <ipxe/ata.h>
#include <ipxe/device.h>
+#include <ipxe/efi/efi_path.h>
#include <ipxe/aoe.h>
/** @file
@@ -68,35 +69,6 @@ static LIST_HEAD ( aoe_devices );
/** List of active AoE commands */
static LIST_HEAD ( aoe_commands );
-/** An AoE device */
-struct aoe_device {
- /** Reference counter */
- struct refcnt refcnt;
-
- /** Network device */
- struct net_device *netdev;
- /** ATA command issuing interface */
- struct interface ata;
-
- /** Major number */
- uint16_t major;
- /** Minor number */
- uint8_t minor;
- /** Target MAC address */
- uint8_t target[MAX_LL_ADDR_LEN];
-
- /** Saved timeout value */
- unsigned long timeout;
-
- /** Configuration command interface */
- struct interface config;
- /** Device is configued */
- int configured;
-
- /** ACPI descriptor */
- struct acpi_descriptor desc;
-};
-
/** An AoE command */
struct aoe_command {
/** Reference count */
@@ -811,6 +783,7 @@ static struct interface_operation aoedev_ata_op[] = {
INTF_OP ( acpi_describe, struct aoe_device *, aoedev_describe ),
INTF_OP ( identify_device, struct aoe_device *,
aoedev_identify_device ),
+ EFI_INTF_OP ( efi_describe, struct aoe_device *, efi_aoe_path ),
};
/** AoE device ATA interface descriptor */