bpf: add initial support for splitting map dscp value into ingress and egress
[project/qosify.git] / qosify-bpf.h
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3 * Copyright (C) 2021 Felix Fietkau <nbd@nbd.name>
4 */
5 #ifndef __BPF_QOSIFY_H
6 #define __BPF_QOSIFY_H
7
8 #ifndef QOSIFY_FLOW_BUCKET_SHIFT
9 #define QOSIFY_FLOW_BUCKET_SHIFT 13
10 #endif
11
12 #define QOSIFY_FLOW_BUCKETS (1 << QOSIFY_FLOW_BUCKET_SHIFT)
13
14 /* rodata per-instance flags */
15 #define QOSIFY_INGRESS (1 << 0)
16 #define QOSIFY_IP_ONLY (1 << 1)
17
18
19 #define QOSIFY_DSCP_FALLBACK_FLAG (1 << 6)
20 #define QOSIFY_DSCP_DEFAULT_FLAG (1 << 7)
21
22 struct qosify_dscp_val {
23 uint8_t ingress;
24 uint8_t egress;
25 };
26
27 /* global config data */
28 struct qosify_config {
29 struct qosify_dscp_val dscp_prio;
30 struct qosify_dscp_val dscp_bulk;
31 struct qosify_dscp_val dscp_icmp;
32
33 uint8_t bulk_trigger_timeout;
34 uint16_t bulk_trigger_pps;
35
36 uint16_t prio_max_avg_pkt_len;
37 };
38
39 struct qosify_ip_map_val {
40 struct qosify_dscp_val dscp; /* must be first */
41 uint8_t seen;
42 };
43
44 #endif