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