Re: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard
Thanks for the reply. I was able to locate EFI_TCP4_SERVICE_BINDING_PROTOCOL, so I will try following the examples you referenced to use TCP. David On 09/23/2015 07:18 PM, Ye, Ting wrote: Hi David, I don't know which platform are you using but let's assume you already have UEFI network stack since you can work with SNP. The UEFI network stack will produce EFI_TCP4_SERVICE_BINDING_PROTOCOL instead of producing EFI_TCP4_PROTOCOL directly. To use TCP4 protocol, you need call EFI_TCP4_SERVICE_BINDING_PROTOCOL->CreateChild() to install a TCP4 protocol to the system. You could refer to the UEFI network modules (e.g. iSCSI driver) for how to use a EFI service binding protocol. Also, the DxeTcpIoLib in MdeModulePkg provides helper routines to access TCP service. Best Regards, Ye Ting -Original Message- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of David Van Arnem Sent: Thursday, September 24, 2015 6:20 AM To: edk2-devel@lists.01.org Subject: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard 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(, NULL, (VOID **)); 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 ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard
Thanks for the reply. I was able to locate EFI_TCP4_SERVICE_BINDING_PROTOCOL, so I will try following the examples you referenced to use TCP. David On 09/23/2015 07:18 PM, Ye, Ting wrote: Hi David, I don't know which platform are you using but let's assume you already have UEFI network stack since you can work with SNP. The UEFI network stack will produce EFI_TCP4_SERVICE_BINDING_PROTOCOL instead of producing EFI_TCP4_PROTOCOL directly. To use TCP4 protocol, you need call EFI_TCP4_SERVICE_BINDING_PROTOCOL->CreateChild() to install a TCP4 protocol to the system. You could refer to the UEFI network modules (e.g. iSCSI driver) for how to use a EFI service binding protocol. Also, the DxeTcpIoLib in MdeModulePkg provides helper routines to access TCP service. Best Regards, Ye Ting -Original Message- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of David Van Arnem Sent: Thursday, September 24, 2015 6:20 AM To: edk2-devel@lists.01.org Subject: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard 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(, NULL, (VOID **)); 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 ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard
> On Sep 23, 2015, at 3:20 PM, David Van Arnemwrote: > > 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(, NULL, (VOID > **)); > 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 > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard
Hi David, I don't know which platform are you using but let's assume you already have UEFI network stack since you can work with SNP. The UEFI network stack will produce EFI_TCP4_SERVICE_BINDING_PROTOCOL instead of producing EFI_TCP4_PROTOCOL directly. To use TCP4 protocol, you need call EFI_TCP4_SERVICE_BINDING_PROTOCOL->CreateChild() to install a TCP4 protocol to the system. You could refer to the UEFI network modules (e.g. iSCSI driver) for how to use a EFI service binding protocol. Also, the DxeTcpIoLib in MdeModulePkg provides helper routines to access TCP service. Best Regards, Ye Ting -Original Message- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of David Van Arnem Sent: Thursday, September 24, 2015 6:20 AM To: edk2-devel@lists.01.org Subject: [edk2] gEfiTcp4ProtocolGuid not found when running application on motherboard 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(, NULL, (VOID **)); 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 ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel