xref: /linux/tools/testing/selftests/bpf/xdp_metadata.h (revision 08df80a3c51674ab73ae770885a383ca553fbbbf)
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 
27 enum 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 
33 struct 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