> On Sep 23, 2015, at 3:20 PM, David Van Arnem <[email protected]> wrote: > > Hi all, > > I'm trying to implement some networking (sending/receiving a couple packets) > in a UEFI application I'm developing and testing on a commercial motherboard. > I am able to send a packet if I use SNP, using (approximately): > > gBS->LocateProtocol(&gEfiSimpleNetworkProtocolGuid, NULL, (VOID > **)&SnpProtocol); > SnpProtocol->Transmit(...) > > Instead, though, I would like to send a TCP packet, so I tried locating the > gEfiTcp4ProtocolGuid and using the Transmit from that protocol. The > LocateProtocol function in this case is returning EFI_NOT_FOUND, which is > unfortunate. Should gEfiTcp4ProtocolGuid be in the motherboard > manufacturer's UEFI implementation (i.e. is it up to the developer to include > it or not)? I'm not sure how compliance with the spec works, so I wanted to > ask here before I choose an alternative. >
David, The answer to your spec (UEFI 2.5) question is in: 2.6.2 Platform-Specific Elements 7. If a platform supports UEFI general purpose network applications, then the EFI_MANAGED_NETWORK_PROTOCOL, EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL, EFI_ARP_PROTOCOL, EFI_ARP_SERVICE_BINDING_PROTOCOL, EFI_DHCP4_PROTOCOL, EFI_DHCP4_SERVICE_BINDING_PROTOCOL, EFI_TCP4_PROTOCOL, EFI_TCP4_SERVICE_BINDING_PROTOCOL, EFI_IP4_SERVICE_BINDING_PROTOCOL, EFI_IP4_CONFIG2_PROTOCOL, EFI_UDP4_PROTOCOL, and EFI_UDP4_SERVICE_BINDING_PROTOCOL are required. If additional IPv6 support is needed for the platform, then EFI_DHCP6_PROTOCOL, EFI_DHCP6_SERVICE_BINDING_PROTOCOL, EFI_TCP6_PROTOCOL, EFI_TCP6_SERVICE_BINDING_PROTOCOL, EFI_IP6_SERVICE_BINDING_PROTOCOL, EFI_IP6_CONFIG_PROTOCOL, EFI_UDP6_PROTOCOL, and EFI_UDP6_SERVICE_BINDING_PROTOCOL are additionally required. If the network application requires DNS capability, EFI_DNS4_SERVICE_BINDING_PROTOCOL and EFI_DNS4_PROTOCOL are required for the IPv4 stack. EFI_DNS6_SERVICE_BINDING_PROTOCOL and EFI_DNS6_PROTOCOL are required for the IPv6 stack. If the netw ork environment requires TLS features, EFI_TLS_SERVICE_BINDING_PROTOCOL,EFI_TLS_PROTOCOL and EFI_TLS_CONFIGURATION_PROTOCOL are required. If the network environment requires VLAN features, EFI_VLAN_CONFIG_PROTOCOL is required. Thanks, Andrew Fish > David > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

