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
To: nd6...@hotmail.com; 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
To: nd6...@hotmail.com;
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
To: edk2-devel@lists.sourceforge.net;
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