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 | = 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 | |