qosify-bpf.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. #define QOSIFY_MAX_CLASS_ENTRIES 16
  8. #define QOSIFY_DEFAULT_CLASS_ENTRIES 2
  9. #ifndef QOSIFY_FLOW_BUCKET_SHIFT
  10. #define QOSIFY_FLOW_BUCKET_SHIFT 13
  11. #endif
  12. #define QOSIFY_FLOW_BUCKETS (1 << QOSIFY_FLOW_BUCKET_SHIFT)
  13. /* rodata per-instance flags */
  14. #define QOSIFY_INGRESS (1 << 0)
  15. #define QOSIFY_IP_ONLY (1 << 1)
  16. #define QOSIFY_DSCP_VALUE_MASK ((1 << 6) - 1)
  17. #define QOSIFY_DSCP_FALLBACK_FLAG (1 << 6)
  18. #define QOSIFY_DSCP_CLASS_FLAG (1 << 7)
  19. #define QOSIFY_CLASS_FLAG_PRESENT (1 << 0)
  20. struct qosify_dscp_val {
  21. uint8_t ingress;
  22. uint8_t egress;
  23. };
  24. /* global config data */
  25. struct qosify_flow_config {
  26. uint8_t dscp_prio;
  27. uint8_t dscp_bulk;
  28. uint8_t bulk_trigger_timeout;
  29. uint16_t bulk_trigger_pps;
  30. uint16_t prio_max_avg_pkt_len;
  31. };
  32. struct qosify_config {
  33. uint8_t dscp_icmp;
  34. };
  35. struct qosify_ip_map_val {
  36. uint8_t dscp; /* must be first */
  37. uint8_t seen;
  38. };
  39. struct qosify_class {
  40. struct qosify_flow_config config;
  41. struct qosify_dscp_val val;
  42. uint8_t flags;
  43. };
  44. #endif