1/* SPDX-License-Identifier: GPL-2.0 */
2#pragma once
3
4#ifndef ETH_P_IP
5#define ETH_P_IP 0x0800
6#endif
7
8#ifndef ETH_P_IPV6
9#define ETH_P_IPV6 0x86DD
10#endif
11
12#ifndef ETH_P_8021Q
13#define ETH_P_8021Q 0x8100
14#endif
15
16#ifndef ETH_P_8021AD
17#define ETH_P_8021AD 0x88A8
18#endif
19
20#ifndef BIT
21#define BIT(nr)			(1 << (nr))
22#endif
23
24/* Non-existent checksum status */
25#define XDP_CHECKSUM_MAGIC	BIT(2)
26
27enum xdp_meta_field {
28	XDP_META_FIELD_TS	= BIT(0),
29	XDP_META_FIELD_RSS	= BIT(1),
30	XDP_META_FIELD_VLAN_TAG	= BIT(2),
31};
32
33struct xdp_meta {
34	union {
35		__u64 rx_timestamp;
36		__s32 rx_timestamp_err;
37	};
38	__u64 xdp_timestamp;
39	__u32 rx_hash;
40	union {
41		__u32 rx_hash_type;
42		__s32 rx_hash_err;
43	};
44	union {
45		struct {
46			__be16 rx_vlan_proto;
47			__u16 rx_vlan_tci;
48		};
49		__s32 rx_vlan_tag_err;
50	};
51	enum xdp_meta_field hint_valid;
52};
53