52 path = ( ( (
void * ) path ) +
70 return ( ( (
void * )
end ) - ( (
void * ) path ) );
112 dst = ( ( (
void * ) dst ) +
len );
119 end->Length[0] =
sizeof ( *end );
150 len = ( prefix_len +
sizeof ( *macpath ) +
sizeof ( *vlanpath ) +
160 macpath = ( ( (
void * )
path ) + prefix_len );
170 vlanpath = ( ( (
void * ) macpath ) +
sizeof ( *macpath ) );
175 end = ( ( (
void * ) vlanpath ) +
sizeof ( *vlanpath ) );
177 end = ( ( (
void * ) macpath ) +
sizeof ( *macpath ) );
181 end->Length[0] =
sizeof ( *end );
205 uripath_len = (
sizeof ( *uripath ) + uri_len );
206 len = ( uripath_len +
sizeof ( *end ) );
214 uripath = ( (
void * )
path );
220 end = ( ( (
void * )
path ) + uripath_len );
223 end->Length[0] =
sizeof ( *end );
261 iscsi_len = (
sizeof ( *iscsipath ) + name_len );
262 len = ( prefix_len + iscsi_len +
sizeof ( *end ) );
270 memcpy ( path, netpath, prefix_len );
271 iscsipath = ( ( (
void * ) path ) + prefix_len );
277 name = ( ( (
void * ) iscsipath ) +
sizeof ( *iscsipath ) );
279 end = ( ( (
void * )
name ) + name_len );
282 end->Length[0] =
sizeof ( *end );
316 memset ( &satapath, 0,
sizeof ( satapath ) );
319 satapath.sata.Header.Length[0] =
sizeof ( satapath.sata );
320 satapath.sata.HBAPortNumber = aoedev->
major;
321 satapath.sata.PortMultiplierPortNumber = aoedev->
minor;
324 satapath.end.Length[0] =
sizeof ( satapath.end );
355 path =
zalloc (
sizeof ( *path ) );
362 path->fc.Header.Length[0] =
sizeof ( path->fc );
363 memcpy ( path->fc.WWN, &desc->
wwn, sizeof ( path->fc.WWN ) );
364 memcpy ( path->fc.Lun, &desc->
lun, sizeof ( path->fc.Lun ) );
367 path->end.Length[0] =
sizeof ( path->end );
369 return &path->fc.Header;
397 len = ( prefix_len +
sizeof ( *ibpath ) +
sizeof ( *end ) );
406 ibpath = ( ( (
void * )
path ) + prefix_len );
418 end = ( ( (
void * ) ibpath ) +
sizeof ( *ibpath ) );
421 end->Length[0] =
sizeof ( *end );
456 len = ( prefix_len + (
count *
sizeof ( *usbpath ) ) +
466 end = ( ( (
void * )
path ) +
len -
sizeof ( *end ) );
469 end->Length[0] =
sizeof ( *end );
470 usbpath = ( ( (
void * )
end ) -
sizeof ( *usbpath ) );
472 for ( ; usb ; usbpath--, usb = usb->
port->
hub->
usb ) {
499 path =
op (
object );
#define MSG_FIBRECHANNELEX_DP
Fibre Channel Ex SubType.
union srp_port_id srp
SRP version of port identifier.
struct net_device * tcpip_netdev(struct sockaddr_tcpip *st_dest)
Determine transmitting network device.
#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON
uint8_t ll_addr_len
Link-layer address length.
struct ipxe_ib_sbft sbft
Boot firmware table parameters.
uint8_t interface[0]
List of interface numbers.
#define END_DEVICE_PATH_TYPE
struct sockaddr target_sockaddr
Target socket address (for boot firmware table)
unsigned int count
Number of interfaces.
UINT8 IfType
Network interface type(i.e.
u16 fc
802.11 Frame Control field
#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL
SRP target port identifier for Infiniband.
EFI_MAC_ADDRESS MacAddress
The MAC address for a network interface padded with 0s.
uint16_t major
Major number.
struct device * dev
Underlying device.
union srp_port_id target
Target port identifier.
#define MSG_MAC_ADDR_DP
MAC Address Device Path SubType.
size_t efi_path_len(EFI_DEVICE_PATH_PROTOCOL *path)
Find length of device path (excluding terminator)
EFI_DEVICE_PATH_PROTOCOL Header
EFI_DEVICE_PATH_PROTOCOL Header
union ib_gid dgid
Destination GID.
This protocol can be used on any device handle to obtain generic path/location information concerning...
EFI_DEVICE_PATH_PROTOCOL * efi_uri_path(struct uri *uri)
Construct EFI device path for URI.
UINT16 LoginOption
iSCSI Login Options.
Uniform Resource Identifiers.
#define MESSAGING_DEVICE_PATH
Messaging Device Paths.
UINT32 ResourceFlags
Flags to help identify/manage InfiniBand device path elements: Bit 0 - IOC/Service (0b = IOC,...
struct fc_name wwn
Fibre Channel WWN.
void * intf_object(struct interface *intf)
Get pointer to object containing object interface.
EFI_DEVICE_PATH_PROTOCOL * efi_paths(EFI_DEVICE_PATH_PROTOCOL *first,...)
Concatenate EFI device paths.
struct usb_device * usb
Underlying USB device, if any.
#define MSG_URI_DP
Uniform Resource Identifiers (URI) Device Path SubType.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
EFI_DEVICE_PATH_PROTOCOL Header
struct usb_port * port
USB port.
assert((readw(&hdr->flags) &(GTF_reading|GTF_writing))==0)
#define container_of(ptr, type, field)
Get containing structure.
struct sbft_srp_subtable srp
The SRP subtable.
#define MSG_SATA_DP
SATA Device Path SubType.
static struct net_device * netdev
UINT8 ParentPortNumber
USB Parent Port Number.
Transport-network layer interface.
UINT16 VlanId
VLAN identifier (0-4094).
size_t format_uri(const struct uri *uri, char *buf, size_t len)
Format URI.
An Infiniband SRP sBFT created by iPXE.
EFI_DEVICE_PATH_PROTOCOL * efi_fcp_path(struct fcp_description *desc)
Construct EFI device path for Fibre Channel device.
UINT64 Lun
iSCSI Logical Unit Number.
union ib_guid service_id
Service ID.
uint8_t id
Request identifier.
static unsigned int usb_depth(struct usb_device *usb)
Get USB depth.
CHAR8 Uri[]
Instance of the URI pursuant to RFC 3986.
static __always_inline void off_t userptr_t src
EFI_DEVICE_PATH_PROTOCOL * efi_ib_srp_path(struct ib_srp_device *ib_srp)
Construct EFI device path for Infiniband SRP device.
EFI_DEVICE_PATH_PROTOCOL Header
EFI_DEVICE_PATH_PROTOCOL * efi_netdev_path(struct net_device *netdev)
Construct EFI device path for network device.
static void(* free)(struct refcnt *refcnt))
EFI_DEVICE_PATH_PROTOCOL * efi_usb_path(struct usb_function *func)
Construct EFI device path for USB function.
struct scsi_lun lun
SCSI LUN (for boot firmware table)
void * zalloc(size_t size)
Allocate cleared memory.
UINT8 InterfaceNumber
USB Interface Number.
#define MSG_ISCSI_DP
iSCSI Device Path SubType
size_t strlen(const char *src)
Get length of string.
UINT64 DeviceId
64-bit persistent ID of remote device.
#define MSG_INFINIBAND_DP
InfiniBand Device Path SubType.
struct usb_device * usb
USB device.
An Infiniband SRP device.
uint16_t ll_proto
Link-layer protocol.
An FCP device description.
EFI_DEVICE_PATH_PROTOCOL * efi_iscsi_path(struct iscsi_session *iscsi)
Construct EFI device path for iSCSI device.
struct device * dev
Underlying hardware device.
UINT64 TargetPortId
64-bit persistent ID of remote IOC port.
Network device management.
#define MSG_VLAN_DP
VLAN Device Path SubType.
static uint16_t struct vmbus_xfer_pages_operations * op
UINT64 ServiceId
64-bit unique identifier to remote IOC or server process.
#define END_ENTIRE_DEVICE_PATH_SUBTYPE
struct scsi_lun lun
SCSI LUN.
char * target_iqn
Target IQN.
__weak unsigned int vlan_tag(struct net_device *netdev __unused)
Get the VLAN tag (when VLAN support is not present)
EFI_DEVICE_PATH_PROTOCOL * efi_describe(struct interface *intf)
Describe object as an EFI device path.
EFI_DEVICE_PATH_PROTOCOL Header
UINT8 Length[2]
Specific Device Path data.
SCSI RDMA Protocol over Infiniband.
UINT8 PortGid[16]
128-bit Global Identifier for remote fabric port.
__builtin_va_list va_list
Universal Serial Bus (USB)
EFI_DEVICE_PATH_PROTOCOL * efi_aoe_path(struct aoe_device *aoedev)
Construct EFI device path for AoE device.
struct ib_device * ibdev
Infiniband device.
struct usb_hub * hub
USB hub.
UINT8 SubType
Varies by Type 0xFF End Entire Device Path, or 0x01 End This Instance of a Device Path and start a ne...
uint16_t count
Number of entries.
void intf_put(struct interface *intf)
Decrement reference count on an object interface.
uint8_t minor
Minor number.
uint32_t end
Ending offset.
struct net_device * netdev
Network device.
struct sbft_ib_subtable ib
The Infiniband subtable.
UINT8 Type
0x01 Hardware Device Path.
struct usb_function_descriptor desc
Function descriptor.
A Uniform Resource Identifier.
EFI_DEVICE_PATH_PROTOCOL * path
EFI device path copy.
struct efi_device * efidev_parent(struct device *dev)
Get parent EFI device.
uint8_t ll_addr[MAX_LL_ADDR_LEN]
Link-layer address.
#define va_start(ap, last)
struct device dev
Generic device.
uint64_t tag
Identity tag.
#define NULL
NULL pointer (VOID *)
EFI_DEVICE_PATH_PROTOCOL * efi_path_end(EFI_DEVICE_PATH_PROTOCOL *path)
Find end of device path.
#define intf_get_dest_op(intf, type, dest)
Get object interface destination and operation method.
uint32_t first
Length to skip in first segment.
EFI_DEVICE_PATH_PROTOCOL Header
#define MSG_USB_DP
USB Device Path SubType.
struct ll_protocol * ll_protocol
Link-layer protocol.
void * memset(void *dest, int character, size_t len) __nonnull
#define efi_describe_TYPE(object_type)