Chris,

I think it's a bug of Ping command. The reply message may come before or after 
the Transmit function return, so the caller should be ready to handle the reply 
message before calling Transmit function. You can move the InsertTailList to 
the front of Transmit and have a try.

Best Regards
Siyuan

From: Chris Cuthbert [mailto:nd6...@hotmail.com]
Sent: Wednesday, August 20, 2014 5:02 AM
To: Fu, Siyuan; Edk2 Devel
Subject: RE: [edk2] Missing Ping Reply

Hi Siyuan,

The reason that the reply is missing is because when the reply is received and 
"Ping6OnEchoReplyReceived" is called, it kicks out in the call to 
"Ping6MatchEchoReply". The reason that reply does not match because there is no 
entry in the TxList when reply is received.
In the function "PingSendEchoRequest", the ICMP message is sent out first 
before the entry is inserted into TxList. The reply comes back before the call 
comes back from "Transmit" function of the IPV4 protocol.
Is this because the call to transmit is too long ?
Is IPV4 protocol transmit call doing some house keeping within that call ?

Thanx,
Narinder Dhillon
________________________________
From: siyuan...@intel.com<mailto:siyuan...@intel.com>
To: nd6...@hotmail.com<mailto:nd6...@hotmail.com>; 
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: RE: [edk2] Missing Ping Reply
Date: Tue, 19 Aug 2014 04:10:51 +0000
Hi, Chris

I still can't reproduce this issue on my side, what's the EDKII and shell 
revision you are using? Can you reproduce it on other NIC, like NT32?

Best Regards,
Siyuan

From: Chris Cuthbert [mailto:nd6...@hotmail.com]
Sent: Tuesday, August 19, 2014 10:22 AM
To: Fu, Siyuan; Edk2 Devel
Subject: RE: [edk2] Missing Ping Reply

Looks okay.

Ip4InstanceDeliverPacket: Before SignalEvent Token->Status 0x0
Ip4InstanceDeliverPacket: Before SignalEvent Token->Packet.RxData->HeaderLength 
0x14
Ip4InstanceDeliverPacket: Before SignalEvent Token->Packet.RxData->DataLength 
0x10


________________________________
From: siyuan...@intel.com<mailto:siyuan...@intel.com>
To: nd6...@hotmail.com<mailto:nd6...@hotmail.com>; 
edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>
Subject: RE: [edk2] Missing Ping Reply
Date: Tue, 19 Aug 2014 01:20:55 +0000
Hi, Chris

DispatchDpc returns NOT_FOUND is correct. Ping command doesn't use DPC so the 
Rx event's callback function will be invoked immediately after SingalEvent(). 
Did you check the Token->Status and Token->Packet.RxData in 
Ip4InstanceDeliverPacket() before SingalEvent?

Best Regards,
Siyuan

From: Chris Cuthbert [mailto:nd6...@hotmail.com]
Sent: Tuesday, August 19, 2014 1:18 AM
To: Fu, Siyuan; Edk2 Devel
Subject: RE: [edk2] Missing Ping Reply

Hi Siyuan,

Here is the log again. Looks like NOT_FOUND is being returned by DispatchDpc.
Thanx.


Shell> ping -n 1 172.25.17.100
Ping StartsAPing 172.25.17.100 16 data bytes
NicVfTransmit                                                     (ARP request)
NicVfGetPacket                                                   (ARP reply)
NicVfTransmit                                                      (Ping 
request)
NicVfGetPacket                                                    (Ping reply)
Ip4AccpetFrame EFI_IP_PROTO_ICMP
Ip4IcmpHandle ICMP_QUERY_MESSAGE
Ip4ProcessIcmpQuery Ip4Demultiplex
Ip4Demultiplex Ip4InterfaceEnquePacket
Ip4Demultiplex Ip4InterfaceEnquePacket
Ip4Demultiplex Ip4InterfaceDeliverPacket
Ip4InstanceDeliverPacket: Before SignalEvent
Ip4InstanceDeliverPacket: After SignalEvent 0x0
Ip4Demultiplex Ip4InterfaceDeliverPacket
Ip4AccpetFrame: Before DispatchDpc
Ip4AccpetFrame: After DispatchDpc 0x800000000000000E

1 packets transmitted, 0 received, 100% packet loss, time 0ms
________________________________
From: siyuan...@intel.com<mailto:siyuan...@intel.com>
To: edk2-devel@lists.sourceforge.net<mailto:edk2-devel@lists.sourceforge.net>; 
nd6...@hotmail.com<mailto:nd6...@hotmail.com>
Subject: RE: [edk2] Missing Ping Reply
Date: Mon, 18 Aug 2014 06:14:08 +0000
Hi, Chris

Could you please help to check the return status of the gBS->SignalEvent and 
DispatchDpc (see attached patch file)?  Ping's call back function should be 
invoked when IP4 driver calling SignalEvent or DispatchDpc (mostly after 
SingalEvent if you execute the ping command in EFI shell).

Best Regards,
Siyuan

From: Chris Cuthbert [mailto:nd6...@hotmail.com]
Sent: Sunday, August 17, 2014 11:14 AM
To: Edk2 Devel
Subject: [edk2] Missing Ping Reply

Hi All,

I am implementing a UEFI driver for a network controller and I am producing 
Simple Network Protocol(SNP). To test this, I am using the 'ping' shell 
command. The problem is that I never get the first ping reply. I have debugged 
this all the way up the IPv4 stack and I can see that reply packet is being 
passed up but the first packet never reaches the 'ping' command. Logs below. 
From the ping source code it looks like it is creating an event to get a call 
back on reply packet and as part of the call back, it registers for event again 
if more replies are expected. But the first reply never kicks the call back 
function.
Any suggestions ?
Thanx.

Shell> ping -n 1 172.25.17.100
Ping StartsAPing 172.25.17.100 16 data bytes
NicVfTransmit                                                          (ARP 
request)
NicVfGetPacket                                                        (ARP 
reply)
NicVfTransmit                                                          (Ping 
packet)
NicVfGetPacket                                                        (Ping 
reply)
Ip4AccpetFrame EFI_IP_PROTO_ICMP                    (ICMP recognized)
Ip4IcmpHandle ICMP_QUERY_MESSAGE
Ip4ProcessIcmpQuery Ip4Demultiplex                    (Ip4Demultiplex function 
call)
Ip4Demultiplex Ip4InterfaceEnquePacket
Ip4Demultiplex Ip4InterfaceEnquePacket
Ip4Demultiplex Ip4InterfaceDeliverPacket
Ip4Demultiplex Ip4InterfaceDeliverPacket

1 packets transmitted, 0 received, 100% packet loss, time 0ms

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to