efi_loader: use proper device-paths for net
authorRob Clark <robdclark@gmail.com>
Wed, 13 Sep 2017 22:05:32 +0000 (18:05 -0400)
committerAlexander Graf <agraf@suse.de>
Wed, 20 Sep 2017 08:35:29 +0000 (10:35 +0200)
Signed-off-by: Rob Clark <robdclark@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_net.c

index 0b949d86e8d5386dfa14c51dd30806994a40d51b..aa0618fd3a11b842bc44b4aad43b08fcefb43775 100644 (file)
@@ -26,9 +26,6 @@ struct efi_net_obj {
        /* EFI Interface callback struct for network */
        struct efi_simple_network net;
        struct efi_simple_network_mode net_mode;
-       /* Device path to the network adapter */
-       struct efi_device_path_mac_addr dp_mac;
-       struct efi_device_path_file_path dp_end;
        /* PXE struct to transmit dhcp data */
        struct efi_pxe pxe;
        struct efi_pxe_mode pxe_mode;
@@ -213,16 +210,6 @@ void efi_net_set_dhcp_ack(void *pkt, int len)
 int efi_net_register(void **handle)
 {
        struct efi_net_obj *netobj;
-       struct efi_device_path_mac_addr dp_net = {
-               .dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE,
-               .dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR,
-               .dp.length = sizeof(dp_net),
-       };
-       struct efi_device_path_file_path dp_end = {
-               .dp.type = DEVICE_PATH_TYPE_END,
-               .dp.sub_type = DEVICE_PATH_SUB_TYPE_END,
-               .dp.length = sizeof(dp_end),
-       };
 
        if (!eth_get_dev()) {
                /* No eth device active, don't expose any */
@@ -236,7 +223,8 @@ int efi_net_register(void **handle)
        netobj->parent.protocols[0].guid = &efi_net_guid;
        netobj->parent.protocols[0].protocol_interface = &netobj->net;
        netobj->parent.protocols[1].guid = &efi_guid_device_path;
-       netobj->parent.protocols[1].protocol_interface = &netobj->dp_mac;
+       netobj->parent.protocols[1].protocol_interface =
+               efi_dp_from_eth();
        netobj->parent.protocols[2].guid = &efi_pxe_guid;
        netobj->parent.protocols[2].protocol_interface = &netobj->pxe;
        netobj->parent.handle = &netobj->net;
@@ -255,9 +243,6 @@ int efi_net_register(void **handle)
        netobj->net.receive = efi_net_receive;
        netobj->net.mode = &netobj->net_mode;
        netobj->net_mode.state = EFI_NETWORK_STARTED;
-       netobj->dp_mac = dp_net;
-       netobj->dp_end = dp_end;
-       memcpy(netobj->dp_mac.mac.addr, eth_get_ethaddr(), 6);
        memcpy(netobj->net_mode.current_address.mac_addr, eth_get_ethaddr(), 6);
        netobj->net_mode.max_packet_size = PKTSIZE;