diff options
author | Michael Brown <mcb30@ipxe.org> | 2020-10-23 15:26:30 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2020-10-23 15:34:35 +0100 |
commit | a2e44077cdb0713d90766e61165ca71fce902003 (patch) | |
tree | 36581ed047d0c43fdf6f3fe2e48297fa6d79ff1c /src/include/ipxe | |
parent | bf051a76eef07bb4bd04ad4ff2b8b5e23ef26740 (diff) | |
download | ipxe-a2e44077cdb0713d90766e61165ca71fce902003.zip ipxe-a2e44077cdb0713d90766e61165ca71fce902003.tar.gz ipxe-a2e44077cdb0713d90766e61165ca71fce902003.tar.bz2 |
[infiniband] Allow SRP device to be described using an EFI device path
The UEFI specification provides a partial definition of an Infiniband
device path structure. Use this structure to construct what may be a
plausible path containing at least some of the information required to
identify an SRP target device.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe')
-rw-r--r-- | src/include/ipxe/efi/efi_path.h | 3 | ||||
-rw-r--r-- | src/include/ipxe/ib_srp.h | 35 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/include/ipxe/efi/efi_path.h b/src/include/ipxe/efi/efi_path.h index 91a6c25..76ded72 100644 --- a/src/include/ipxe/efi/efi_path.h +++ b/src/include/ipxe/efi/efi_path.h @@ -18,6 +18,7 @@ struct uri; struct iscsi_session; struct aoe_device; struct fcp_description; +struct ib_srp_device; struct usb_function; extern EFI_DEVICE_PATH_PROTOCOL * @@ -31,6 +32,8 @@ extern EFI_DEVICE_PATH_PROTOCOL * efi_iscsi_path ( struct iscsi_session *iscsi ); extern EFI_DEVICE_PATH_PROTOCOL * efi_aoe_path ( struct aoe_device *aoedev ); extern EFI_DEVICE_PATH_PROTOCOL * efi_fcp_path ( struct fcp_description *desc ); +extern EFI_DEVICE_PATH_PROTOCOL * +efi_ib_srp_path ( struct ib_srp_device *ib_srp ); extern EFI_DEVICE_PATH_PROTOCOL * efi_usb_path ( struct usb_function *func ); extern EFI_DEVICE_PATH_PROTOCOL * efi_describe ( struct interface *interface ); diff --git a/src/include/ipxe/ib_srp.h b/src/include/ipxe/ib_srp.h index ad407b0..4b6df8d 100644 --- a/src/include/ipxe/ib_srp.h +++ b/src/include/ipxe/ib_srp.h @@ -10,6 +10,8 @@ FILE_LICENCE ( BSD2 ); #include <stdint.h> +#include <ipxe/acpi.h> +#include <ipxe/interface.h> #include <ipxe/infiniband.h> #include <ipxe/srp.h> @@ -55,4 +57,37 @@ struct sbft_ib_subtable { uint8_t reserved[6]; } __attribute__ (( packed )); +/** + * An Infiniband SRP sBFT created by iPXE + */ +struct ipxe_ib_sbft { + /** The table header */ + struct sbft_table table; + /** The SCSI subtable */ + struct sbft_scsi_subtable scsi; + /** The SRP subtable */ + struct sbft_srp_subtable srp; + /** The Infiniband subtable */ + struct sbft_ib_subtable ib; +}; + +/** An Infiniband SRP device */ +struct ib_srp_device { + /** Reference count */ + struct refcnt refcnt; + + /** SRP transport interface */ + struct interface srp; + /** CMRC interface */ + struct interface cmrc; + + /** Infiniband device */ + struct ib_device *ibdev; + + /** ACPI descriptor */ + struct acpi_descriptor desc; + /** Boot firmware table parameters */ + struct ipxe_ib_sbft sbft; +}; + #endif /* _IPXE_IB_SRP_H */ |