diff --git a/home/nipa/nipa_out/931982/ynl/old-code/devlink-user.c b/home/nipa/nipa_out/931982/ynl/new-code/devlink-user.c
index 47c8c4cdca1b..9a752737c90a 100644
--- a/home/nipa/nipa_out/931982/ynl/old-code/devlink-user.c
+++ b/home/nipa/nipa_out/931982/ynl/new-code/devlink-user.c
@@ -7,6 +7,7 @@
 #include <string.h>
 #include "devlink-user.h"
 #include "ynl.h"
+#include <net/devlink.h>
 #include <linux/devlink.h>
 
 #include <linux/genetlink.h>
@@ -538,6 +539,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, },
 };
@@ -880,6 +891,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 = {
@@ -1495,6 +1509,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)
 {
@@ -6743,10 +6776,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->n_rate_tc_bws; i++)
+		devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]);
+	free(req->rate_tc_bws);
 	free(req);
 }
 
@@ -6775,6 +6813,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->_present.rate_parent_node_name_len)
 		ynl_attr_put_str(nlh, DEVLINK_ATTR_RATE_PARENT_NODE_NAME, req->rate_parent_node_name);
+	for (unsigned int i = 0; i < req->n_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)
@@ -6787,10 +6827,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->n_rate_tc_bws; i++)
+		devlink_dl_rate_tc_bws_free(&req->rate_tc_bws[i]);
+	free(req->rate_tc_bws);
 	free(req);
 }
 
@@ -6819,6 +6864,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->_present.rate_parent_node_name_len)
 		ynl_attr_put_str(nlh, DEVLINK_ATTR_RATE_PARENT_NODE_NAME, req->rate_parent_node_name);
+	for (unsigned int i = 0; i < req->n_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/931982/ynl/old-code/devlink-user.h b/home/nipa/nipa_out/931982/ynl/new-code/devlink-user.h
index e08ff699a3c0..3e189e3de45f 100644
--- a/home/nipa/nipa_out/931982/ynl/old-code/devlink-user.h
+++ b/home/nipa/nipa_out/931982/ynl/new-code/devlink-user.h
@@ -10,6 +10,7 @@
 #include <string.h>
 #include <linux/types.h>
 #include <linux/netlink.h>
+#include <net/devlink.h>
 #include <linux/devlink.h>
 
 struct ynl_sock;
@@ -283,6 +284,16 @@ 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;
+};
+
 struct devlink_dl_dpipe_table_matches {
 	unsigned int n_dpipe_match;
 	struct devlink_dl_dpipe_match *dpipe_match;
@@ -4799,6 +4810,8 @@ struct devlink_rate_set_req {
 	__u32 rate_tx_priority;
 	__u32 rate_tx_weight;
 	char *rate_parent_node_name;
+	unsigned int n_rate_tc_bws;
+	struct devlink_dl_rate_tc_bws *rate_tc_bws;
 };
 
 static inline struct devlink_rate_set_req *devlink_rate_set_req_alloc(void)
@@ -4875,6 +4888,15 @@ 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->_present.rate_parent_node_name_len);
 	req->rate_parent_node_name[req->_present.rate_parent_node_name_len] = 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)
+{
+	free(req->rate_tc_bws);
+	req->rate_tc_bws = rate_tc_bws;
+	req->n_rate_tc_bws = n_rate_tc_bws;
+}
 
 /*
  * Set rate instances.
@@ -4903,6 +4925,8 @@ struct devlink_rate_new_req {
 	__u32 rate_tx_priority;
 	__u32 rate_tx_weight;
 	char *rate_parent_node_name;
+	unsigned int n_rate_tc_bws;
+	struct devlink_dl_rate_tc_bws *rate_tc_bws;
 };
 
 static inline struct devlink_rate_new_req *devlink_rate_new_req_alloc(void)
@@ -4979,6 +5003,15 @@ 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->_present.rate_parent_node_name_len);
 	req->rate_parent_node_name[req->_present.rate_parent_node_name_len] = 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)
+{
+	free(req->rate_tc_bws);
+	req->rate_tc_bws = rate_tc_bws;
+	req->n_rate_tc_bws = n_rate_tc_bws;
+}
 
 /*
  * Create rate instances.