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

source code of linux/tools/testing/selftests/bpf/xdp_metadata.h