diff --git a/home/nipa/nipa_out/961134/ynl/old-code/devlink-user.c b/home/nipa/nipa_out/961134/ynl/new-code/devlink-user.c index 59d5ec238155..56d82d415a2b 100644 --- a/home/nipa/nipa_out/961134/ynl/old-code/devlink-user.c +++ b/home/nipa/nipa_out/961134/ynl/new-code/devlink-user.c @@ -7,6 +7,7 @@ #include #include "devlink-user.h" #include "ynl.h" +#include #include #include @@ -556,6 +557,16 @@ const struct ynl_policy_nest devlink_dl_selftest_id_nest = { .table = devlink_dl_selftest_id_policy, }; +const struct ynl_policy_attr devlink_dl_rate_tc_bws_policy[DEVLINK_ATTR_MAX + 1] = { + [DEVLINK_ATTR_RATE_TC_INDEX] = { .name = "rate-tc-index", .type = YNL_PT_U8, }, + [DEVLINK_ATTR_RATE_TC_BW] = { .name = "rate-tc-bw", .type = YNL_PT_U32, }, +}; + +const struct ynl_policy_nest devlink_dl_rate_tc_bws_nest = { + .max_attr = DEVLINK_ATTR_MAX, + .table = devlink_dl_rate_tc_bws_policy, +}; + const struct ynl_policy_attr devlink_dl_dpipe_table_matches_policy[DEVLINK_ATTR_MAX + 1] = { [DEVLINK_ATTR_DPIPE_MATCH] = { .name = "dpipe-match", .type = YNL_PT_NEST, .nest = &devlink_dl_dpipe_match_nest, }, }; @@ -898,6 +909,9 @@ const struct ynl_policy_attr devlink_policy[DEVLINK_ATTR_MAX + 1] = { [DEVLINK_ATTR_RATE_TX_PRIORITY] = { .name = "rate-tx-priority", .type = YNL_PT_U32, }, [DEVLINK_ATTR_RATE_TX_WEIGHT] = { .name = "rate-tx-weight", .type = YNL_PT_U32, }, [DEVLINK_ATTR_REGION_DIRECT] = { .name = "region-direct", .type = YNL_PT_FLAG, }, + [DEVLINK_ATTR_RATE_TC_BWS] = { .name = "rate-tc-bws", .type = YNL_PT_NEST, .nest = &devlink_dl_rate_tc_bws_nest, }, + [DEVLINK_ATTR_RATE_TC_INDEX] = { .name = "rate-tc-index", .type = YNL_PT_U8, }, + [DEVLINK_ATTR_RATE_TC_BW] = { .name = "rate-tc-bw", .type = YNL_PT_U32, }, }; const struct ynl_policy_nest devlink_nest = { @@ -1513,6 +1527,25 @@ int devlink_dl_selftest_id_put(struct nlmsghdr *nlh, unsigned int attr_type, return 0; } +void devlink_dl_rate_tc_bws_free(struct devlink_dl_rate_tc_bws *obj) +{ +} + +int devlink_dl_rate_tc_bws_put(struct nlmsghdr *nlh, unsigned int attr_type, + struct devlink_dl_rate_tc_bws *obj) +{ + struct nlattr *nest; + + nest = ynl_attr_nest_start(nlh, attr_type); + if (obj->_present.rate_tc_index) + ynl_attr_put_u8(nlh, DEVLINK_ATTR_RATE_TC_INDEX, obj->rate_tc_index); + if (obj->_present.rate_tc_bw) + ynl_attr_put_u32(nlh, DEVLINK_ATTR_RATE_TC_BW, obj->rate_tc_bw); + ynl_attr_nest_end(nlh, nest); + + return 0; +} + void devlink_dl_dpipe_table_matches_free(struct devlink_dl_dpipe_table_matches *obj) { @@ -6833,10 +6866,15 @@ devlink_rate_get_dump(struct ynl_sock *ys, /* DEVLINK_CMD_RATE_SET - do */ void devlink_rate_set_req_free(struct devlink_rate_set_req *req) { + unsigned int i; + free(req->bus_name); free(req->dev_name); free(req->rate_node_name); free(req->rate_parent_node_name); + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]); + free(req->rate_tc_bws); free(req); } @@ -6844,6 +6882,7 @@ int devlink_rate_set(struct ynl_sock *ys, struct devlink_rate_set_req *req) { struct ynl_req_state yrs = { .yarg = { .ys = ys, }, }; struct nlmsghdr *nlh; + unsigned int i; int err; nlh = ynl_gemsg_start_req(ys, ys->family_id, DEVLINK_CMD_RATE_SET, 1); @@ -6866,6 +6905,8 @@ int devlink_rate_set(struct ynl_sock *ys, struct devlink_rate_set_req *req) ynl_attr_put_u32(nlh, DEVLINK_ATTR_RATE_TX_WEIGHT, req->rate_tx_weight); if (req->_len.rate_parent_node_name) ynl_attr_put_str(nlh, DEVLINK_ATTR_RATE_PARENT_NODE_NAME, req->rate_parent_node_name); + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_put(nlh, DEVLINK_ATTR_RATE_TC_BWS, &req->rate_tc_bws[i]); err = ynl_exec(ys, nlh, &yrs); if (err < 0) @@ -6878,10 +6919,15 @@ int devlink_rate_set(struct ynl_sock *ys, struct devlink_rate_set_req *req) /* DEVLINK_CMD_RATE_NEW - do */ void devlink_rate_new_req_free(struct devlink_rate_new_req *req) { + unsigned int i; + free(req->bus_name); free(req->dev_name); free(req->rate_node_name); free(req->rate_parent_node_name); + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]); + free(req->rate_tc_bws); free(req); } @@ -6889,6 +6935,7 @@ int devlink_rate_new(struct ynl_sock *ys, struct devlink_rate_new_req *req) { struct ynl_req_state yrs = { .yarg = { .ys = ys, }, }; struct nlmsghdr *nlh; + unsigned int i; int err; nlh = ynl_gemsg_start_req(ys, ys->family_id, DEVLINK_CMD_RATE_NEW, 1); @@ -6911,6 +6958,8 @@ int devlink_rate_new(struct ynl_sock *ys, struct devlink_rate_new_req *req) ynl_attr_put_u32(nlh, DEVLINK_ATTR_RATE_TX_WEIGHT, req->rate_tx_weight); if (req->_len.rate_parent_node_name) ynl_attr_put_str(nlh, DEVLINK_ATTR_RATE_PARENT_NODE_NAME, req->rate_parent_node_name); + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_put(nlh, DEVLINK_ATTR_RATE_TC_BWS, &req->rate_tc_bws[i]); err = ynl_exec(ys, nlh, &yrs); if (err < 0) diff --git a/home/nipa/nipa_out/961134/ynl/old-code/devlink-user.h b/home/nipa/nipa_out/961134/ynl/new-code/devlink-user.h index 896ddc42c678..66dfaf21063f 100644 --- a/home/nipa/nipa_out/961134/ynl/old-code/devlink-user.h +++ b/home/nipa/nipa_out/961134/ynl/new-code/devlink-user.h @@ -10,6 +10,7 @@ #include #include #include +#include #include struct ynl_sock; @@ -309,6 +310,18 @@ struct devlink_dl_selftest_id { } _present; }; +struct devlink_dl_rate_tc_bws { + struct { + __u32 rate_tc_index:1; + __u32 rate_tc_bw:1; + } _present; + + __u8 rate_tc_index; + __u32 rate_tc_bw; +}; + +void devlink_dl_rate_tc_bws_free(struct devlink_dl_rate_tc_bws *obj); + struct devlink_dl_dpipe_table_matches { struct { __u32 dpipe_match; @@ -4978,6 +4991,9 @@ struct devlink_rate_set_req { __u32 rate_node_name; __u32 rate_parent_node_name; } _len; + struct { + __u32 rate_tc_bws; + } _count; char *bus_name; char *dev_name; @@ -4987,6 +5003,7 @@ struct devlink_rate_set_req { __u32 rate_tx_priority; __u32 rate_tx_weight; char *rate_parent_node_name; + struct devlink_dl_rate_tc_bws *rate_tc_bws; }; static inline struct devlink_rate_set_req *devlink_rate_set_req_alloc(void) @@ -5063,6 +5080,19 @@ devlink_rate_set_req_set_rate_parent_node_name(struct devlink_rate_set_req *req, memcpy(req->rate_parent_node_name, rate_parent_node_name, req->_len.rate_parent_node_name); req->rate_parent_node_name[req->_len.rate_parent_node_name] = 0; } +static inline void +__devlink_rate_set_req_set_rate_tc_bws(struct devlink_rate_set_req *req, + struct devlink_dl_rate_tc_bws *rate_tc_bws, + unsigned int n_rate_tc_bws) +{ + unsigned int i; + + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]); + free(req->rate_tc_bws); + req->rate_tc_bws = rate_tc_bws; + req->_count.rate_tc_bws = n_rate_tc_bws; +} /* * Set rate instances. @@ -5084,6 +5114,9 @@ struct devlink_rate_new_req { __u32 rate_node_name; __u32 rate_parent_node_name; } _len; + struct { + __u32 rate_tc_bws; + } _count; char *bus_name; char *dev_name; @@ -5093,6 +5126,7 @@ struct devlink_rate_new_req { __u32 rate_tx_priority; __u32 rate_tx_weight; char *rate_parent_node_name; + struct devlink_dl_rate_tc_bws *rate_tc_bws; }; static inline struct devlink_rate_new_req *devlink_rate_new_req_alloc(void) @@ -5169,6 +5203,19 @@ devlink_rate_new_req_set_rate_parent_node_name(struct devlink_rate_new_req *req, memcpy(req->rate_parent_node_name, rate_parent_node_name, req->_len.rate_parent_node_name); req->rate_parent_node_name[req->_len.rate_parent_node_name] = 0; } +static inline void +__devlink_rate_new_req_set_rate_tc_bws(struct devlink_rate_new_req *req, + struct devlink_dl_rate_tc_bws *rate_tc_bws, + unsigned int n_rate_tc_bws) +{ + unsigned int i; + + for (i = 0; i < req->_count.rate_tc_bws; i++) + devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]); + free(req->rate_tc_bws); + req->rate_tc_bws = rate_tc_bws; + req->_count.rate_tc_bws = n_rate_tc_bws; +} /* * Create rate instances.