On Tue, 7 Apr 2015, Laszlo Ersek wrote:> Whereas syslinux.efi apparently uses the embedded gpxe/ tree, and that > one uses TCP timestamps. See tcp_xmit() in gpxe/src/net/tcp.c:Actually syslinux.efi seems to be using the implementation calling into UEFI via these functions: http://git.kernel.org/cgit/boot/syslinux/syslinux.git/tree/efi/tcp.c I've tried to add debug messages to these functions and got the following: core_tcp_connect: connecting core_tcp_connect: connected core_tcp_connect: at out: closing CompletionToken core_tcp_write: Sending 227 bytes tcp transmit failed, Access Denied Meanwhile on the OVMF side I could get these debug logs: Tcb (3F296898) state TCP_CLOSED --> TCP_SYN_SENT TcpToSendData: set RTT measure sequence 464107706 for TCB 3F296898 Tcb (3F296898) state TCP_SYN_SENT --> TCP_ESTABLISHED TcpComputeRtt: new RTT for TCB 3F296898 computed SRTT: 0 RTTVAR: 0 RTO: 5 TcpInput: connection established for TCB 3F296898 in SYN_SENT TcpInput: connection reset for TCB 3F296898 Tcb (3F296898) state TCP_ESTABLISHED --> TCP_CLOSED Tcb (3F296898) state TCP_CLOSED --> TCP_CLOSED So now it seems the problem may be in OVMF somewhere but how to find it? EDK2 code is hard to follow and I'm not sure what should I look for. Any hints? Regards, BALATON Zoltan
On 04/09/15 01:24, BALATON Zoltan wrote:> On Tue, 7 Apr 2015, Laszlo Ersek wrote: >> Whereas syslinux.efi apparently uses the embedded gpxe/ tree, and that >> one uses TCP timestamps. See tcp_xmit() in gpxe/src/net/tcp.c: > > Actually syslinux.efi seems to be using the implementation calling into > UEFI via these functions: > > http://git.kernel.org/cgit/boot/syslinux/syslinux.git/tree/efi/tcp.c > > I've tried to add debug messages to these functions and got the following: > > core_tcp_connect: connecting > core_tcp_connect: connected > core_tcp_connect: at out: closing CompletionToken > core_tcp_write: Sending 227 bytes > tcp transmit failed, Access Denied > > Meanwhile on the OVMF side I could get these debug logs: > > Tcb (3F296898) state TCP_CLOSED --> TCP_SYN_SENT > TcpToSendData: set RTT measure sequence 464107706 for TCB 3F296898 > Tcb (3F296898) state TCP_SYN_SENT --> TCP_ESTABLISHED > TcpComputeRtt: new RTT for TCB 3F296898 computed SRTT: 0 RTTVAR: 0 RTO: 5 > TcpInput: connection established for TCB 3F296898 in SYN_SENT > TcpInput: connection reset for TCB 3F296898 > Tcb (3F296898) state TCP_ESTABLISHED --> TCP_CLOSED > Tcb (3F296898) state TCP_CLOSED --> TCP_CLOSED > > So now it seems the problem may be in OVMF somewhere but how to find it? > EDK2 code is hard to follow and I'm not sure what should I look for. Any > hints?Those messages are from "NetworkPkg/TcpDxe/TcpOutput.c". OvmfPkg/README has a section called "Build Scripts". Thanks Laszlo
On Thu, 9 Apr 2015, BALATON Zoltan via Syslinux wrote:> So now it seems the problem may be in OVMF somewhere but how to find it? EDK2Just for the record, in case someone is reading this thread, the failing http connection with syslinux.efi on QEMU with OVMF was caused by a bug in OVMF that was corrected with this patch: http://sourceforge.net/p/edk2/mailman/message/33771836/ merged in edk2 in r17165. Regards, BALATON Zoltan
BALATON Zoltan via Syslinux <syslinux at zytor.com> writes:> On Thu, 9 Apr 2015, BALATON Zoltan via Syslinux wrote: > >> So now it seems the problem may be in OVMF somewhere but how to find it? EDK2 > > Just for the record, in case someone is reading this thread, the > failing http connection with syslinux.efi on QEMU with OVMF was caused > by a bug in OVMF that was corrected with this patch: > > http://sourceforge.net/p/edk2/mailman/message/33771836/ > > merged in edk2 in r17165.Thanks for reporting back! -- Regards, Feri.