]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - net/ping.c
Merge branch 'master' of git://git.denx.de/u-boot-imx
[karo-tx-uboot.git] / net / ping.c
index f0026cc420368b175a78b035e63de1af2734a713..2be56ed929575c25c1cfa78c7c89e7da31d32be7 100644 (file)
@@ -6,6 +6,7 @@
  *     Copyright 2000 Roland Borde
  *     Copyright 2000 Paolo Scaffardi
  *     Copyright 2000-2002 Wolfgang Denk, wd@denx.de
+ *     SPDX-License-Identifier:        GPL-2.0
  */
 
 #include "ping.h"
@@ -40,22 +41,17 @@ static void set_icmp_header(uchar *pkt, IPaddr_t dest)
 
 static int ping_send(void)
 {
-       static uchar mac[6];
        uchar *pkt;
        int eth_hdr_size;
 
        /* XXX always send arp request */
 
-       memcpy(mac, NetEtherNullAddr, 6);
-
-       debug("sending ARP for %pI4\n", &NetPingIP);
+       debug_cond(DEBUG_DEV_PKT, "sending ARP for %pI4\n", &NetPingIP);
 
        NetArpWaitPacketIP = NetPingIP;
-       NetArpWaitPacketMAC = mac;
 
-       pkt = NetArpWaitTxPacket;
-       eth_hdr_size = NetSetEther(pkt, mac, PROT_IP);
-       pkt += eth_hdr_size;
+       eth_hdr_size = NetSetEther(NetTxPacket, NetEtherNullAddr, PROT_IP);
+       pkt = (uchar *)NetTxPacket + eth_hdr_size;
 
        set_icmp_header(pkt, NetPingIP);
 
@@ -72,7 +68,7 @@ static int ping_send(void)
 static void ping_timeout(void)
 {
        eth_halt();
-       NetState = NETLOOP_FAIL;        /* we did not get the reply */
+       net_set_state(NETLOOP_FAIL);    /* we did not get the reply */
 }
 
 void ping_start(void)
@@ -87,19 +83,19 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
 {
        struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src;
        IPaddr_t src_ip;
+       int eth_hdr_size;
 
        switch (icmph->type) {
        case ICMP_ECHO_REPLY:
                src_ip = NetReadIP((void *)&ip->ip_src);
                if (src_ip == NetPingIP)
-                       NetState = NETLOOP_SUCCESS;
+                       net_set_state(NETLOOP_SUCCESS);
                return;
        case ICMP_ECHO_REQUEST:
-               debug("Got ICMP ECHO REQUEST, return "
-                       "%d bytes\n", ETHER_HDR_SIZE + len);
+               eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
 
-               memcpy(&et->et_dest[0], &et->et_src[0], 6);
-               memcpy(&et->et_src[0], NetOurEther, 6);
+               debug_cond(DEBUG_DEV_PKT, "Got ICMP ECHO REQUEST, return "
+                       "%d bytes\n", eth_hdr_size + len);
 
                ip->ip_sum = 0;
                ip->ip_off = 0;
@@ -112,7 +108,7 @@ void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
                icmph->checksum = 0;
                icmph->checksum = ~NetCksum((uchar *)icmph,
                        (len - IP_HDR_SIZE) >> 1);
-               NetSendPacket((uchar *)et, ETHER_HDR_SIZE + len);
+               NetSendPacket((uchar *)et, eth_hdr_size + len);
                return;
 /*     default:
                return;*/