efinet support
This commit is contained in:
parent
f8614119a0
commit
9d22909b85
4 changed files with 267 additions and 1 deletions
|
@ -84,6 +84,11 @@
|
|||
{ 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
}
|
||||
|
||||
#define GRUB_EFI_SIMPLE_NETWORK_GUID \
|
||||
{ 0xa19832b9, 0xac25, 0x11d3, \
|
||||
{ 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \
|
||||
}
|
||||
|
||||
#define GRUB_EFI_DEVICE_PATH_GUID \
|
||||
{ 0x09576e91, 0x6d3f, 0x11d2, \
|
||||
{ 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
|
||||
|
@ -1214,6 +1219,74 @@ struct grub_efi_block_io_media
|
|||
};
|
||||
typedef struct grub_efi_block_io_media grub_efi_block_io_media_t;
|
||||
|
||||
typedef grub_uint8_t grub_efi_mac_t[32];
|
||||
|
||||
struct grub_efi_simple_network_mode
|
||||
{
|
||||
grub_uint32_t state;
|
||||
grub_uint32_t hwaddr_size;
|
||||
grub_uint32_t media_header_size;
|
||||
grub_uint32_t max_packet_size;
|
||||
grub_uint32_t nvram_size;
|
||||
grub_uint32_t nvram_access_size;
|
||||
grub_uint32_t receive_filter_mask;
|
||||
grub_uint32_t receive_filter_setting;
|
||||
grub_uint32_t max_mcast_filter_count;
|
||||
grub_uint32_t mcast_filter_count;
|
||||
grub_efi_mac_t mcast_filter[16];
|
||||
grub_efi_mac_t current_address;
|
||||
grub_efi_mac_t broadcast_address;
|
||||
grub_efi_mac_t permanent_address;
|
||||
grub_uint8_t if_type;
|
||||
grub_uint8_t mac_changeable;
|
||||
grub_uint8_t multitx_supported;
|
||||
grub_uint8_t media_present_supported;
|
||||
grub_uint8_t media_present;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
GRUB_EFI_NETWORK_STOPPED,
|
||||
GRUB_EFI_NETWORK_STARTED,
|
||||
GRUB_EFI_NETWORK_INITIALIZED,
|
||||
};
|
||||
|
||||
struct grub_efi_simple_network
|
||||
{
|
||||
grub_uint64_t revision;
|
||||
grub_efi_status_t (*start) (struct grub_efi_simple_network *this);
|
||||
void (*stop) (void);
|
||||
grub_efi_status_t (*initialize) (struct grub_efi_simple_network *this,
|
||||
grub_efi_uintn_t extra_rx,
|
||||
grub_efi_uintn_t extra_tx);
|
||||
void (*reset) (void);
|
||||
void (*shutdown) (void);
|
||||
void (*receive_filters) (void);
|
||||
void (*station_address) (void);
|
||||
void (*statistics) (void);
|
||||
void (*mcastiptomac) (void);
|
||||
void (*nvdata) (void);
|
||||
void (*getstatus) (void);
|
||||
grub_efi_status_t (*transmit) (struct grub_efi_simple_network *this,
|
||||
grub_efi_uintn_t header_size,
|
||||
grub_efi_uintn_t buffer_size,
|
||||
void *buffer,
|
||||
grub_efi_mac_t *src_addr,
|
||||
grub_efi_mac_t *dest_addr,
|
||||
grub_efi_uint16_t *protocol);
|
||||
grub_efi_status_t (*receive) (struct grub_efi_simple_network *this,
|
||||
grub_efi_uintn_t *header_size,
|
||||
grub_efi_uintn_t *buffer_size,
|
||||
void *buffer,
|
||||
grub_efi_mac_t *src_addr,
|
||||
grub_efi_mac_t *dest_addr,
|
||||
grub_uint16_t *protocol);
|
||||
void (*waitforpacket) (void);
|
||||
struct grub_efi_simple_network_mode *mode;
|
||||
};
|
||||
typedef struct grub_efi_simple_network grub_efi_simple_network_t;
|
||||
|
||||
|
||||
struct grub_efi_block_io
|
||||
{
|
||||
grub_efi_uint64_t revision;
|
||||
|
@ -1243,6 +1316,7 @@ typedef struct grub_efi_block_io grub_efi_block_io_t;
|
|||
#define efi_call_4(func, a, b, c, d) func(a, b, c, d)
|
||||
#define efi_call_5(func, a, b, c, d, e) func(a, b, c, d, e)
|
||||
#define efi_call_6(func, a, b, c, d, e, f) func(a, b, c, d, e, f)
|
||||
#define efi_call_7(func, a, b, c, d, e, f, g) func(a, b, c, d, e, f, g)
|
||||
#define efi_call_10(func, a, b, c, d, e, f, g, h, i, j) func(a, b, c, d, e, f, g, h, i, j)
|
||||
|
||||
#else
|
||||
|
@ -1264,6 +1338,9 @@ typedef struct grub_efi_block_io grub_efi_block_io_t;
|
|||
#define efi_call_6(func, a, b, c, d, e, f) \
|
||||
efi_wrap_6(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \
|
||||
(grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f)
|
||||
#define efi_call_7(func, a, b, c, d, e, f, g) \
|
||||
efi_wrap_7(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \
|
||||
(grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f, (grub_uint64_t) g)
|
||||
#define efi_call_10(func, a, b, c, d, e, f, g, h, i, j) \
|
||||
efi_wrap_10(func, (grub_uint64_t) a, (grub_uint64_t) b, (grub_uint64_t) c, \
|
||||
(grub_uint64_t) d, (grub_uint64_t) e, (grub_uint64_t) f, (grub_uint64_t) g, \
|
||||
|
@ -1285,6 +1362,10 @@ grub_uint64_t EXPORT_FUNC(efi_wrap_6) (void *func, grub_uint64_t arg1,
|
|||
grub_uint64_t arg2, grub_uint64_t arg3,
|
||||
grub_uint64_t arg4, grub_uint64_t arg5,
|
||||
grub_uint64_t arg6);
|
||||
grub_uint64_t EXPORT_FUNC(efi_wrap_7) (void *func, grub_uint64_t arg1,
|
||||
grub_uint64_t arg2, grub_uint64_t arg3,
|
||||
grub_uint64_t arg4, grub_uint64_t arg5,
|
||||
grub_uint64_t arg6, grub_uint64_t arg7);
|
||||
grub_uint64_t EXPORT_FUNC(efi_wrap_10) (void *func, grub_uint64_t arg1,
|
||||
grub_uint64_t arg2, grub_uint64_t arg3,
|
||||
grub_uint64_t arg4, grub_uint64_t arg5,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue