projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'efi-2020-07-rc6' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/u-boot.git]
/
net
/
ping.c
diff --git
a/net/ping.c
b/net/ping.c
index 4918a1cb36d3e2ebc7c888545ee9c0fc3d6c5c98..0e33660f6c5faf8db51940826491c256d7c685ba 100644
(file)
--- a/
net/ping.c
+++ b/
net/ping.c
@@
-1,3
+1,4
@@
+// SPDX-License-Identifier: GPL-2.0
/*
* Copied from Linux Monitor (LiMon) - Networking.
*
/*
* Copied from Linux Monitor (LiMon) - Networking.
*
@@
-6,13
+7,14
@@
* Copyright 2000 Roland Borde
* Copyright 2000 Paolo Scaffardi
* Copyright 2000-2002 Wolfgang Denk, wd@denx.de
* 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"
#include "arp.h"
*/
#include "ping.h"
#include "arp.h"
+#include <log.h>
+#include <net.h>
-static ushort
PingSeqNo
;
+static ushort
ping_seq_number
;
/* The ip address to ping */
struct in_addr net_ping_ip;
/* The ip address to ping */
struct in_addr net_ping_ip;
@@
-22,20
+24,15
@@
static void set_icmp_header(uchar *pkt, struct in_addr dest)
/*
* Construct an IP and ICMP header.
*/
/*
* Construct an IP and ICMP header.
*/
- struct ip_hdr *ip = (struct ip_hdr *)pkt;
struct icmp_hdr *icmp = (struct icmp_hdr *)(pkt + IP_HDR_SIZE);
struct icmp_hdr *icmp = (struct icmp_hdr *)(pkt + IP_HDR_SIZE);
- net_set_ip_header(pkt, dest, net_ip);
-
- ip->ip_len = htons(IP_ICMP_HDR_SIZE);
- ip->ip_p = IPPROTO_ICMP;
- ip->ip_sum = compute_ip_checksum(ip, IP_HDR_SIZE);
+ net_set_ip_header(pkt, dest, net_ip, IP_ICMP_HDR_SIZE, IPPROTO_ICMP);
icmp->type = ICMP_ECHO_REQUEST;
icmp->code = 0;
icmp->checksum = 0;
icmp->un.echo.id = 0;
icmp->type = ICMP_ECHO_REQUEST;
icmp->code = 0;
icmp->checksum = 0;
icmp->un.echo.id = 0;
- icmp->un.echo.sequence = htons(
PingSeqNo
++);
+ icmp->un.echo.sequence = htons(
ping_seq_number
++);
icmp->checksum = compute_ip_checksum(icmp, ICMP_HDR_SIZE);
}
icmp->checksum = compute_ip_checksum(icmp, ICMP_HDR_SIZE);
}
@@
-50,22
+47,22
@@
static int ping_send(void)
net_arp_wait_packet_ip = net_ping_ip;
net_arp_wait_packet_ip = net_ping_ip;
- eth_hdr_size =
NetSetEther(NetTxPacket, NetEtherNullA
ddr, PROT_IP);
- pkt = (uchar *)
NetTxP
acket + eth_hdr_size;
+ eth_hdr_size =
net_set_ether(net_tx_packet, net_null_etha
ddr, PROT_IP);
+ pkt = (uchar *)
net_tx_p
acket + eth_hdr_size;
set_icmp_header(pkt, net_ping_ip);
/* size of the waiting packet */
set_icmp_header(pkt, net_ping_ip);
/* size of the waiting packet */
-
NetArpWaitTxPacketS
ize = eth_hdr_size + IP_ICMP_HDR_SIZE;
+
arp_wait_tx_packet_s
ize = eth_hdr_size + IP_ICMP_HDR_SIZE;
/* and do the ARP request */
/* and do the ARP request */
-
NetArpWaitT
ry = 1;
-
NetArpWaitTimerS
tart = get_timer(0);
-
ArpR
equest();
+
arp_wait_t
ry = 1;
+
arp_wait_timer_s
tart = get_timer(0);
+
arp_r
equest();
return 1; /* waiting */
}
return 1; /* waiting */
}
-static void ping_timeout(void)
+static void ping_timeout
_handler
(void)
{
eth_halt();
net_set_state(NETLOOP_FAIL); /* we did not get the reply */
{
eth_halt();
net_set_state(NETLOOP_FAIL); /* we did not get the reply */
@@
-74,7
+71,7
@@
static void ping_timeout(void)
void ping_start(void)
{
printf("Using %s device\n", eth_get_name());
void ping_start(void)
{
printf("Using %s device\n", eth_get_name());
-
NetSetTimeout(10000UL, ping_timeout
);
+
net_set_timeout_handler(10000UL, ping_timeout_handler
);
ping_send();
}
ping_send();
}
@@
-84,6
+81,7
@@
void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src;
struct in_addr src_ip;
int eth_hdr_size;
struct icmp_hdr *icmph = (struct icmp_hdr *)&ip->udp_src;
struct in_addr src_ip;
int eth_hdr_size;
+ uchar *tx_packet;
switch (icmph->type) {
case ICMP_ECHO_REPLY:
switch (icmph->type) {
case ICMP_ECHO_REPLY:
@@
-94,8
+92,9
@@
void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
case ICMP_ECHO_REQUEST:
eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
case ICMP_ECHO_REQUEST:
eth_hdr_size = net_update_ether(et, et->et_src, PROT_IP);
- debug_cond(DEBUG_DEV_PKT, "Got ICMP ECHO REQUEST, return "
- "%d bytes\n", eth_hdr_size + len);
+ 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;
ip->ip_sum = 0;
ip->ip_off = 0;
@@
-106,7
+105,10
@@
void ping_receive(struct ethernet_hdr *et, struct ip_udp_hdr *ip, int len)
icmph->type = ICMP_ECHO_REPLY;
icmph->checksum = 0;
icmph->checksum = compute_ip_checksum(icmph, len - IP_HDR_SIZE);
icmph->type = ICMP_ECHO_REPLY;
icmph->checksum = 0;
icmph->checksum = compute_ip_checksum(icmph, len - IP_HDR_SIZE);
- NetSendPacket((uchar *)et, eth_hdr_size + len);
+
+ tx_packet = net_get_async_tx_pkt_buf();
+ memcpy(tx_packet, et, eth_hdr_size + len);
+ net_send_packet(tx_packet, eth_hdr_size + len);
return;
/* default:
return;*/
return;
/* default:
return;*/