[U-Boot] [PATCH 2/2] efi_loader: set the dhcp ack received flag

Heinrich Schuchardt xypron.glpk at gmx.de
Mon Mar 26 04:39:06 UTC 2018


On 03/25/2018 10:23 PM, Patrick Wildt wrote:
> 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

I think it is fine to use a padding byte. But still the alignment should
be specified for efi_ip_address. Otherwise we might pass data with wrong
alignment.

Best regards

Heinrich

> 
> 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;
> 



More information about the U-Boot mailing list