Correct a typo below. MTFTP4 server -> MTFTP4 driver.

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Ye, Ting
Sent: Friday, September 18, 2015 11:13 AM
To: Mang Chia Ho; edk2-devel@lists.01.org
Subject: Re: [edk2] Some question for MTFTP4 protocol

Hi,

For GetInfo(), the MTFTP4 driver provides a callback function named 
"Mtftp4GetInfoCheckPacket" for CheckPacket(). Even though the UEFI spec does 
not define the GetInfo() should use EFI_MTFTP4_TOKEN, the MTFTP4 driver 
implements GetInfo() based on Readfile() thus it need supply callback function.

The GetInfo() function only need one OACK packet to get the file size, so it 
sends out an error message to abort the transfer after it received an OACK 
packet from MTFTP4 server.

You might refer to PxeBcTftpGetFileSize() in UefiPxebcDxe under MdeModulePkg 
for how to use Mtftp4 protocol to get file size.


Best Regards,
Ye Ting

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Mang 
Chia Ho
Sent: Thursday, September 17, 2015 10:07 PM
To: edk2-devel@lists.01.org
Subject: [edk2] Some question for MTFTP4 protocol

Hi all,

I have some question about the mtftp4 protocol.

When i use the "EFI_MTFTP4_PROTOCOL.GetInfo()" function to get the file
size of server's file.
And server will send a OACK packet to client for file info.
And client should use "EFI_MTFTP4_PROTOCOL.ParseOptions()" to parsing the
OACK packet.

But my mtftp protol send an error packet to server such as following
message before the EFI_MTFTP4_PROTOCOL.ParseOptions.
+++++++++++++++++++++++++++++++++++++++++++++++++
++ Opcode: Error Code (5)
++ Error code: Option negotiation failed (8)
++ Error message: User aborted the transfer
+++++++++++++++++++++++++++++++++++++++++++++++++

And i also trace the mtftp protocol source from
MdeModulePkg\Universal\Network\Mtftp4Dxe.
This error message was send by the Mtftp4RrqInput of Mtftp4Rrq.c file.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++if ((Instance->Token->CheckPacket != NULL) &&
++    ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode ==
EFI_MTFTP4_OPCODE_ERROR))) {
++  Status = Instance->Token->CheckPacket (
++                              &Instance->Mtftp4,
++                              Instance->Token,
++                              (UINT16) Len,
++                              Packet
++                             );
======> The status was "EFI_ABORTED"
++  if (EFI_ERROR (Status)) {
++    //
++    // Send an error message to the server to inform it
++    //
++    if (Opcode != EFI_MTFTP4_OPCODE_ERROR) {
++      Mtftp4SendError (
++        Instance,
++        EFI_MTFTP4_ERRORCODE_REQUEST_DENIED,
++        (UINT8 *) "User aborted the transfer"
++        );
++    }
++  ...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

But i don't know why the "Instance->Token->CheckPacket" send error status
back.
This CheckPacket callback function is represent for what function in the
mtftp4 flow?
According the uefi spec, the "EFI_MTFTP4_PROTOCOL.GetInfo()" function
doesn't meantion any EFI_MTFTP4_TOKEN member, but only in
"EFI_MTFTP4_PROTOCOL.ReadFile()".

Please give some help about this error message.


Thanks
_______________________________________________
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

Reply via email to