ieee8021q.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (c) 2024 Pengutronix, Oleksij Rempel <kernel@pengutronix.de> */
  3. #ifndef _NET_IEEE8021Q_H
  4. #define _NET_IEEE8021Q_H
  5. #include <linux/errno.h>
  6. /**
  7. * enum ieee8021q_traffic_type - 802.1Q traffic type priority values (802.1Q-2022)
  8. *
  9. * @IEEE8021Q_TT_BK: Background
  10. * @IEEE8021Q_TT_BE: Best Effort (default). According to 802.1Q-2022, BE is 0
  11. * but has higher priority than BK which is 1.
  12. * @IEEE8021Q_TT_EE: Excellent Effort
  13. * @IEEE8021Q_TT_CA: Critical Applications
  14. * @IEEE8021Q_TT_VI: Video, < 100 ms latency and jitter
  15. * @IEEE8021Q_TT_VO: Voice, < 10 ms latency and jitter
  16. * @IEEE8021Q_TT_IC: Internetwork Control
  17. * @IEEE8021Q_TT_NC: Network Control
  18. */
  19. enum ieee8021q_traffic_type {
  20. IEEE8021Q_TT_BK = 0,
  21. IEEE8021Q_TT_BE = 1,
  22. IEEE8021Q_TT_EE = 2,
  23. IEEE8021Q_TT_CA = 3,
  24. IEEE8021Q_TT_VI = 4,
  25. IEEE8021Q_TT_VO = 5,
  26. IEEE8021Q_TT_IC = 6,
  27. IEEE8021Q_TT_NC = 7,
  28. /* private: */
  29. IEEE8021Q_TT_MAX,
  30. };
  31. #define SIMPLE_IETF_DSCP_TO_IEEE8021Q_TT(dscp) ((dscp >> 3) & 0x7)
  32. #if IS_ENABLED(CONFIG_NET_IEEE8021Q_HELPERS)
  33. int ietf_dscp_to_ieee8021q_tt(u8 dscp);
  34. int ieee8021q_tt_to_tc(enum ieee8021q_traffic_type tt, unsigned int num_queues);
  35. #else
  36. static inline int ietf_dscp_to_ieee8021q_tt(u8 dscp)
  37. {
  38. return -EOPNOTSUPP;
  39. }
  40. static inline int ieee8021q_tt_to_tc(enum ieee8021q_traffic_type tt,
  41. unsigned int num_queues)
  42. {
  43. return -EOPNOTSUPP;
  44. }
  45. #endif
  46. #endif /* _NET_IEEE8021Q_H */