qosify: add support for keeping stats
[project/qosify.git] / qosify-bpf.h
index 3d457a61675734d172be49a9663505c45c2ca895..a78f777f5f9ee197d38a0fa81c0aa06324efb27f 100644 (file)
@@ -5,6 +5,9 @@
 #ifndef __BPF_QOSIFY_H
 #define __BPF_QOSIFY_H
 
+#define QOSIFY_MAX_CLASS_ENTRIES       16
+#define QOSIFY_DEFAULT_CLASS_ENTRIES   2
+
 #ifndef QOSIFY_FLOW_BUCKET_SHIFT
 #define QOSIFY_FLOW_BUCKET_SHIFT       13
 #endif
 #define QOSIFY_INGRESS                 (1 << 0)
 #define QOSIFY_IP_ONLY                 (1 << 1)
 
-
+#define QOSIFY_DSCP_VALUE_MASK         ((1 << 6) - 1)
 #define QOSIFY_DSCP_FALLBACK_FLAG      (1 << 6)
-#define QOSIFY_DSCP_DEFAULT_FLAG       (1 << 7)
+#define QOSIFY_DSCP_CLASS_FLAG         (1 << 7)
+
+#define QOSIFY_CLASS_FLAG_PRESENT      (1 << 0)
 
 struct qosify_dscp_val {
        uint8_t ingress;
@@ -25,10 +30,10 @@ struct qosify_dscp_val {
 };
 
 /* global config data */
-struct qosify_config {
-       struct qosify_dscp_val dscp_prio;
-       struct qosify_dscp_val dscp_bulk;
-       struct qosify_dscp_val dscp_icmp;
+
+struct qosify_flow_config {
+       uint8_t dscp_prio;
+       uint8_t dscp_bulk;
 
        uint8_t bulk_trigger_timeout;
        uint16_t bulk_trigger_pps;
@@ -36,9 +41,23 @@ struct qosify_config {
        uint16_t prio_max_avg_pkt_len;
 };
 
+struct qosify_config {
+       uint8_t dscp_icmp;
+};
+
 struct qosify_ip_map_val {
-       struct qosify_dscp_val dscp; /* must be first */
+       uint8_t dscp; /* must be first */
        uint8_t seen;
 };
 
+struct qosify_class {
+       struct qosify_flow_config config;
+
+       struct qosify_dscp_val val;
+
+       uint8_t flags;
+
+       uint64_t packets;
+};
+
 #endif