xref: /openbmc/u-boot/arch/sandbox/include/asm/eth.h (revision 45988dae)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (c) 2015 National Instruments
4  *
5  * (C) Copyright 2015
6  * Joe Hershberger <joe.hershberger@ni.com>
7  */
8 
9 #ifndef __ETH_H
10 #define __ETH_H
11 
12 void sandbox_eth_disable_response(int index, bool disable);
13 
14 void sandbox_eth_skip_timeout(void);
15 
16 /*
17  * sandbox_eth_arp_req_to_reply()
18  *
19  * Check for an arp request to be sent. If so, inject a reply
20  *
21  * @dev: device that received the packet
22  * @packet: pointer to the received pacaket buffer
23  * @len: length of received packet
24  * @return 0 if injected, -EAGAIN if not
25  */
26 int sandbox_eth_arp_req_to_reply(struct udevice *dev, void *packet,
27 				 unsigned int len);
28 
29 /*
30  * sandbox_eth_ping_req_to_reply()
31  *
32  * Check for a ping request to be sent. If so, inject a reply
33  *
34  * @dev: device that received the packet
35  * @packet: pointer to the received pacaket buffer
36  * @len: length of received packet
37  * @return 0 if injected, -EAGAIN if not
38  */
39 int sandbox_eth_ping_req_to_reply(struct udevice *dev, void *packet,
40 				  unsigned int len);
41 
42 /*
43  * sandbox_eth_recv_arp_req()
44  *
45  * Inject an ARP request for this target
46  *
47  * @dev: device that received the packet
48  * @return 0 if injected, -EOVERFLOW if not
49  */
50 int sandbox_eth_recv_arp_req(struct udevice *dev);
51 
52 /**
53  * A packet handler
54  *
55  * dev - device pointer
56  * pkt - pointer to the "sent" packet
57  * len - packet length
58  */
59 typedef int sandbox_eth_tx_hand_f(struct udevice *dev, void *pkt,
60 				   unsigned int len);
61 
62 /**
63  * struct eth_sandbox_priv - memory for sandbox mock driver
64  *
65  * fake_host_hwaddr - MAC address of mocked machine
66  * fake_host_ipaddr - IP address of mocked machine
67  * disabled - Will not respond
68  * recv_packet_buffer - buffers of the packet returned as received
69  * recv_packet_length - lengths of the packet returned as received
70  * recv_packets - number of packets returned
71  * tx_handler - function to generate responses to sent packets
72  * priv - a pointer to some structure a test may want to keep track of
73  */
74 struct eth_sandbox_priv {
75 	uchar fake_host_hwaddr[ARP_HLEN];
76 	struct in_addr fake_host_ipaddr;
77 	bool disabled;
78 	uchar * recv_packet_buffer[PKTBUFSRX];
79 	int recv_packet_length[PKTBUFSRX];
80 	int recv_packets;
81 	sandbox_eth_tx_hand_f *tx_handler;
82 	void *priv;
83 };
84 
85 /*
86  * Set packet handler
87  *
88  * handler - The func ptr to call on send. If NULL, set to default handler
89  */
90 void sandbox_eth_set_tx_handler(int index, sandbox_eth_tx_hand_f *handler);
91 
92 /*
93  * Set priv ptr
94  *
95  * priv - priv void ptr to store in the device
96  */
97 void sandbox_eth_set_priv(int index, void *priv);
98 
99 #endif /* __ETH_H */
100