From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick Wildt Date: Sun, 25 Mar 2018 22:23:09 +0200 Subject: [U-Boot] [PATCH 2/2] efi_loader: set the dhcp ack received flag In-Reply-To: <3ed60309-4681-d376-c9b8-88ce7238c2aa@gmx.de> References: <7c21262c-62a9-ba5e-3f4f-023c7026d7f8@gmx.de> <5f29f782-bd2d-afd6-c5ce-d3fa4c786a11@gmx.de> <20180325174417.GB86307@nyx.fritz.box> <3ed60309-4681-d376-c9b8-88ce7238c2aa@gmx.de> Message-ID: <20180325202309.GA87508@nyx.fritz.box> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Sun, Mar 25, 2018 at 10:04:55PM +0200, Heinrich Schuchardt wrote: > Thank you for the explanation. I think the right way go ahead is to add > all missing fields and to do away with unused[]. > > Please, carefully observe the alignment. The spec defines BOOLEAN as > 8bit value. ToS is the 19th byte followed by an EFI_IP_ADDRESS which is > a 16-byte buffer aligned on a 4-byte boundary. So after ToS we need one > byte to ensure alignment. We could define a struct efi_ip_address as > u8 a[16] __attribute__((aligned(4))). > > Best regards > > Heinrich I have noticed that, yes. I think explicitly padding the struct gives better visibility of the issue, instead of relying on an implicit alignment. Two other structures in u-boot EFI headers contain explicit "pad" members. I'd feel safer to go that route. What do you think about the following? Best regards, Patrick diff --git a/include/efi_api.h b/include/efi_api.h index 3ba650e57e..489ff476a4 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -756,7 +756,28 @@ struct efi_pxe_packet { struct efi_pxe_mode { - u8 unused[52]; + u8 started; + u8 ipv6_available; + u8 ipv6_supported; + u8 using_ipv6; + u8 bis_supported; + u8 bis_detected; + u8 auto_arp; + u8 send_guid; + u8 dhcp_discover_valid; + u8 dhcp_ack_received; + u8 proxy_offer_received; + u8 pxe_discovervalid; + u8 pxe_reply_received; + u8 pxe_bis_reply_received; + u8 icmp_error_received; + u8 tftp_error_received; + u8 make_callbacks; + u8 ttl; + u8 tos; + u8 pad; + struct efi_ip_address station_ip; + struct efi_ip_address subnet_mask; struct efi_pxe_packet dhcp_discover; struct efi_pxe_packet dhcp_ack; struct efi_pxe_packet proxy_offer;