xref: /openbmc/u-boot/net/wol.h (revision feaa7856f50ec5bbf843d533ee223aedd845452c)
1  /* SPDX-License-Identifier: GPL-2.0+ */
2  /*
3   * wol - Wake-on-LAN
4   *
5   * Supports both Wake-on-LAN packet types:
6   * - EtherType 0x0842 packets
7   * - UDP packets on ports 0, 7 and 9.
8   *
9   * Copyright 2018 Lothar Felten, lothar.felten@gmail.com
10   */
11  
12  #if defined(CONFIG_CMD_WOL)
13  
14  #ifndef __WOL_H__
15  #define __WOL_H__
16  
17  #include <net.h>
18  
19  /**********************************************************************/
20  
21  #define WOL_SYNC_BYTE			0xFF
22  #define WOL_SYNC_COUNT			6
23  #define WOL_MAC_REPETITIONS		16
24  #define WOL_DEFAULT_TIMEOUT		5000
25  #define WOL_PASSWORD_4B			4
26  #define WOL_PASSWORD_6B			6
27  
28  /*
29   * Wake-on-LAN header
30   */
31  struct wol_hdr {
32  	u8	wol_sync[WOL_SYNC_COUNT];			/* sync bytes */
33  	u8	wol_dest[WOL_MAC_REPETITIONS * ARP_HLEN];	/* 16x MAC */
34  	u8	wol_passwd[0];					/* optional */
35  };
36  
37  /*
38   * Initialize wol (beginning of netloop)
39   */
40  void wol_start(void);
41  
42  /*
43   * Check incoming Wake-on-LAN packet for:
44   * - sync bytes
45   * - sixteen copies of the target MAC address
46   *
47   * Optionally store the four or six byte password in the environment
48   * variable "wolpassword"
49   *
50   * @param ip IP header in the packet
51   * @param len Packet length
52   */
53  void wol_receive(struct ip_udp_hdr *ip, unsigned int len);
54  
55  /*
56   * Set the timeout for the reception of a Wake-on-LAN packet
57   *
58   * @param timeout in milliseconds
59   */
60  void wol_set_timeout(ulong timeout);
61  
62  /**********************************************************************/
63  
64  #endif /* __WOL_H__ */
65  #endif
66