[PATCH] net: ping: reset stored IP once the command finishes
Marek Szyprowski
m.szyprowski at samsung.com
Mon Jun 15 10:47:23 CEST 2020
Hi Tom,
On 12.06.2020 18:04, Tom Rini wrote:
> On Wed, Mar 25, 2020 at 02:42:00PM +0100, Marek Szyprowski wrote:
>> Reset stored ping IP address before leaving the netloop to ensure that
>> the subsequent calls to the netloop, especially for the other protocols,
>> won't be interrupted by the received ICMP_ECHO_REPLY packet.
>>
>> Signed-off-by: Marek Szyprowski <m.szyprowski at samsung.com>
>> ---
>> net/ping.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/net/ping.c b/net/ping.c
>> index 633c942..d912e3d 100644
>> --- a/net/ping.c
>> +++ b/net/ping.c
>> @@ -63,6 +63,7 @@ static int ping_send(void)
>> static void ping_timeout_handler(void)
>> {
>> eth_halt();
>> + net_ping_ip.s_addr = 0;
>> net_set_state(NETLOOP_FAIL); /* we did not get the reply */
>> }
>>
>> @@ -84,8 +85,10 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
>> switch (icmph->type) {
>> case ICMP_ECHO_REPLY:
>> src_ip = net_read_ip((void *)&ip->ip_src);
>> - if (src_ip.s_addr == net_ping_ip.s_addr)
>> + if (src_ip.s_addr == net_ping_ip.s_addr) {
>> + net_ping_ip.s_addr = 0;
>> net_set_state(NETLOOP_SUCCESS);
>> + }
>> return;
>> case ICMP_ECHO_REQUEST:
>> eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
> This breaks a number of tests in test/dm/eth.c. Can you please adjust
> the tests as well to not rely on the behavior you're fixing? Thanks!
I've checked and it turned out that it is not possible to fix the
net_retry test. It clearly shows that the net_retry feature relies on
the fact that the state machine of the net related commands are
preserved between the calls.
I wonder how to fix this without breaking the netretry feature. The only
solution I see is to clear net_ping_ip at the beginning of the
net_loop() if the protocol is not equal to PING. Quite ugly...
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
More information about the U-Boot
mailing list