xref: /linux-6.15/include/uapi/linux/net_shaper.h (revision 14bba928)
104e65df9SPaolo Abeni /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
204e65df9SPaolo Abeni /* Do not edit directly, auto-generated from: */
304e65df9SPaolo Abeni /*	Documentation/netlink/specs/net_shaper.yaml */
404e65df9SPaolo Abeni /* YNL-GEN uapi header */
504e65df9SPaolo Abeni 
604e65df9SPaolo Abeni #ifndef _UAPI_LINUX_NET_SHAPER_H
704e65df9SPaolo Abeni #define _UAPI_LINUX_NET_SHAPER_H
804e65df9SPaolo Abeni 
904e65df9SPaolo Abeni #define NET_SHAPER_FAMILY_NAME		"net-shaper"
1004e65df9SPaolo Abeni #define NET_SHAPER_FAMILY_VERSION	1
1104e65df9SPaolo Abeni 
1204e65df9SPaolo Abeni /**
1304e65df9SPaolo Abeni  * enum net_shaper_scope - Defines the shaper @id interpretation.
1404e65df9SPaolo Abeni  * @NET_SHAPER_SCOPE_UNSPEC: The scope is not specified.
1504e65df9SPaolo Abeni  * @NET_SHAPER_SCOPE_NETDEV: The main shaper for the given network device.
1604e65df9SPaolo Abeni  * @NET_SHAPER_SCOPE_QUEUE: The shaper is attached to the given device queue,
1704e65df9SPaolo Abeni  *   the @id represents the queue number.
1804e65df9SPaolo Abeni  * @NET_SHAPER_SCOPE_NODE: The shaper allows grouping of queues or other node
1904e65df9SPaolo Abeni  *   shapers; can be nested in either @netdev shapers or other @node shapers,
2004e65df9SPaolo Abeni  *   allowing placement in any location of the scheduling tree, except leaves
2104e65df9SPaolo Abeni  *   and root.
2204e65df9SPaolo Abeni  */
2304e65df9SPaolo Abeni enum net_shaper_scope {
2404e65df9SPaolo Abeni 	NET_SHAPER_SCOPE_UNSPEC,
2504e65df9SPaolo Abeni 	NET_SHAPER_SCOPE_NETDEV,
2604e65df9SPaolo Abeni 	NET_SHAPER_SCOPE_QUEUE,
2704e65df9SPaolo Abeni 	NET_SHAPER_SCOPE_NODE,
2804e65df9SPaolo Abeni 
2904e65df9SPaolo Abeni 	/* private: */
3004e65df9SPaolo Abeni 	__NET_SHAPER_SCOPE_MAX,
3104e65df9SPaolo Abeni 	NET_SHAPER_SCOPE_MAX = (__NET_SHAPER_SCOPE_MAX - 1)
3204e65df9SPaolo Abeni };
3304e65df9SPaolo Abeni 
3404e65df9SPaolo Abeni /**
3504e65df9SPaolo Abeni  * enum net_shaper_metric - Different metric supported by the shaper.
3604e65df9SPaolo Abeni  * @NET_SHAPER_METRIC_BPS: Shaper operates on a bits per second basis.
3704e65df9SPaolo Abeni  * @NET_SHAPER_METRIC_PPS: Shaper operates on a packets per second basis.
3804e65df9SPaolo Abeni  */
3904e65df9SPaolo Abeni enum net_shaper_metric {
4004e65df9SPaolo Abeni 	NET_SHAPER_METRIC_BPS,
4104e65df9SPaolo Abeni 	NET_SHAPER_METRIC_PPS,
4204e65df9SPaolo Abeni };
4304e65df9SPaolo Abeni 
4404e65df9SPaolo Abeni enum {
4504e65df9SPaolo Abeni 	NET_SHAPER_A_HANDLE = 1,
4604e65df9SPaolo Abeni 	NET_SHAPER_A_METRIC,
4704e65df9SPaolo Abeni 	NET_SHAPER_A_BW_MIN,
4804e65df9SPaolo Abeni 	NET_SHAPER_A_BW_MAX,
4904e65df9SPaolo Abeni 	NET_SHAPER_A_BURST,
5004e65df9SPaolo Abeni 	NET_SHAPER_A_PRIORITY,
5104e65df9SPaolo Abeni 	NET_SHAPER_A_WEIGHT,
5204e65df9SPaolo Abeni 	NET_SHAPER_A_IFINDEX,
5304e65df9SPaolo Abeni 	NET_SHAPER_A_PARENT,
5404e65df9SPaolo Abeni 	NET_SHAPER_A_LEAVES,
5504e65df9SPaolo Abeni 
5604e65df9SPaolo Abeni 	__NET_SHAPER_A_MAX,
5704e65df9SPaolo Abeni 	NET_SHAPER_A_MAX = (__NET_SHAPER_A_MAX - 1)
5804e65df9SPaolo Abeni };
5904e65df9SPaolo Abeni 
6004e65df9SPaolo Abeni enum {
6104e65df9SPaolo Abeni 	NET_SHAPER_A_HANDLE_SCOPE = 1,
6204e65df9SPaolo Abeni 	NET_SHAPER_A_HANDLE_ID,
6304e65df9SPaolo Abeni 
6404e65df9SPaolo Abeni 	__NET_SHAPER_A_HANDLE_MAX,
6504e65df9SPaolo Abeni 	NET_SHAPER_A_HANDLE_MAX = (__NET_SHAPER_A_HANDLE_MAX - 1)
6604e65df9SPaolo Abeni };
6704e65df9SPaolo Abeni 
6804e65df9SPaolo Abeni enum {
69*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_IFINDEX = 1,
70*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SCOPE,
71*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_METRIC_BPS,
72*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_METRIC_PPS,
73*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_NESTING,
74*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_BW_MIN,
75*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_BW_MAX,
76*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_BURST,
77*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_PRIORITY,
78*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_SUPPORT_WEIGHT,
79*14bba928SPaolo Abeni 
80*14bba928SPaolo Abeni 	__NET_SHAPER_A_CAPS_MAX,
81*14bba928SPaolo Abeni 	NET_SHAPER_A_CAPS_MAX = (__NET_SHAPER_A_CAPS_MAX - 1)
82*14bba928SPaolo Abeni };
83*14bba928SPaolo Abeni 
84*14bba928SPaolo Abeni enum {
8504e65df9SPaolo Abeni 	NET_SHAPER_CMD_GET = 1,
8604e65df9SPaolo Abeni 	NET_SHAPER_CMD_SET,
8704e65df9SPaolo Abeni 	NET_SHAPER_CMD_DELETE,
8804e65df9SPaolo Abeni 	NET_SHAPER_CMD_GROUP,
89*14bba928SPaolo Abeni 	NET_SHAPER_CMD_CAP_GET,
9004e65df9SPaolo Abeni 
9104e65df9SPaolo Abeni 	__NET_SHAPER_CMD_MAX,
9204e65df9SPaolo Abeni 	NET_SHAPER_CMD_MAX = (__NET_SHAPER_CMD_MAX - 1)
9304e65df9SPaolo Abeni };
9404e65df9SPaolo Abeni 
9504e65df9SPaolo Abeni #endif /* _UAPI_LINUX_NET_SHAPER_H */
96