aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorJiri Pirko <jiri@mellanox.com>2016-04-14 12:19:13 -0400
committerDavid S. Miller <davem@davemloft.net>2016-04-14 16:22:03 -0400
commitbf7974710a40aaeb69dee7f62d91048bdaf79c76 (patch)
treeadff44085782f226cbb473dae79bd04024b507b7 /include/uapi/linux
parentf38ba953bee01887d520f7abba536721a1d16477 (diff)
devlink: add shared buffer configuration
Define userspace API and drivers API for configuration of shared buffers. Four basic objects are defined: shared buffer - attributes are size, number of pools and TCs pool - chunk of sharedbuffer definition, it has some size and either static or dynamic threshold port pool threshold - to set per-port threshold for each pool port tc threshold bind - to bind port and TC to specified pool with threshold. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/devlink.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h
index c9fee5781eb1..9c1aa5783090 100644
--- a/include/uapi/linux/devlink.h
+++ b/include/uapi/linux/devlink.h
@@ -33,6 +33,26 @@ enum devlink_command {
33 DEVLINK_CMD_PORT_SPLIT, 33 DEVLINK_CMD_PORT_SPLIT,
34 DEVLINK_CMD_PORT_UNSPLIT, 34 DEVLINK_CMD_PORT_UNSPLIT,
35 35
36 DEVLINK_CMD_SB_GET, /* can dump */
37 DEVLINK_CMD_SB_SET,
38 DEVLINK_CMD_SB_NEW,
39 DEVLINK_CMD_SB_DEL,
40
41 DEVLINK_CMD_SB_POOL_GET, /* can dump */
42 DEVLINK_CMD_SB_POOL_SET,
43 DEVLINK_CMD_SB_POOL_NEW,
44 DEVLINK_CMD_SB_POOL_DEL,
45
46 DEVLINK_CMD_SB_PORT_POOL_GET, /* can dump */
47 DEVLINK_CMD_SB_PORT_POOL_SET,
48 DEVLINK_CMD_SB_PORT_POOL_NEW,
49 DEVLINK_CMD_SB_PORT_POOL_DEL,
50
51 DEVLINK_CMD_SB_TC_POOL_BIND_GET, /* can dump */
52 DEVLINK_CMD_SB_TC_POOL_BIND_SET,
53 DEVLINK_CMD_SB_TC_POOL_BIND_NEW,
54 DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
55
36 /* add new commands above here */ 56 /* add new commands above here */
37 57
38 __DEVLINK_CMD_MAX, 58 __DEVLINK_CMD_MAX,
@@ -46,6 +66,31 @@ enum devlink_port_type {
46 DEVLINK_PORT_TYPE_IB, 66 DEVLINK_PORT_TYPE_IB,
47}; 67};
48 68
69enum devlink_sb_pool_type {
70 DEVLINK_SB_POOL_TYPE_INGRESS,
71 DEVLINK_SB_POOL_TYPE_EGRESS,
72};
73
74/* static threshold - limiting the maximum number of bytes.
75 * dynamic threshold - limiting the maximum number of bytes
76 * based on the currently available free space in the shared buffer pool.
77 * In this mode, the maximum quota is calculated based
78 * on the following formula:
79 * max_quota = alpha / (1 + alpha) * Free_Buffer
80 * While Free_Buffer is the amount of none-occupied buffer associated to
81 * the relevant pool.
82 * The value range which can be passed is 0-20 and serves
83 * for computation of alpha by following formula:
84 * alpha = 2 ^ (passed_value - 10)
85 */
86
87enum devlink_sb_threshold_type {
88 DEVLINK_SB_THRESHOLD_TYPE_STATIC,
89 DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC,
90};
91
92#define DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX 20
93
49enum devlink_attr { 94enum devlink_attr {
50 /* don't change the order or add anything between, this is ABI! */ 95 /* don't change the order or add anything between, this is ABI! */
51 DEVLINK_ATTR_UNSPEC, 96 DEVLINK_ATTR_UNSPEC,
@@ -62,6 +107,18 @@ enum devlink_attr {
62 DEVLINK_ATTR_PORT_IBDEV_NAME, /* string */ 107 DEVLINK_ATTR_PORT_IBDEV_NAME, /* string */
63 DEVLINK_ATTR_PORT_SPLIT_COUNT, /* u32 */ 108 DEVLINK_ATTR_PORT_SPLIT_COUNT, /* u32 */
64 DEVLINK_ATTR_PORT_SPLIT_GROUP, /* u32 */ 109 DEVLINK_ATTR_PORT_SPLIT_GROUP, /* u32 */
110 DEVLINK_ATTR_SB_INDEX, /* u32 */
111 DEVLINK_ATTR_SB_SIZE, /* u32 */
112 DEVLINK_ATTR_SB_INGRESS_POOL_COUNT, /* u16 */
113 DEVLINK_ATTR_SB_EGRESS_POOL_COUNT, /* u16 */
114 DEVLINK_ATTR_SB_INGRESS_TC_COUNT, /* u16 */
115 DEVLINK_ATTR_SB_EGRESS_TC_COUNT, /* u16 */
116 DEVLINK_ATTR_SB_POOL_INDEX, /* u16 */
117 DEVLINK_ATTR_SB_POOL_TYPE, /* u8 */
118 DEVLINK_ATTR_SB_POOL_SIZE, /* u32 */
119 DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE, /* u8 */
120 DEVLINK_ATTR_SB_THRESHOLD, /* u32 */
121 DEVLINK_ATTR_SB_TC_INDEX, /* u16 */
65 122
66 /* add new attributes above here, update the policy in devlink.c */ 123 /* add new attributes above here, update the policy in devlink.c */
67 124