Merge branch 'devlink-finish-conversion-to-generated-split_ops'
[linux-2.6-block.git] / tools / net / ynl / generated / devlink-user.h
index 4b686d147613fa96839dc76ceac60f196e580061..1db4edc36eaa1c2e67d2ca9fa5372ee72c6e8f0b 100644 (file)
@@ -9,6 +9,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <linux/types.h>
+#include <linux/netlink.h>
 #include <linux/devlink.h>
 
 struct ynl_sock;
@@ -18,8 +19,130 @@ extern const struct ynl_family ynl_devlink_family;
 /* Enums */
 const char *devlink_op_str(int op);
 const char *devlink_sb_pool_type_str(enum devlink_sb_pool_type value);
+const char *devlink_port_type_str(enum devlink_port_type value);
+const char *devlink_port_flavour_str(enum devlink_port_flavour value);
+const char *devlink_port_fn_state_str(enum devlink_port_fn_state value);
+const char *devlink_port_fn_opstate_str(enum devlink_port_fn_opstate value);
+const char *devlink_port_fn_attr_cap_str(enum devlink_port_fn_attr_cap value);
+const char *
+devlink_sb_threshold_type_str(enum devlink_sb_threshold_type value);
+const char *devlink_eswitch_mode_str(enum devlink_eswitch_mode value);
+const char *
+devlink_eswitch_inline_mode_str(enum devlink_eswitch_inline_mode value);
+const char *
+devlink_eswitch_encap_mode_str(enum devlink_eswitch_encap_mode value);
+const char *devlink_dpipe_match_type_str(enum devlink_dpipe_match_type value);
+const char *
+devlink_dpipe_action_type_str(enum devlink_dpipe_action_type value);
+const char *
+devlink_dpipe_field_mapping_type_str(enum devlink_dpipe_field_mapping_type value);
+const char *devlink_resource_unit_str(enum devlink_resource_unit value);
+const char *devlink_reload_action_str(enum devlink_reload_action value);
+const char *devlink_param_cmode_str(enum devlink_param_cmode value);
+const char *devlink_flash_overwrite_str(enum devlink_flash_overwrite value);
+const char *devlink_trap_action_str(enum devlink_trap_action value);
 
 /* Common nested types */
+struct devlink_dl_dpipe_match {
+       struct {
+               __u32 dpipe_match_type:1;
+               __u32 dpipe_header_id:1;
+               __u32 dpipe_header_global:1;
+               __u32 dpipe_header_index:1;
+               __u32 dpipe_field_id:1;
+       } _present;
+
+       enum devlink_dpipe_match_type dpipe_match_type;
+       __u32 dpipe_header_id;
+       __u8 dpipe_header_global;
+       __u32 dpipe_header_index;
+       __u32 dpipe_field_id;
+};
+
+struct devlink_dl_dpipe_match_value {
+       struct {
+               __u32 dpipe_value_len;
+               __u32 dpipe_value_mask_len;
+               __u32 dpipe_value_mapping:1;
+       } _present;
+
+       unsigned int n_dpipe_match;
+       struct devlink_dl_dpipe_match *dpipe_match;
+       void *dpipe_value;
+       void *dpipe_value_mask;
+       __u32 dpipe_value_mapping;
+};
+
+struct devlink_dl_dpipe_action {
+       struct {
+               __u32 dpipe_action_type:1;
+               __u32 dpipe_header_id:1;
+               __u32 dpipe_header_global:1;
+               __u32 dpipe_header_index:1;
+               __u32 dpipe_field_id:1;
+       } _present;
+
+       enum devlink_dpipe_action_type dpipe_action_type;
+       __u32 dpipe_header_id;
+       __u8 dpipe_header_global;
+       __u32 dpipe_header_index;
+       __u32 dpipe_field_id;
+};
+
+struct devlink_dl_dpipe_action_value {
+       struct {
+               __u32 dpipe_value_len;
+               __u32 dpipe_value_mask_len;
+               __u32 dpipe_value_mapping:1;
+       } _present;
+
+       unsigned int n_dpipe_action;
+       struct devlink_dl_dpipe_action *dpipe_action;
+       void *dpipe_value;
+       void *dpipe_value_mask;
+       __u32 dpipe_value_mapping;
+};
+
+struct devlink_dl_dpipe_field {
+       struct {
+               __u32 dpipe_field_name_len;
+               __u32 dpipe_field_id:1;
+               __u32 dpipe_field_bitwidth:1;
+               __u32 dpipe_field_mapping_type:1;
+       } _present;
+
+       char *dpipe_field_name;
+       __u32 dpipe_field_id;
+       __u32 dpipe_field_bitwidth;
+       enum devlink_dpipe_field_mapping_type dpipe_field_mapping_type;
+};
+
+struct devlink_dl_resource {
+       struct {
+               __u32 resource_name_len;
+               __u32 resource_id:1;
+               __u32 resource_size:1;
+               __u32 resource_size_new:1;
+               __u32 resource_size_valid:1;
+               __u32 resource_size_min:1;
+               __u32 resource_size_max:1;
+               __u32 resource_size_gran:1;
+               __u32 resource_unit:1;
+               __u32 resource_occ:1;
+       } _present;
+
+       char *resource_name;
+       __u64 resource_id;
+       __u64 resource_size;
+       __u64 resource_size_new;
+       __u8 resource_size_valid;
+       __u64 resource_size_min;
+       __u64 resource_size_max;
+       __u64 resource_size_gran;
+       enum devlink_resource_unit resource_unit;
+       __u64 resource_occ;
+};
+
 struct devlink_dl_info_version {
        struct {
                __u32 info_version_name_len;
@@ -30,6 +153,32 @@ struct devlink_dl_info_version {
        char *info_version_value;
 };
 
+struct devlink_dl_fmsg {
+       struct {
+               __u32 fmsg_obj_nest_start:1;
+               __u32 fmsg_pair_nest_start:1;
+               __u32 fmsg_arr_nest_start:1;
+               __u32 fmsg_nest_end:1;
+               __u32 fmsg_obj_name_len;
+       } _present;
+
+       char *fmsg_obj_name;
+};
+
+struct devlink_dl_port_function {
+       struct {
+               __u32 hw_addr_len;
+               __u32 state:1;
+               __u32 opstate:1;
+               __u32 caps:1;
+       } _present;
+
+       void *hw_addr;
+       enum devlink_port_fn_state state;
+       enum devlink_port_fn_opstate opstate;
+       struct nla_bitfield32 caps;
+};
+
 struct devlink_dl_reload_stats_entry {
        struct {
                __u32 reload_stats_limit:1;
@@ -45,21 +194,120 @@ struct devlink_dl_reload_act_stats {
        struct devlink_dl_reload_stats_entry *reload_stats_entry;
 };
 
+struct devlink_dl_selftest_id {
+       struct {
+               __u32 flash:1;
+       } _present;
+};
+
+struct devlink_dl_dpipe_table_matches {
+       unsigned int n_dpipe_match;
+       struct devlink_dl_dpipe_match *dpipe_match;
+};
+
+struct devlink_dl_dpipe_table_actions {
+       unsigned int n_dpipe_action;
+       struct devlink_dl_dpipe_action *dpipe_action;
+};
+
+struct devlink_dl_dpipe_entry_match_values {
+       unsigned int n_dpipe_match_value;
+       struct devlink_dl_dpipe_match_value *dpipe_match_value;
+};
+
+struct devlink_dl_dpipe_entry_action_values {
+       unsigned int n_dpipe_action_value;
+       struct devlink_dl_dpipe_action_value *dpipe_action_value;
+};
+
+struct devlink_dl_dpipe_header_fields {
+       unsigned int n_dpipe_field;
+       struct devlink_dl_dpipe_field *dpipe_field;
+};
+
+struct devlink_dl_resource_list {
+       unsigned int n_resource;
+       struct devlink_dl_resource *resource;
+};
+
 struct devlink_dl_reload_act_info {
        struct {
                __u32 reload_action:1;
        } _present;
 
-       __u8 reload_action;
+       enum devlink_reload_action reload_action;
        unsigned int n_reload_action_stats;
        struct devlink_dl_reload_act_stats *reload_action_stats;
 };
 
+struct devlink_dl_dpipe_table {
+       struct {
+               __u32 dpipe_table_name_len;
+               __u32 dpipe_table_size:1;
+               __u32 dpipe_table_matches:1;
+               __u32 dpipe_table_actions:1;
+               __u32 dpipe_table_counters_enabled:1;
+               __u32 dpipe_table_resource_id:1;
+               __u32 dpipe_table_resource_units:1;
+       } _present;
+
+       char *dpipe_table_name;
+       __u64 dpipe_table_size;
+       struct devlink_dl_dpipe_table_matches dpipe_table_matches;
+       struct devlink_dl_dpipe_table_actions dpipe_table_actions;
+       __u8 dpipe_table_counters_enabled;
+       __u64 dpipe_table_resource_id;
+       __u64 dpipe_table_resource_units;
+};
+
+struct devlink_dl_dpipe_entry {
+       struct {
+               __u32 dpipe_entry_index:1;
+               __u32 dpipe_entry_match_values:1;
+               __u32 dpipe_entry_action_values:1;
+               __u32 dpipe_entry_counter:1;
+       } _present;
+
+       __u64 dpipe_entry_index;
+       struct devlink_dl_dpipe_entry_match_values dpipe_entry_match_values;
+       struct devlink_dl_dpipe_entry_action_values dpipe_entry_action_values;
+       __u64 dpipe_entry_counter;
+};
+
+struct devlink_dl_dpipe_header {
+       struct {
+               __u32 dpipe_header_name_len;
+               __u32 dpipe_header_id:1;
+               __u32 dpipe_header_global:1;
+               __u32 dpipe_header_fields:1;
+       } _present;
+
+       char *dpipe_header_name;
+       __u32 dpipe_header_id;
+       __u8 dpipe_header_global;
+       struct devlink_dl_dpipe_header_fields dpipe_header_fields;
+};
+
 struct devlink_dl_reload_stats {
        unsigned int n_reload_action_info;
        struct devlink_dl_reload_act_info *reload_action_info;
 };
 
+struct devlink_dl_dpipe_tables {
+       unsigned int n_dpipe_table;
+       struct devlink_dl_dpipe_table *dpipe_table;
+};
+
+struct devlink_dl_dpipe_entries {
+       unsigned int n_dpipe_entry;
+       struct devlink_dl_dpipe_entry *dpipe_entry;
+};
+
+struct devlink_dl_dpipe_headers {
+       unsigned int n_dpipe_header;
+       struct devlink_dl_dpipe_header *dpipe_header;
+};
+
 struct devlink_dl_dev_stats {
        struct {
                __u32 reload_stats:1;
@@ -112,14 +360,12 @@ struct devlink_get_rsp {
                __u32 bus_name_len;
                __u32 dev_name_len;
                __u32 reload_failed:1;
-               __u32 reload_action:1;
                __u32 dev_stats:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
        __u8 reload_failed;
-       __u8 reload_action;
        struct devlink_dl_dev_stats dev_stats;
 };
 
@@ -134,7 +380,7 @@ devlink_get(struct ynl_sock *ys, struct devlink_get_req *req);
 /* DEVLINK_CMD_GET - dump */
 struct devlink_get_list {
        struct devlink_get_list *next;
-       struct devlink_get_rsp obj __attribute__ ((aligned (8)));
+       struct devlink_get_rsp obj __attribute__((aligned(8)));
 };
 
 void devlink_get_list_free(struct devlink_get_list *rsp);
@@ -262,7 +508,7 @@ struct devlink_port_get_rsp_dump {
 
 struct devlink_port_get_rsp_list {
        struct devlink_port_get_rsp_list *next;
-       struct devlink_port_get_rsp_dump obj __attribute__ ((aligned (8)));
+       struct devlink_port_get_rsp_dump obj __attribute__((aligned(8)));
 };
 
 void devlink_port_get_rsp_list_free(struct devlink_port_get_rsp_list *rsp);
@@ -271,29 +517,33 @@ struct devlink_port_get_rsp_list *
 devlink_port_get_dump(struct ynl_sock *ys,
                      struct devlink_port_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_SB_GET ============== */
-/* DEVLINK_CMD_SB_GET - do */
-struct devlink_sb_get_req {
+/* ============== DEVLINK_CMD_PORT_SET ============== */
+/* DEVLINK_CMD_PORT_SET - do */
+struct devlink_port_set_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 sb_index:1;
+               __u32 port_index:1;
+               __u32 port_type:1;
+               __u32 port_function:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 sb_index;
+       __u32 port_index;
+       enum devlink_port_type port_type;
+       struct devlink_dl_port_function port_function;
 };
 
-static inline struct devlink_sb_get_req *devlink_sb_get_req_alloc(void)
+static inline struct devlink_port_set_req *devlink_port_set_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_get_req));
+       return calloc(1, sizeof(struct devlink_port_set_req));
 }
-void devlink_sb_get_req_free(struct devlink_sb_get_req *req);
+void devlink_port_set_req_free(struct devlink_port_set_req *req);
 
 static inline void
-devlink_sb_get_req_set_bus_name(struct devlink_sb_get_req *req,
-                               const char *bus_name)
+devlink_port_set_req_set_bus_name(struct devlink_port_set_req *req,
+                                 const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -302,8 +552,8 @@ devlink_sb_get_req_set_bus_name(struct devlink_sb_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_get_req_set_dev_name(struct devlink_sb_get_req *req,
-                               const char *dev_name)
+devlink_port_set_req_set_dev_name(struct devlink_port_set_req *req,
+                                 const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -312,53 +562,89 @@ devlink_sb_get_req_set_dev_name(struct devlink_sb_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_sb_get_req_set_sb_index(struct devlink_sb_get_req *req, __u32 sb_index)
+devlink_port_set_req_set_port_index(struct devlink_port_set_req *req,
+                                   __u32 port_index)
 {
-       req->_present.sb_index = 1;
-       req->sb_index = sb_index;
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_port_set_req_set_port_type(struct devlink_port_set_req *req,
+                                  enum devlink_port_type port_type)
+{
+       req->_present.port_type = 1;
+       req->port_type = port_type;
+}
+static inline void
+devlink_port_set_req_set_port_function_hw_addr(struct devlink_port_set_req *req,
+                                              const void *hw_addr, size_t len)
+{
+       free(req->port_function.hw_addr);
+       req->port_function._present.hw_addr_len = len;
+       req->port_function.hw_addr = malloc(req->port_function._present.hw_addr_len);
+       memcpy(req->port_function.hw_addr, hw_addr, req->port_function._present.hw_addr_len);
+}
+static inline void
+devlink_port_set_req_set_port_function_state(struct devlink_port_set_req *req,
+                                            enum devlink_port_fn_state state)
+{
+       req->_present.port_function = 1;
+       req->port_function._present.state = 1;
+       req->port_function.state = state;
+}
+static inline void
+devlink_port_set_req_set_port_function_opstate(struct devlink_port_set_req *req,
+                                              enum devlink_port_fn_opstate opstate)
+{
+       req->_present.port_function = 1;
+       req->port_function._present.opstate = 1;
+       req->port_function.opstate = opstate;
+}
+static inline void
+devlink_port_set_req_set_port_function_caps(struct devlink_port_set_req *req,
+                                           struct nla_bitfield32 *caps)
+{
+       req->_present.port_function = 1;
+       req->port_function._present.caps = 1;
+       memcpy(&req->port_function.caps, caps, sizeof(struct nla_bitfield32));
 }
-
-struct devlink_sb_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 sb_index:1;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       __u32 sb_index;
-};
-
-void devlink_sb_get_rsp_free(struct devlink_sb_get_rsp *rsp);
 
 /*
- * Get shared buffer instances.
+ * Set devlink port instances.
  */
-struct devlink_sb_get_rsp *
-devlink_sb_get(struct ynl_sock *ys, struct devlink_sb_get_req *req);
+int devlink_port_set(struct ynl_sock *ys, struct devlink_port_set_req *req);
 
-/* DEVLINK_CMD_SB_GET - dump */
-struct devlink_sb_get_req_dump {
+/* ============== DEVLINK_CMD_PORT_NEW ============== */
+/* DEVLINK_CMD_PORT_NEW - do */
+struct devlink_port_new_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 port_flavour:1;
+               __u32 port_pci_pf_number:1;
+               __u32 port_pci_sf_number:1;
+               __u32 port_controller_number:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
+       enum devlink_port_flavour port_flavour;
+       __u16 port_pci_pf_number;
+       __u32 port_pci_sf_number;
+       __u32 port_controller_number;
 };
 
-static inline struct devlink_sb_get_req_dump *
-devlink_sb_get_req_dump_alloc(void)
+static inline struct devlink_port_new_req *devlink_port_new_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_get_req_dump));
+       return calloc(1, sizeof(struct devlink_port_new_req));
 }
-void devlink_sb_get_req_dump_free(struct devlink_sb_get_req_dump *req);
+void devlink_port_new_req_free(struct devlink_port_new_req *req);
 
 static inline void
-devlink_sb_get_req_dump_set_bus_name(struct devlink_sb_get_req_dump *req,
-                                    const char *bus_name)
+devlink_port_new_req_set_bus_name(struct devlink_port_new_req *req,
+                                 const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -367,8 +653,8 @@ devlink_sb_get_req_dump_set_bus_name(struct devlink_sb_get_req_dump *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_get_req_dump_set_dev_name(struct devlink_sb_get_req_dump *req,
-                                    const char *dev_name)
+devlink_port_new_req_set_dev_name(struct devlink_port_new_req *req,
+                                 const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -376,119 +662,85 @@ devlink_sb_get_req_dump_set_dev_name(struct devlink_sb_get_req_dump *req,
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
-
-struct devlink_sb_get_list {
-       struct devlink_sb_get_list *next;
-       struct devlink_sb_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void devlink_sb_get_list_free(struct devlink_sb_get_list *rsp);
-
-struct devlink_sb_get_list *
-devlink_sb_get_dump(struct ynl_sock *ys, struct devlink_sb_get_req_dump *req);
-
-/* ============== DEVLINK_CMD_SB_POOL_GET ============== */
-/* DEVLINK_CMD_SB_POOL_GET - do */
-struct devlink_sb_pool_get_req {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 sb_index:1;
-               __u32 sb_pool_index:1;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       __u32 sb_index;
-       __u16 sb_pool_index;
-};
-
-static inline struct devlink_sb_pool_get_req *
-devlink_sb_pool_get_req_alloc(void)
+static inline void
+devlink_port_new_req_set_port_index(struct devlink_port_new_req *req,
+                                   __u32 port_index)
 {
-       return calloc(1, sizeof(struct devlink_sb_pool_get_req));
+       req->_present.port_index = 1;
+       req->port_index = port_index;
 }
-void devlink_sb_pool_get_req_free(struct devlink_sb_pool_get_req *req);
-
 static inline void
-devlink_sb_pool_get_req_set_bus_name(struct devlink_sb_pool_get_req *req,
-                                    const char *bus_name)
+devlink_port_new_req_set_port_flavour(struct devlink_port_new_req *req,
+                                     enum devlink_port_flavour port_flavour)
 {
-       free(req->bus_name);
-       req->_present.bus_name_len = strlen(bus_name);
-       req->bus_name = malloc(req->_present.bus_name_len + 1);
-       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
-       req->bus_name[req->_present.bus_name_len] = 0;
+       req->_present.port_flavour = 1;
+       req->port_flavour = port_flavour;
 }
 static inline void
-devlink_sb_pool_get_req_set_dev_name(struct devlink_sb_pool_get_req *req,
-                                    const char *dev_name)
+devlink_port_new_req_set_port_pci_pf_number(struct devlink_port_new_req *req,
+                                           __u16 port_pci_pf_number)
 {
-       free(req->dev_name);
-       req->_present.dev_name_len = strlen(dev_name);
-       req->dev_name = malloc(req->_present.dev_name_len + 1);
-       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
-       req->dev_name[req->_present.dev_name_len] = 0;
+       req->_present.port_pci_pf_number = 1;
+       req->port_pci_pf_number = port_pci_pf_number;
 }
 static inline void
-devlink_sb_pool_get_req_set_sb_index(struct devlink_sb_pool_get_req *req,
-                                    __u32 sb_index)
+devlink_port_new_req_set_port_pci_sf_number(struct devlink_port_new_req *req,
+                                           __u32 port_pci_sf_number)
 {
-       req->_present.sb_index = 1;
-       req->sb_index = sb_index;
+       req->_present.port_pci_sf_number = 1;
+       req->port_pci_sf_number = port_pci_sf_number;
 }
 static inline void
-devlink_sb_pool_get_req_set_sb_pool_index(struct devlink_sb_pool_get_req *req,
-                                         __u16 sb_pool_index)
+devlink_port_new_req_set_port_controller_number(struct devlink_port_new_req *req,
+                                               __u32 port_controller_number)
 {
-       req->_present.sb_pool_index = 1;
-       req->sb_pool_index = sb_pool_index;
+       req->_present.port_controller_number = 1;
+       req->port_controller_number = port_controller_number;
 }
 
-struct devlink_sb_pool_get_rsp {
+struct devlink_port_new_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 sb_index:1;
-               __u32 sb_pool_index:1;
+               __u32 port_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 sb_index;
-       __u16 sb_pool_index;
+       __u32 port_index;
 };
 
-void devlink_sb_pool_get_rsp_free(struct devlink_sb_pool_get_rsp *rsp);
+void devlink_port_new_rsp_free(struct devlink_port_new_rsp *rsp);
 
 /*
- * Get shared buffer pool instances.
+ * Create devlink port instances.
  */
-struct devlink_sb_pool_get_rsp *
-devlink_sb_pool_get(struct ynl_sock *ys, struct devlink_sb_pool_get_req *req);
+struct devlink_port_new_rsp *
+devlink_port_new(struct ynl_sock *ys, struct devlink_port_new_req *req);
 
-/* DEVLINK_CMD_SB_POOL_GET - dump */
-struct devlink_sb_pool_get_req_dump {
+/* ============== DEVLINK_CMD_PORT_DEL ============== */
+/* DEVLINK_CMD_PORT_DEL - do */
+struct devlink_port_del_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
 };
 
-static inline struct devlink_sb_pool_get_req_dump *
-devlink_sb_pool_get_req_dump_alloc(void)
+static inline struct devlink_port_del_req *devlink_port_del_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_pool_get_req_dump));
+       return calloc(1, sizeof(struct devlink_port_del_req));
 }
-void
-devlink_sb_pool_get_req_dump_free(struct devlink_sb_pool_get_req_dump *req);
+void devlink_port_del_req_free(struct devlink_port_del_req *req);
 
 static inline void
-devlink_sb_pool_get_req_dump_set_bus_name(struct devlink_sb_pool_get_req_dump *req,
-                                         const char *bus_name)
+devlink_port_del_req_set_bus_name(struct devlink_port_del_req *req,
+                                 const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -497,8 +749,8 @@ devlink_sb_pool_get_req_dump_set_bus_name(struct devlink_sb_pool_get_req_dump *r
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_pool_get_req_dump_set_dev_name(struct devlink_sb_pool_get_req_dump *req,
-                                         const char *dev_name)
+devlink_port_del_req_set_dev_name(struct devlink_port_del_req *req,
+                                 const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -506,47 +758,44 @@ devlink_sb_pool_get_req_dump_set_dev_name(struct devlink_sb_pool_get_req_dump *r
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_port_del_req_set_port_index(struct devlink_port_del_req *req,
+                                   __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
 
-struct devlink_sb_pool_get_list {
-       struct devlink_sb_pool_get_list *next;
-       struct devlink_sb_pool_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void devlink_sb_pool_get_list_free(struct devlink_sb_pool_get_list *rsp);
-
-struct devlink_sb_pool_get_list *
-devlink_sb_pool_get_dump(struct ynl_sock *ys,
-                        struct devlink_sb_pool_get_req_dump *req);
+/*
+ * Delete devlink port instances.
+ */
+int devlink_port_del(struct ynl_sock *ys, struct devlink_port_del_req *req);
 
-/* ============== DEVLINK_CMD_SB_PORT_POOL_GET ============== */
-/* DEVLINK_CMD_SB_PORT_POOL_GET - do */
-struct devlink_sb_port_pool_get_req {
+/* ============== DEVLINK_CMD_PORT_SPLIT ============== */
+/* DEVLINK_CMD_PORT_SPLIT - do */
+struct devlink_port_split_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
                __u32 port_index:1;
-               __u32 sb_index:1;
-               __u32 sb_pool_index:1;
+               __u32 port_split_count:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
        __u32 port_index;
-       __u32 sb_index;
-       __u16 sb_pool_index;
+       __u32 port_split_count;
 };
 
-static inline struct devlink_sb_port_pool_get_req *
-devlink_sb_port_pool_get_req_alloc(void)
+static inline struct devlink_port_split_req *devlink_port_split_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_port_pool_get_req));
+       return calloc(1, sizeof(struct devlink_port_split_req));
 }
-void
-devlink_sb_port_pool_get_req_free(struct devlink_sb_port_pool_get_req *req);
+void devlink_port_split_req_free(struct devlink_port_split_req *req);
 
 static inline void
-devlink_sb_port_pool_get_req_set_bus_name(struct devlink_sb_port_pool_get_req *req,
-                                         const char *bus_name)
+devlink_port_split_req_set_bus_name(struct devlink_port_split_req *req,
+                                   const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -555,8 +804,8 @@ devlink_sb_port_pool_get_req_set_bus_name(struct devlink_sb_port_pool_get_req *r
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_port_pool_get_req_set_dev_name(struct devlink_sb_port_pool_get_req *req,
-                                         const char *dev_name)
+devlink_port_split_req_set_dev_name(struct devlink_port_split_req *req,
+                                   const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -565,75 +814,49 @@ devlink_sb_port_pool_get_req_set_dev_name(struct devlink_sb_port_pool_get_req *r
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_sb_port_pool_get_req_set_port_index(struct devlink_sb_port_pool_get_req *req,
-                                           __u32 port_index)
+devlink_port_split_req_set_port_index(struct devlink_port_split_req *req,
+                                     __u32 port_index)
 {
        req->_present.port_index = 1;
        req->port_index = port_index;
 }
 static inline void
-devlink_sb_port_pool_get_req_set_sb_index(struct devlink_sb_port_pool_get_req *req,
-                                         __u32 sb_index)
-{
-       req->_present.sb_index = 1;
-       req->sb_index = sb_index;
-}
-static inline void
-devlink_sb_port_pool_get_req_set_sb_pool_index(struct devlink_sb_port_pool_get_req *req,
-                                              __u16 sb_pool_index)
+devlink_port_split_req_set_port_split_count(struct devlink_port_split_req *req,
+                                           __u32 port_split_count)
 {
-       req->_present.sb_pool_index = 1;
-       req->sb_pool_index = sb_pool_index;
+       req->_present.port_split_count = 1;
+       req->port_split_count = port_split_count;
 }
 
-struct devlink_sb_port_pool_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 port_index:1;
-               __u32 sb_index:1;
-               __u32 sb_pool_index:1;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       __u32 port_index;
-       __u32 sb_index;
-       __u16 sb_pool_index;
-};
-
-void
-devlink_sb_port_pool_get_rsp_free(struct devlink_sb_port_pool_get_rsp *rsp);
-
 /*
- * Get shared buffer port-pool combinations and threshold.
+ * Split devlink port instances.
  */
-struct devlink_sb_port_pool_get_rsp *
-devlink_sb_port_pool_get(struct ynl_sock *ys,
-                        struct devlink_sb_port_pool_get_req *req);
+int devlink_port_split(struct ynl_sock *ys, struct devlink_port_split_req *req);
 
-/* DEVLINK_CMD_SB_PORT_POOL_GET - dump */
-struct devlink_sb_port_pool_get_req_dump {
+/* ============== DEVLINK_CMD_PORT_UNSPLIT ============== */
+/* DEVLINK_CMD_PORT_UNSPLIT - do */
+struct devlink_port_unsplit_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
 };
 
-static inline struct devlink_sb_port_pool_get_req_dump *
-devlink_sb_port_pool_get_req_dump_alloc(void)
+static inline struct devlink_port_unsplit_req *
+devlink_port_unsplit_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_port_pool_get_req_dump));
+       return calloc(1, sizeof(struct devlink_port_unsplit_req));
 }
-void
-devlink_sb_port_pool_get_req_dump_free(struct devlink_sb_port_pool_get_req_dump *req);
+void devlink_port_unsplit_req_free(struct devlink_port_unsplit_req *req);
 
 static inline void
-devlink_sb_port_pool_get_req_dump_set_bus_name(struct devlink_sb_port_pool_get_req_dump *req,
-                                              const char *bus_name)
+devlink_port_unsplit_req_set_bus_name(struct devlink_port_unsplit_req *req,
+                                     const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -642,8 +865,8 @@ devlink_sb_port_pool_get_req_dump_set_bus_name(struct devlink_sb_port_pool_get_r
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_port_pool_get_req_dump_set_dev_name(struct devlink_sb_port_pool_get_req_dump *req,
-                                              const char *dev_name)
+devlink_port_unsplit_req_set_dev_name(struct devlink_port_unsplit_req *req,
+                                     const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -651,50 +874,43 @@ devlink_sb_port_pool_get_req_dump_set_dev_name(struct devlink_sb_port_pool_get_r
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_port_unsplit_req_set_port_index(struct devlink_port_unsplit_req *req,
+                                       __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
 
-struct devlink_sb_port_pool_get_list {
-       struct devlink_sb_port_pool_get_list *next;
-       struct devlink_sb_port_pool_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void
-devlink_sb_port_pool_get_list_free(struct devlink_sb_port_pool_get_list *rsp);
-
-struct devlink_sb_port_pool_get_list *
-devlink_sb_port_pool_get_dump(struct ynl_sock *ys,
-                             struct devlink_sb_port_pool_get_req_dump *req);
+/*
+ * Unplit devlink port instances.
+ */
+int devlink_port_unsplit(struct ynl_sock *ys,
+                        struct devlink_port_unsplit_req *req);
 
-/* ============== DEVLINK_CMD_SB_TC_POOL_BIND_GET ============== */
-/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
-struct devlink_sb_tc_pool_bind_get_req {
+/* ============== DEVLINK_CMD_SB_GET ============== */
+/* DEVLINK_CMD_SB_GET - do */
+struct devlink_sb_get_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 port_index:1;
                __u32 sb_index:1;
-               __u32 sb_pool_type:1;
-               __u32 sb_tc_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 port_index;
        __u32 sb_index;
-       enum devlink_sb_pool_type sb_pool_type;
-       __u16 sb_tc_index;
 };
 
-static inline struct devlink_sb_tc_pool_bind_get_req *
-devlink_sb_tc_pool_bind_get_req_alloc(void)
+static inline struct devlink_sb_get_req *devlink_sb_get_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req));
+       return calloc(1, sizeof(struct devlink_sb_get_req));
 }
-void
-devlink_sb_tc_pool_bind_get_req_free(struct devlink_sb_tc_pool_bind_get_req *req);
+void devlink_sb_get_req_free(struct devlink_sb_get_req *req);
 
 static inline void
-devlink_sb_tc_pool_bind_get_req_set_bus_name(struct devlink_sb_tc_pool_bind_get_req *req,
-                                            const char *bus_name)
+devlink_sb_get_req_set_bus_name(struct devlink_sb_get_req *req,
+                               const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -703,8 +919,8 @@ devlink_sb_tc_pool_bind_get_req_set_bus_name(struct devlink_sb_tc_pool_bind_get_
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_tc_pool_bind_get_req_set_dev_name(struct devlink_sb_tc_pool_bind_get_req *req,
-                                            const char *dev_name)
+devlink_sb_get_req_set_dev_name(struct devlink_sb_get_req *req,
+                               const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -713,64 +929,34 @@ devlink_sb_tc_pool_bind_get_req_set_dev_name(struct devlink_sb_tc_pool_bind_get_
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_sb_tc_pool_bind_get_req_set_port_index(struct devlink_sb_tc_pool_bind_get_req *req,
-                                              __u32 port_index)
-{
-       req->_present.port_index = 1;
-       req->port_index = port_index;
-}
-static inline void
-devlink_sb_tc_pool_bind_get_req_set_sb_index(struct devlink_sb_tc_pool_bind_get_req *req,
-                                            __u32 sb_index)
+devlink_sb_get_req_set_sb_index(struct devlink_sb_get_req *req, __u32 sb_index)
 {
        req->_present.sb_index = 1;
        req->sb_index = sb_index;
 }
-static inline void
-devlink_sb_tc_pool_bind_get_req_set_sb_pool_type(struct devlink_sb_tc_pool_bind_get_req *req,
-                                                enum devlink_sb_pool_type sb_pool_type)
-{
-       req->_present.sb_pool_type = 1;
-       req->sb_pool_type = sb_pool_type;
-}
-static inline void
-devlink_sb_tc_pool_bind_get_req_set_sb_tc_index(struct devlink_sb_tc_pool_bind_get_req *req,
-                                               __u16 sb_tc_index)
-{
-       req->_present.sb_tc_index = 1;
-       req->sb_tc_index = sb_tc_index;
-}
 
-struct devlink_sb_tc_pool_bind_get_rsp {
+struct devlink_sb_get_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 port_index:1;
                __u32 sb_index:1;
-               __u32 sb_pool_type:1;
-               __u32 sb_tc_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 port_index;
        __u32 sb_index;
-       enum devlink_sb_pool_type sb_pool_type;
-       __u16 sb_tc_index;
 };
 
-void
-devlink_sb_tc_pool_bind_get_rsp_free(struct devlink_sb_tc_pool_bind_get_rsp *rsp);
+void devlink_sb_get_rsp_free(struct devlink_sb_get_rsp *rsp);
 
 /*
- * Get shared buffer port-TC to pool bindings and threshold.
+ * Get shared buffer instances.
  */
-struct devlink_sb_tc_pool_bind_get_rsp *
-devlink_sb_tc_pool_bind_get(struct ynl_sock *ys,
-                           struct devlink_sb_tc_pool_bind_get_req *req);
+struct devlink_sb_get_rsp *
+devlink_sb_get(struct ynl_sock *ys, struct devlink_sb_get_req *req);
 
-/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */
-struct devlink_sb_tc_pool_bind_get_req_dump {
+/* DEVLINK_CMD_SB_GET - dump */
+struct devlink_sb_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
@@ -780,17 +966,16 @@ struct devlink_sb_tc_pool_bind_get_req_dump {
        char *dev_name;
 };
 
-static inline struct devlink_sb_tc_pool_bind_get_req_dump *
-devlink_sb_tc_pool_bind_get_req_dump_alloc(void)
+static inline struct devlink_sb_get_req_dump *
+devlink_sb_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req_dump));
+       return calloc(1, sizeof(struct devlink_sb_get_req_dump));
 }
-void
-devlink_sb_tc_pool_bind_get_req_dump_free(struct devlink_sb_tc_pool_bind_get_req_dump *req);
+void devlink_sb_get_req_dump_free(struct devlink_sb_get_req_dump *req);
 
 static inline void
-devlink_sb_tc_pool_bind_get_req_dump_set_bus_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
-                                                 const char *bus_name)
+devlink_sb_get_req_dump_set_bus_name(struct devlink_sb_get_req_dump *req,
+                                    const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -799,8 +984,8 @@ devlink_sb_tc_pool_bind_get_req_dump_set_bus_name(struct devlink_sb_tc_pool_bind
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_sb_tc_pool_bind_get_req_dump_set_dev_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
-                                                 const char *dev_name)
+devlink_sb_get_req_dump_set_dev_name(struct devlink_sb_get_req_dump *req,
+                                    const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -809,41 +994,42 @@ devlink_sb_tc_pool_bind_get_req_dump_set_dev_name(struct devlink_sb_tc_pool_bind
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 
-struct devlink_sb_tc_pool_bind_get_list {
-       struct devlink_sb_tc_pool_bind_get_list *next;
-       struct devlink_sb_tc_pool_bind_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_sb_get_list {
+       struct devlink_sb_get_list *next;
+       struct devlink_sb_get_rsp obj __attribute__((aligned(8)));
 };
 
-void
-devlink_sb_tc_pool_bind_get_list_free(struct devlink_sb_tc_pool_bind_get_list *rsp);
+void devlink_sb_get_list_free(struct devlink_sb_get_list *rsp);
 
-struct devlink_sb_tc_pool_bind_get_list *
-devlink_sb_tc_pool_bind_get_dump(struct ynl_sock *ys,
-                                struct devlink_sb_tc_pool_bind_get_req_dump *req);
+struct devlink_sb_get_list *
+devlink_sb_get_dump(struct ynl_sock *ys, struct devlink_sb_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_PARAM_GET ============== */
-/* DEVLINK_CMD_PARAM_GET - do */
-struct devlink_param_get_req {
+/* ============== DEVLINK_CMD_SB_POOL_GET ============== */
+/* DEVLINK_CMD_SB_POOL_GET - do */
+struct devlink_sb_pool_get_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 param_name_len;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       char *param_name;
+       __u32 sb_index;
+       __u16 sb_pool_index;
 };
 
-static inline struct devlink_param_get_req *devlink_param_get_req_alloc(void)
+static inline struct devlink_sb_pool_get_req *
+devlink_sb_pool_get_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_param_get_req));
+       return calloc(1, sizeof(struct devlink_sb_pool_get_req));
 }
-void devlink_param_get_req_free(struct devlink_param_get_req *req);
+void devlink_sb_pool_get_req_free(struct devlink_sb_pool_get_req *req);
 
 static inline void
-devlink_param_get_req_set_bus_name(struct devlink_param_get_req *req,
-                                  const char *bus_name)
+devlink_sb_pool_get_req_set_bus_name(struct devlink_sb_pool_get_req *req,
+                                    const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -852,8 +1038,8 @@ devlink_param_get_req_set_bus_name(struct devlink_param_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_param_get_req_set_dev_name(struct devlink_param_get_req *req,
-                                  const char *dev_name)
+devlink_sb_pool_get_req_set_dev_name(struct devlink_sb_pool_get_req *req,
+                                    const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -862,38 +1048,44 @@ devlink_param_get_req_set_dev_name(struct devlink_param_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_param_get_req_set_param_name(struct devlink_param_get_req *req,
-                                    const char *param_name)
+devlink_sb_pool_get_req_set_sb_index(struct devlink_sb_pool_get_req *req,
+                                    __u32 sb_index)
 {
-       free(req->param_name);
-       req->_present.param_name_len = strlen(param_name);
-       req->param_name = malloc(req->_present.param_name_len + 1);
-       memcpy(req->param_name, param_name, req->_present.param_name_len);
-       req->param_name[req->_present.param_name_len] = 0;
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+static inline void
+devlink_sb_pool_get_req_set_sb_pool_index(struct devlink_sb_pool_get_req *req,
+                                         __u16 sb_pool_index)
+{
+       req->_present.sb_pool_index = 1;
+       req->sb_pool_index = sb_pool_index;
 }
 
-struct devlink_param_get_rsp {
+struct devlink_sb_pool_get_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 param_name_len;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       char *param_name;
+       __u32 sb_index;
+       __u16 sb_pool_index;
 };
 
-void devlink_param_get_rsp_free(struct devlink_param_get_rsp *rsp);
+void devlink_sb_pool_get_rsp_free(struct devlink_sb_pool_get_rsp *rsp);
 
 /*
- * Get param instances.
+ * Get shared buffer pool instances.
  */
-struct devlink_param_get_rsp *
-devlink_param_get(struct ynl_sock *ys, struct devlink_param_get_req *req);
+struct devlink_sb_pool_get_rsp *
+devlink_sb_pool_get(struct ynl_sock *ys, struct devlink_sb_pool_get_req *req);
 
-/* DEVLINK_CMD_PARAM_GET - dump */
-struct devlink_param_get_req_dump {
+/* DEVLINK_CMD_SB_POOL_GET - dump */
+struct devlink_sb_pool_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
@@ -903,16 +1095,17 @@ struct devlink_param_get_req_dump {
        char *dev_name;
 };
 
-static inline struct devlink_param_get_req_dump *
-devlink_param_get_req_dump_alloc(void)
+static inline struct devlink_sb_pool_get_req_dump *
+devlink_sb_pool_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_param_get_req_dump));
+       return calloc(1, sizeof(struct devlink_sb_pool_get_req_dump));
 }
-void devlink_param_get_req_dump_free(struct devlink_param_get_req_dump *req);
+void
+devlink_sb_pool_get_req_dump_free(struct devlink_sb_pool_get_req_dump *req);
 
 static inline void
-devlink_param_get_req_dump_set_bus_name(struct devlink_param_get_req_dump *req,
-                                       const char *bus_name)
+devlink_sb_pool_get_req_dump_set_bus_name(struct devlink_sb_pool_get_req_dump *req,
+                                         const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -921,8 +1114,8 @@ devlink_param_get_req_dump_set_bus_name(struct devlink_param_get_req_dump *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_param_get_req_dump_set_dev_name(struct devlink_param_get_req_dump *req,
-                                       const char *dev_name)
+devlink_sb_pool_get_req_dump_set_dev_name(struct devlink_sb_pool_get_req_dump *req,
+                                         const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -931,42 +1124,47 @@ devlink_param_get_req_dump_set_dev_name(struct devlink_param_get_req_dump *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 
-struct devlink_param_get_list {
-       struct devlink_param_get_list *next;
-       struct devlink_param_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_sb_pool_get_list {
+       struct devlink_sb_pool_get_list *next;
+       struct devlink_sb_pool_get_rsp obj __attribute__((aligned(8)));
 };
 
-void devlink_param_get_list_free(struct devlink_param_get_list *rsp);
+void devlink_sb_pool_get_list_free(struct devlink_sb_pool_get_list *rsp);
 
-struct devlink_param_get_list *
-devlink_param_get_dump(struct ynl_sock *ys,
-                      struct devlink_param_get_req_dump *req);
+struct devlink_sb_pool_get_list *
+devlink_sb_pool_get_dump(struct ynl_sock *ys,
+                        struct devlink_sb_pool_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_REGION_GET ============== */
-/* DEVLINK_CMD_REGION_GET - do */
-struct devlink_region_get_req {
+/* ============== DEVLINK_CMD_SB_POOL_SET ============== */
+/* DEVLINK_CMD_SB_POOL_SET - do */
+struct devlink_sb_pool_set_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 port_index:1;
-               __u32 region_name_len;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
+               __u32 sb_pool_threshold_type:1;
+               __u32 sb_pool_size:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 port_index;
-       char *region_name;
+       __u32 sb_index;
+       __u16 sb_pool_index;
+       enum devlink_sb_threshold_type sb_pool_threshold_type;
+       __u32 sb_pool_size;
 };
 
-static inline struct devlink_region_get_req *devlink_region_get_req_alloc(void)
+static inline struct devlink_sb_pool_set_req *
+devlink_sb_pool_set_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_region_get_req));
+       return calloc(1, sizeof(struct devlink_sb_pool_set_req));
 }
-void devlink_region_get_req_free(struct devlink_region_get_req *req);
+void devlink_sb_pool_set_req_free(struct devlink_sb_pool_set_req *req);
 
 static inline void
-devlink_region_get_req_set_bus_name(struct devlink_region_get_req *req,
-                                   const char *bus_name)
+devlink_sb_pool_set_req_set_bus_name(struct devlink_sb_pool_set_req *req,
+                                    const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -975,8 +1173,8 @@ devlink_region_get_req_set_bus_name(struct devlink_region_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_region_get_req_set_dev_name(struct devlink_region_get_req *req,
-                                   const char *dev_name)
+devlink_sb_pool_set_req_set_dev_name(struct devlink_sb_pool_set_req *req,
+                                    const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -985,66 +1183,69 @@ devlink_region_get_req_set_dev_name(struct devlink_region_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_region_get_req_set_port_index(struct devlink_region_get_req *req,
-                                     __u32 port_index)
+devlink_sb_pool_set_req_set_sb_index(struct devlink_sb_pool_set_req *req,
+                                    __u32 sb_index)
 {
-       req->_present.port_index = 1;
-       req->port_index = port_index;
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
 }
 static inline void
-devlink_region_get_req_set_region_name(struct devlink_region_get_req *req,
-                                      const char *region_name)
+devlink_sb_pool_set_req_set_sb_pool_index(struct devlink_sb_pool_set_req *req,
+                                         __u16 sb_pool_index)
 {
-       free(req->region_name);
-       req->_present.region_name_len = strlen(region_name);
-       req->region_name = malloc(req->_present.region_name_len + 1);
-       memcpy(req->region_name, region_name, req->_present.region_name_len);
-       req->region_name[req->_present.region_name_len] = 0;
+       req->_present.sb_pool_index = 1;
+       req->sb_pool_index = sb_pool_index;
+}
+static inline void
+devlink_sb_pool_set_req_set_sb_pool_threshold_type(struct devlink_sb_pool_set_req *req,
+                                                  enum devlink_sb_threshold_type sb_pool_threshold_type)
+{
+       req->_present.sb_pool_threshold_type = 1;
+       req->sb_pool_threshold_type = sb_pool_threshold_type;
+}
+static inline void
+devlink_sb_pool_set_req_set_sb_pool_size(struct devlink_sb_pool_set_req *req,
+                                        __u32 sb_pool_size)
+{
+       req->_present.sb_pool_size = 1;
+       req->sb_pool_size = sb_pool_size;
 }
-
-struct devlink_region_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 port_index:1;
-               __u32 region_name_len;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       __u32 port_index;
-       char *region_name;
-};
-
-void devlink_region_get_rsp_free(struct devlink_region_get_rsp *rsp);
 
 /*
- * Get region instances.
+ * Set shared buffer pool instances.
  */
-struct devlink_region_get_rsp *
-devlink_region_get(struct ynl_sock *ys, struct devlink_region_get_req *req);
+int devlink_sb_pool_set(struct ynl_sock *ys,
+                       struct devlink_sb_pool_set_req *req);
 
-/* DEVLINK_CMD_REGION_GET - dump */
-struct devlink_region_get_req_dump {
+/* ============== DEVLINK_CMD_SB_PORT_POOL_GET ============== */
+/* DEVLINK_CMD_SB_PORT_POOL_GET - do */
+struct devlink_sb_port_pool_get_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
+       __u32 sb_index;
+       __u16 sb_pool_index;
 };
 
-static inline struct devlink_region_get_req_dump *
-devlink_region_get_req_dump_alloc(void)
+static inline struct devlink_sb_port_pool_get_req *
+devlink_sb_port_pool_get_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_region_get_req_dump));
+       return calloc(1, sizeof(struct devlink_sb_port_pool_get_req));
 }
-void devlink_region_get_req_dump_free(struct devlink_region_get_req_dump *req);
+void
+devlink_sb_port_pool_get_req_free(struct devlink_sb_port_pool_get_req *req);
 
 static inline void
-devlink_region_get_req_dump_set_bus_name(struct devlink_region_get_req_dump *req,
-                                        const char *bus_name)
+devlink_sb_port_pool_get_req_set_bus_name(struct devlink_sb_port_pool_get_req *req,
+                                         const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1053,8 +1254,8 @@ devlink_region_get_req_dump_set_bus_name(struct devlink_region_get_req_dump *req
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_region_get_req_dump_set_dev_name(struct devlink_region_get_req_dump *req,
-                                        const char *dev_name)
+devlink_sb_port_pool_get_req_set_dev_name(struct devlink_sb_port_pool_get_req *req,
+                                         const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1062,21 +1263,56 @@ devlink_region_get_req_dump_set_dev_name(struct devlink_region_get_req_dump *req
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_sb_port_pool_get_req_set_port_index(struct devlink_sb_port_pool_get_req *req,
+                                           __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_sb_port_pool_get_req_set_sb_index(struct devlink_sb_port_pool_get_req *req,
+                                         __u32 sb_index)
+{
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+static inline void
+devlink_sb_port_pool_get_req_set_sb_pool_index(struct devlink_sb_port_pool_get_req *req,
+                                              __u16 sb_pool_index)
+{
+       req->_present.sb_pool_index = 1;
+       req->sb_pool_index = sb_pool_index;
+}
 
-struct devlink_region_get_list {
-       struct devlink_region_get_list *next;
-       struct devlink_region_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_sb_port_pool_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       __u32 sb_index;
+       __u16 sb_pool_index;
 };
 
-void devlink_region_get_list_free(struct devlink_region_get_list *rsp);
+void
+devlink_sb_port_pool_get_rsp_free(struct devlink_sb_port_pool_get_rsp *rsp);
 
-struct devlink_region_get_list *
-devlink_region_get_dump(struct ynl_sock *ys,
-                       struct devlink_region_get_req_dump *req);
+/*
+ * Get shared buffer port-pool combinations and threshold.
+ */
+struct devlink_sb_port_pool_get_rsp *
+devlink_sb_port_pool_get(struct ynl_sock *ys,
+                        struct devlink_sb_port_pool_get_req *req);
 
-/* ============== DEVLINK_CMD_INFO_GET ============== */
-/* DEVLINK_CMD_INFO_GET - do */
-struct devlink_info_get_req {
+/* DEVLINK_CMD_SB_PORT_POOL_GET - dump */
+struct devlink_sb_port_pool_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
@@ -1086,15 +1322,17 @@ struct devlink_info_get_req {
        char *dev_name;
 };
 
-static inline struct devlink_info_get_req *devlink_info_get_req_alloc(void)
+static inline struct devlink_sb_port_pool_get_req_dump *
+devlink_sb_port_pool_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_info_get_req));
+       return calloc(1, sizeof(struct devlink_sb_port_pool_get_req_dump));
 }
-void devlink_info_get_req_free(struct devlink_info_get_req *req);
+void
+devlink_sb_port_pool_get_req_dump_free(struct devlink_sb_port_pool_get_req_dump *req);
 
 static inline void
-devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
-                                 const char *bus_name)
+devlink_sb_port_pool_get_req_dump_set_bus_name(struct devlink_sb_port_pool_get_req_dump *req,
+                                              const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1103,8 +1341,8 @@ devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
-                                 const char *dev_name)
+devlink_sb_port_pool_get_req_dump_set_dev_name(struct devlink_sb_port_pool_get_req_dump *req,
+                                              const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1113,71 +1351,49 @@ devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 
-struct devlink_info_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 info_driver_name_len;
-               __u32 info_serial_number_len;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       char *info_driver_name;
-       char *info_serial_number;
-       unsigned int n_info_version_fixed;
-       struct devlink_dl_info_version *info_version_fixed;
-       unsigned int n_info_version_running;
-       struct devlink_dl_info_version *info_version_running;
-       unsigned int n_info_version_stored;
-       struct devlink_dl_info_version *info_version_stored;
-};
-
-void devlink_info_get_rsp_free(struct devlink_info_get_rsp *rsp);
-
-/*
- * Get device information, like driver name, hardware and firmware versions etc.
- */
-struct devlink_info_get_rsp *
-devlink_info_get(struct ynl_sock *ys, struct devlink_info_get_req *req);
-
-/* DEVLINK_CMD_INFO_GET - dump */
-struct devlink_info_get_list {
-       struct devlink_info_get_list *next;
-       struct devlink_info_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_sb_port_pool_get_list {
+       struct devlink_sb_port_pool_get_list *next;
+       struct devlink_sb_port_pool_get_rsp obj __attribute__((aligned(8)));
 };
 
-void devlink_info_get_list_free(struct devlink_info_get_list *rsp);
+void
+devlink_sb_port_pool_get_list_free(struct devlink_sb_port_pool_get_list *rsp);
 
-struct devlink_info_get_list *devlink_info_get_dump(struct ynl_sock *ys);
+struct devlink_sb_port_pool_get_list *
+devlink_sb_port_pool_get_dump(struct ynl_sock *ys,
+                             struct devlink_sb_port_pool_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_HEALTH_REPORTER_GET ============== */
-/* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
-struct devlink_health_reporter_get_req {
+/* ============== DEVLINK_CMD_SB_PORT_POOL_SET ============== */
+/* DEVLINK_CMD_SB_PORT_POOL_SET - do */
+struct devlink_sb_port_pool_set_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
                __u32 port_index:1;
-               __u32 health_reporter_name_len;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
+               __u32 sb_threshold:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
        __u32 port_index;
-       char *health_reporter_name;
+       __u32 sb_index;
+       __u16 sb_pool_index;
+       __u32 sb_threshold;
 };
 
-static inline struct devlink_health_reporter_get_req *
-devlink_health_reporter_get_req_alloc(void)
+static inline struct devlink_sb_port_pool_set_req *
+devlink_sb_port_pool_set_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_health_reporter_get_req));
+       return calloc(1, sizeof(struct devlink_sb_port_pool_set_req));
 }
 void
-devlink_health_reporter_get_req_free(struct devlink_health_reporter_get_req *req);
+devlink_sb_port_pool_set_req_free(struct devlink_sb_port_pool_set_req *req);
 
 static inline void
-devlink_health_reporter_get_req_set_bus_name(struct devlink_health_reporter_get_req *req,
-                                            const char *bus_name)
+devlink_sb_port_pool_set_req_set_bus_name(struct devlink_sb_port_pool_set_req *req,
+                                         const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1186,8 +1402,8 @@ devlink_health_reporter_get_req_set_bus_name(struct devlink_health_reporter_get_
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_health_reporter_get_req_set_dev_name(struct devlink_health_reporter_get_req *req,
-                                            const char *dev_name)
+devlink_sb_port_pool_set_req_set_dev_name(struct devlink_sb_port_pool_set_req *req,
+                                         const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1196,70 +1412,166 @@ devlink_health_reporter_get_req_set_dev_name(struct devlink_health_reporter_get_
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_health_reporter_get_req_set_port_index(struct devlink_health_reporter_get_req *req,
-                                              __u32 port_index)
+devlink_sb_port_pool_set_req_set_port_index(struct devlink_sb_port_pool_set_req *req,
+                                           __u32 port_index)
 {
        req->_present.port_index = 1;
        req->port_index = port_index;
 }
 static inline void
-devlink_health_reporter_get_req_set_health_reporter_name(struct devlink_health_reporter_get_req *req,
-                                                        const char *health_reporter_name)
+devlink_sb_port_pool_set_req_set_sb_index(struct devlink_sb_port_pool_set_req *req,
+                                         __u32 sb_index)
 {
-       free(req->health_reporter_name);
-       req->_present.health_reporter_name_len = strlen(health_reporter_name);
-       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
-       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
-       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
 }
-
-struct devlink_health_reporter_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 port_index:1;
-               __u32 health_reporter_name_len;
+static inline void
+devlink_sb_port_pool_set_req_set_sb_pool_index(struct devlink_sb_port_pool_set_req *req,
+                                              __u16 sb_pool_index)
+{
+       req->_present.sb_pool_index = 1;
+       req->sb_pool_index = sb_pool_index;
+}
+static inline void
+devlink_sb_port_pool_set_req_set_sb_threshold(struct devlink_sb_port_pool_set_req *req,
+                                             __u32 sb_threshold)
+{
+       req->_present.sb_threshold = 1;
+       req->sb_threshold = sb_threshold;
+}
+
+/*
+ * Set shared buffer port-pool combinations and threshold.
+ */
+int devlink_sb_port_pool_set(struct ynl_sock *ys,
+                            struct devlink_sb_port_pool_set_req *req);
+
+/* ============== DEVLINK_CMD_SB_TC_POOL_BIND_GET ============== */
+/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - do */
+struct devlink_sb_tc_pool_bind_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 sb_index:1;
+               __u32 sb_pool_type:1;
+               __u32 sb_tc_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
        __u32 port_index;
-       char *health_reporter_name;
+       __u32 sb_index;
+       enum devlink_sb_pool_type sb_pool_type;
+       __u16 sb_tc_index;
 };
 
+static inline struct devlink_sb_tc_pool_bind_get_req *
+devlink_sb_tc_pool_bind_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req));
+}
 void
-devlink_health_reporter_get_rsp_free(struct devlink_health_reporter_get_rsp *rsp);
+devlink_sb_tc_pool_bind_get_req_free(struct devlink_sb_tc_pool_bind_get_req *req);
 
-/*
- * Get health reporter instances.
- */
-struct devlink_health_reporter_get_rsp *
-devlink_health_reporter_get(struct ynl_sock *ys,
-                           struct devlink_health_reporter_get_req *req);
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_bus_name(struct devlink_sb_tc_pool_bind_get_req *req,
+                                            const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_dev_name(struct devlink_sb_tc_pool_bind_get_req *req,
+                                            const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_port_index(struct devlink_sb_tc_pool_bind_get_req *req,
+                                              __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_sb_index(struct devlink_sb_tc_pool_bind_get_req *req,
+                                            __u32 sb_index)
+{
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_sb_pool_type(struct devlink_sb_tc_pool_bind_get_req *req,
+                                                enum devlink_sb_pool_type sb_pool_type)
+{
+       req->_present.sb_pool_type = 1;
+       req->sb_pool_type = sb_pool_type;
+}
+static inline void
+devlink_sb_tc_pool_bind_get_req_set_sb_tc_index(struct devlink_sb_tc_pool_bind_get_req *req,
+                                               __u16 sb_tc_index)
+{
+       req->_present.sb_tc_index = 1;
+       req->sb_tc_index = sb_tc_index;
+}
 
-/* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
-struct devlink_health_reporter_get_req_dump {
+struct devlink_sb_tc_pool_bind_get_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
                __u32 port_index:1;
+               __u32 sb_index:1;
+               __u32 sb_pool_type:1;
+               __u32 sb_tc_index:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
        __u32 port_index;
+       __u32 sb_index;
+       enum devlink_sb_pool_type sb_pool_type;
+       __u16 sb_tc_index;
 };
 
-static inline struct devlink_health_reporter_get_req_dump *
-devlink_health_reporter_get_req_dump_alloc(void)
+void
+devlink_sb_tc_pool_bind_get_rsp_free(struct devlink_sb_tc_pool_bind_get_rsp *rsp);
+
+/*
+ * Get shared buffer port-TC to pool bindings and threshold.
+ */
+struct devlink_sb_tc_pool_bind_get_rsp *
+devlink_sb_tc_pool_bind_get(struct ynl_sock *ys,
+                           struct devlink_sb_tc_pool_bind_get_req *req);
+
+/* DEVLINK_CMD_SB_TC_POOL_BIND_GET - dump */
+struct devlink_sb_tc_pool_bind_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_sb_tc_pool_bind_get_req_dump *
+devlink_sb_tc_pool_bind_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_health_reporter_get_req_dump));
+       return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_get_req_dump));
 }
 void
-devlink_health_reporter_get_req_dump_free(struct devlink_health_reporter_get_req_dump *req);
+devlink_sb_tc_pool_bind_get_req_dump_free(struct devlink_sb_tc_pool_bind_get_req_dump *req);
 
 static inline void
-devlink_health_reporter_get_req_dump_set_bus_name(struct devlink_health_reporter_get_req_dump *req,
+devlink_sb_tc_pool_bind_get_req_dump_set_bus_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
                                                  const char *bus_name)
 {
        free(req->bus_name);
@@ -1269,7 +1581,7 @@ devlink_health_reporter_get_req_dump_set_bus_name(struct devlink_health_reporter
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_health_reporter_get_req_dump_set_dev_name(struct devlink_health_reporter_get_req_dump *req,
+devlink_sb_tc_pool_bind_get_req_dump_set_dev_name(struct devlink_sb_tc_pool_bind_get_req_dump *req,
                                                  const char *dev_name)
 {
        free(req->dev_name);
@@ -1278,49 +1590,2720 @@ devlink_health_reporter_get_req_dump_set_dev_name(struct devlink_health_reporter
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+
+struct devlink_sb_tc_pool_bind_get_list {
+       struct devlink_sb_tc_pool_bind_get_list *next;
+       struct devlink_sb_tc_pool_bind_get_rsp obj __attribute__((aligned(8)));
+};
+
+void
+devlink_sb_tc_pool_bind_get_list_free(struct devlink_sb_tc_pool_bind_get_list *rsp);
+
+struct devlink_sb_tc_pool_bind_get_list *
+devlink_sb_tc_pool_bind_get_dump(struct ynl_sock *ys,
+                                struct devlink_sb_tc_pool_bind_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_SB_TC_POOL_BIND_SET ============== */
+/* DEVLINK_CMD_SB_TC_POOL_BIND_SET - do */
+struct devlink_sb_tc_pool_bind_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 sb_index:1;
+               __u32 sb_pool_index:1;
+               __u32 sb_pool_type:1;
+               __u32 sb_tc_index:1;
+               __u32 sb_threshold:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       __u32 sb_index;
+       __u16 sb_pool_index;
+       enum devlink_sb_pool_type sb_pool_type;
+       __u16 sb_tc_index;
+       __u32 sb_threshold;
+};
+
+static inline struct devlink_sb_tc_pool_bind_set_req *
+devlink_sb_tc_pool_bind_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_sb_tc_pool_bind_set_req));
+}
+void
+devlink_sb_tc_pool_bind_set_req_free(struct devlink_sb_tc_pool_bind_set_req *req);
+
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_bus_name(struct devlink_sb_tc_pool_bind_set_req *req,
+                                            const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_dev_name(struct devlink_sb_tc_pool_bind_set_req *req,
+                                            const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_port_index(struct devlink_sb_tc_pool_bind_set_req *req,
+                                              __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_sb_index(struct devlink_sb_tc_pool_bind_set_req *req,
+                                            __u32 sb_index)
+{
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_sb_pool_index(struct devlink_sb_tc_pool_bind_set_req *req,
+                                                 __u16 sb_pool_index)
+{
+       req->_present.sb_pool_index = 1;
+       req->sb_pool_index = sb_pool_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_sb_pool_type(struct devlink_sb_tc_pool_bind_set_req *req,
+                                                enum devlink_sb_pool_type sb_pool_type)
+{
+       req->_present.sb_pool_type = 1;
+       req->sb_pool_type = sb_pool_type;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_sb_tc_index(struct devlink_sb_tc_pool_bind_set_req *req,
+                                               __u16 sb_tc_index)
+{
+       req->_present.sb_tc_index = 1;
+       req->sb_tc_index = sb_tc_index;
+}
+static inline void
+devlink_sb_tc_pool_bind_set_req_set_sb_threshold(struct devlink_sb_tc_pool_bind_set_req *req,
+                                                __u32 sb_threshold)
+{
+       req->_present.sb_threshold = 1;
+       req->sb_threshold = sb_threshold;
+}
+
+/*
+ * Set shared buffer port-TC to pool bindings and threshold.
+ */
+int devlink_sb_tc_pool_bind_set(struct ynl_sock *ys,
+                               struct devlink_sb_tc_pool_bind_set_req *req);
+
+/* ============== DEVLINK_CMD_SB_OCC_SNAPSHOT ============== */
+/* DEVLINK_CMD_SB_OCC_SNAPSHOT - do */
+struct devlink_sb_occ_snapshot_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 sb_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 sb_index;
+};
+
+static inline struct devlink_sb_occ_snapshot_req *
+devlink_sb_occ_snapshot_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_sb_occ_snapshot_req));
+}
+void devlink_sb_occ_snapshot_req_free(struct devlink_sb_occ_snapshot_req *req);
+
+static inline void
+devlink_sb_occ_snapshot_req_set_bus_name(struct devlink_sb_occ_snapshot_req *req,
+                                        const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_sb_occ_snapshot_req_set_dev_name(struct devlink_sb_occ_snapshot_req *req,
+                                        const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_sb_occ_snapshot_req_set_sb_index(struct devlink_sb_occ_snapshot_req *req,
+                                        __u32 sb_index)
+{
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+
+/*
+ * Take occupancy snapshot of shared buffer.
+ */
+int devlink_sb_occ_snapshot(struct ynl_sock *ys,
+                           struct devlink_sb_occ_snapshot_req *req);
+
+/* ============== DEVLINK_CMD_SB_OCC_MAX_CLEAR ============== */
+/* DEVLINK_CMD_SB_OCC_MAX_CLEAR - do */
+struct devlink_sb_occ_max_clear_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 sb_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 sb_index;
+};
+
+static inline struct devlink_sb_occ_max_clear_req *
+devlink_sb_occ_max_clear_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_sb_occ_max_clear_req));
+}
+void
+devlink_sb_occ_max_clear_req_free(struct devlink_sb_occ_max_clear_req *req);
+
+static inline void
+devlink_sb_occ_max_clear_req_set_bus_name(struct devlink_sb_occ_max_clear_req *req,
+                                         const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_sb_occ_max_clear_req_set_dev_name(struct devlink_sb_occ_max_clear_req *req,
+                                         const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_sb_occ_max_clear_req_set_sb_index(struct devlink_sb_occ_max_clear_req *req,
+                                         __u32 sb_index)
+{
+       req->_present.sb_index = 1;
+       req->sb_index = sb_index;
+}
+
+/*
+ * Clear occupancy watermarks of shared buffer.
+ */
+int devlink_sb_occ_max_clear(struct ynl_sock *ys,
+                            struct devlink_sb_occ_max_clear_req *req);
+
+/* ============== DEVLINK_CMD_ESWITCH_GET ============== */
+/* DEVLINK_CMD_ESWITCH_GET - do */
+struct devlink_eswitch_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_eswitch_get_req *
+devlink_eswitch_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_eswitch_get_req));
+}
+void devlink_eswitch_get_req_free(struct devlink_eswitch_get_req *req);
+
+static inline void
+devlink_eswitch_get_req_set_bus_name(struct devlink_eswitch_get_req *req,
+                                    const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_eswitch_get_req_set_dev_name(struct devlink_eswitch_get_req *req,
+                                    const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_eswitch_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 eswitch_mode:1;
+               __u32 eswitch_inline_mode:1;
+               __u32 eswitch_encap_mode:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       enum devlink_eswitch_mode eswitch_mode;
+       enum devlink_eswitch_inline_mode eswitch_inline_mode;
+       enum devlink_eswitch_encap_mode eswitch_encap_mode;
+};
+
+void devlink_eswitch_get_rsp_free(struct devlink_eswitch_get_rsp *rsp);
+
+/*
+ * Get eswitch attributes.
+ */
+struct devlink_eswitch_get_rsp *
+devlink_eswitch_get(struct ynl_sock *ys, struct devlink_eswitch_get_req *req);
+
+/* ============== DEVLINK_CMD_ESWITCH_SET ============== */
+/* DEVLINK_CMD_ESWITCH_SET - do */
+struct devlink_eswitch_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 eswitch_mode:1;
+               __u32 eswitch_inline_mode:1;
+               __u32 eswitch_encap_mode:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       enum devlink_eswitch_mode eswitch_mode;
+       enum devlink_eswitch_inline_mode eswitch_inline_mode;
+       enum devlink_eswitch_encap_mode eswitch_encap_mode;
+};
+
+static inline struct devlink_eswitch_set_req *
+devlink_eswitch_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_eswitch_set_req));
+}
+void devlink_eswitch_set_req_free(struct devlink_eswitch_set_req *req);
+
+static inline void
+devlink_eswitch_set_req_set_bus_name(struct devlink_eswitch_set_req *req,
+                                    const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_eswitch_set_req_set_dev_name(struct devlink_eswitch_set_req *req,
+                                    const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_eswitch_set_req_set_eswitch_mode(struct devlink_eswitch_set_req *req,
+                                        enum devlink_eswitch_mode eswitch_mode)
+{
+       req->_present.eswitch_mode = 1;
+       req->eswitch_mode = eswitch_mode;
+}
+static inline void
+devlink_eswitch_set_req_set_eswitch_inline_mode(struct devlink_eswitch_set_req *req,
+                                               enum devlink_eswitch_inline_mode eswitch_inline_mode)
+{
+       req->_present.eswitch_inline_mode = 1;
+       req->eswitch_inline_mode = eswitch_inline_mode;
+}
+static inline void
+devlink_eswitch_set_req_set_eswitch_encap_mode(struct devlink_eswitch_set_req *req,
+                                              enum devlink_eswitch_encap_mode eswitch_encap_mode)
+{
+       req->_present.eswitch_encap_mode = 1;
+       req->eswitch_encap_mode = eswitch_encap_mode;
+}
+
+/*
+ * Set eswitch attributes.
+ */
+int devlink_eswitch_set(struct ynl_sock *ys,
+                       struct devlink_eswitch_set_req *req);
+
+/* ============== DEVLINK_CMD_DPIPE_TABLE_GET ============== */
+/* DEVLINK_CMD_DPIPE_TABLE_GET - do */
+struct devlink_dpipe_table_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_table_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *dpipe_table_name;
+};
+
+static inline struct devlink_dpipe_table_get_req *
+devlink_dpipe_table_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_dpipe_table_get_req));
+}
+void devlink_dpipe_table_get_req_free(struct devlink_dpipe_table_get_req *req);
+
+static inline void
+devlink_dpipe_table_get_req_set_bus_name(struct devlink_dpipe_table_get_req *req,
+                                        const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_dpipe_table_get_req_set_dev_name(struct devlink_dpipe_table_get_req *req,
+                                        const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_dpipe_table_get_req_set_dpipe_table_name(struct devlink_dpipe_table_get_req *req,
+                                                const char *dpipe_table_name)
+{
+       free(req->dpipe_table_name);
+       req->_present.dpipe_table_name_len = strlen(dpipe_table_name);
+       req->dpipe_table_name = malloc(req->_present.dpipe_table_name_len + 1);
+       memcpy(req->dpipe_table_name, dpipe_table_name, req->_present.dpipe_table_name_len);
+       req->dpipe_table_name[req->_present.dpipe_table_name_len] = 0;
+}
+
+struct devlink_dpipe_table_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_tables:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct devlink_dl_dpipe_tables dpipe_tables;
+};
+
+void devlink_dpipe_table_get_rsp_free(struct devlink_dpipe_table_get_rsp *rsp);
+
+/*
+ * Get dpipe table attributes.
+ */
+struct devlink_dpipe_table_get_rsp *
+devlink_dpipe_table_get(struct ynl_sock *ys,
+                       struct devlink_dpipe_table_get_req *req);
+
+/* ============== DEVLINK_CMD_DPIPE_ENTRIES_GET ============== */
+/* DEVLINK_CMD_DPIPE_ENTRIES_GET - do */
+struct devlink_dpipe_entries_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_table_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *dpipe_table_name;
+};
+
+static inline struct devlink_dpipe_entries_get_req *
+devlink_dpipe_entries_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_dpipe_entries_get_req));
+}
+void
+devlink_dpipe_entries_get_req_free(struct devlink_dpipe_entries_get_req *req);
+
+static inline void
+devlink_dpipe_entries_get_req_set_bus_name(struct devlink_dpipe_entries_get_req *req,
+                                          const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_dpipe_entries_get_req_set_dev_name(struct devlink_dpipe_entries_get_req *req,
+                                          const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_dpipe_entries_get_req_set_dpipe_table_name(struct devlink_dpipe_entries_get_req *req,
+                                                  const char *dpipe_table_name)
+{
+       free(req->dpipe_table_name);
+       req->_present.dpipe_table_name_len = strlen(dpipe_table_name);
+       req->dpipe_table_name = malloc(req->_present.dpipe_table_name_len + 1);
+       memcpy(req->dpipe_table_name, dpipe_table_name, req->_present.dpipe_table_name_len);
+       req->dpipe_table_name[req->_present.dpipe_table_name_len] = 0;
+}
+
+struct devlink_dpipe_entries_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_entries:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct devlink_dl_dpipe_entries dpipe_entries;
+};
+
+void
+devlink_dpipe_entries_get_rsp_free(struct devlink_dpipe_entries_get_rsp *rsp);
+
+/*
+ * Get dpipe entries attributes.
+ */
+struct devlink_dpipe_entries_get_rsp *
+devlink_dpipe_entries_get(struct ynl_sock *ys,
+                         struct devlink_dpipe_entries_get_req *req);
+
+/* ============== DEVLINK_CMD_DPIPE_HEADERS_GET ============== */
+/* DEVLINK_CMD_DPIPE_HEADERS_GET - do */
+struct devlink_dpipe_headers_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_dpipe_headers_get_req *
+devlink_dpipe_headers_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_dpipe_headers_get_req));
+}
+void
+devlink_dpipe_headers_get_req_free(struct devlink_dpipe_headers_get_req *req);
+
+static inline void
+devlink_dpipe_headers_get_req_set_bus_name(struct devlink_dpipe_headers_get_req *req,
+                                          const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_dpipe_headers_get_req_set_dev_name(struct devlink_dpipe_headers_get_req *req,
+                                          const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_dpipe_headers_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_headers:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct devlink_dl_dpipe_headers dpipe_headers;
+};
+
+void
+devlink_dpipe_headers_get_rsp_free(struct devlink_dpipe_headers_get_rsp *rsp);
+
+/*
+ * Get dpipe headers attributes.
+ */
+struct devlink_dpipe_headers_get_rsp *
+devlink_dpipe_headers_get(struct ynl_sock *ys,
+                         struct devlink_dpipe_headers_get_req *req);
+
+/* ============== DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET ============== */
+/* DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET - do */
+struct devlink_dpipe_table_counters_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 dpipe_table_name_len;
+               __u32 dpipe_table_counters_enabled:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *dpipe_table_name;
+       __u8 dpipe_table_counters_enabled;
+};
+
+static inline struct devlink_dpipe_table_counters_set_req *
+devlink_dpipe_table_counters_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_dpipe_table_counters_set_req));
+}
+void
+devlink_dpipe_table_counters_set_req_free(struct devlink_dpipe_table_counters_set_req *req);
+
+static inline void
+devlink_dpipe_table_counters_set_req_set_bus_name(struct devlink_dpipe_table_counters_set_req *req,
+                                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_dpipe_table_counters_set_req_set_dev_name(struct devlink_dpipe_table_counters_set_req *req,
+                                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_dpipe_table_counters_set_req_set_dpipe_table_name(struct devlink_dpipe_table_counters_set_req *req,
+                                                         const char *dpipe_table_name)
+{
+       free(req->dpipe_table_name);
+       req->_present.dpipe_table_name_len = strlen(dpipe_table_name);
+       req->dpipe_table_name = malloc(req->_present.dpipe_table_name_len + 1);
+       memcpy(req->dpipe_table_name, dpipe_table_name, req->_present.dpipe_table_name_len);
+       req->dpipe_table_name[req->_present.dpipe_table_name_len] = 0;
+}
+static inline void
+devlink_dpipe_table_counters_set_req_set_dpipe_table_counters_enabled(struct devlink_dpipe_table_counters_set_req *req,
+                                                                     __u8 dpipe_table_counters_enabled)
+{
+       req->_present.dpipe_table_counters_enabled = 1;
+       req->dpipe_table_counters_enabled = dpipe_table_counters_enabled;
+}
+
+/*
+ * Set dpipe counter attributes.
+ */
+int devlink_dpipe_table_counters_set(struct ynl_sock *ys,
+                                    struct devlink_dpipe_table_counters_set_req *req);
+
+/* ============== DEVLINK_CMD_RESOURCE_SET ============== */
+/* DEVLINK_CMD_RESOURCE_SET - do */
+struct devlink_resource_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 resource_id:1;
+               __u32 resource_size:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u64 resource_id;
+       __u64 resource_size;
+};
+
+static inline struct devlink_resource_set_req *
+devlink_resource_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_resource_set_req));
+}
+void devlink_resource_set_req_free(struct devlink_resource_set_req *req);
+
+static inline void
+devlink_resource_set_req_set_bus_name(struct devlink_resource_set_req *req,
+                                     const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_resource_set_req_set_dev_name(struct devlink_resource_set_req *req,
+                                     const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_resource_set_req_set_resource_id(struct devlink_resource_set_req *req,
+                                        __u64 resource_id)
+{
+       req->_present.resource_id = 1;
+       req->resource_id = resource_id;
+}
+static inline void
+devlink_resource_set_req_set_resource_size(struct devlink_resource_set_req *req,
+                                          __u64 resource_size)
+{
+       req->_present.resource_size = 1;
+       req->resource_size = resource_size;
+}
+
+/*
+ * Set resource attributes.
+ */
+int devlink_resource_set(struct ynl_sock *ys,
+                        struct devlink_resource_set_req *req);
+
+/* ============== DEVLINK_CMD_RESOURCE_DUMP ============== */
+/* DEVLINK_CMD_RESOURCE_DUMP - do */
+struct devlink_resource_dump_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_resource_dump_req *
+devlink_resource_dump_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_resource_dump_req));
+}
+void devlink_resource_dump_req_free(struct devlink_resource_dump_req *req);
+
+static inline void
+devlink_resource_dump_req_set_bus_name(struct devlink_resource_dump_req *req,
+                                      const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_resource_dump_req_set_dev_name(struct devlink_resource_dump_req *req,
+                                      const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_resource_dump_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 resource_list:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct devlink_dl_resource_list resource_list;
+};
+
+void devlink_resource_dump_rsp_free(struct devlink_resource_dump_rsp *rsp);
+
+/*
+ * Get resource attributes.
+ */
+struct devlink_resource_dump_rsp *
+devlink_resource_dump(struct ynl_sock *ys,
+                     struct devlink_resource_dump_req *req);
+
+/* ============== DEVLINK_CMD_RELOAD ============== */
+/* DEVLINK_CMD_RELOAD - do */
+struct devlink_reload_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 reload_action:1;
+               __u32 reload_limits:1;
+               __u32 netns_pid:1;
+               __u32 netns_fd:1;
+               __u32 netns_id:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       enum devlink_reload_action reload_action;
+       struct nla_bitfield32 reload_limits;
+       __u32 netns_pid;
+       __u32 netns_fd;
+       __u32 netns_id;
+};
+
+static inline struct devlink_reload_req *devlink_reload_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_reload_req));
+}
+void devlink_reload_req_free(struct devlink_reload_req *req);
+
+static inline void
+devlink_reload_req_set_bus_name(struct devlink_reload_req *req,
+                               const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_reload_req_set_dev_name(struct devlink_reload_req *req,
+                               const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_reload_req_set_reload_action(struct devlink_reload_req *req,
+                                    enum devlink_reload_action reload_action)
+{
+       req->_present.reload_action = 1;
+       req->reload_action = reload_action;
+}
+static inline void
+devlink_reload_req_set_reload_limits(struct devlink_reload_req *req,
+                                    struct nla_bitfield32 *reload_limits)
+{
+       req->_present.reload_limits = 1;
+       memcpy(&req->reload_limits, reload_limits, sizeof(struct nla_bitfield32));
+}
+static inline void
+devlink_reload_req_set_netns_pid(struct devlink_reload_req *req,
+                                __u32 netns_pid)
+{
+       req->_present.netns_pid = 1;
+       req->netns_pid = netns_pid;
+}
+static inline void
+devlink_reload_req_set_netns_fd(struct devlink_reload_req *req, __u32 netns_fd)
+{
+       req->_present.netns_fd = 1;
+       req->netns_fd = netns_fd;
+}
+static inline void
+devlink_reload_req_set_netns_id(struct devlink_reload_req *req, __u32 netns_id)
+{
+       req->_present.netns_id = 1;
+       req->netns_id = netns_id;
+}
+
+struct devlink_reload_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 reload_actions_performed:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct nla_bitfield32 reload_actions_performed;
+};
+
+void devlink_reload_rsp_free(struct devlink_reload_rsp *rsp);
+
+/*
+ * Reload devlink.
+ */
+struct devlink_reload_rsp *
+devlink_reload(struct ynl_sock *ys, struct devlink_reload_req *req);
+
+/* ============== DEVLINK_CMD_PARAM_GET ============== */
+/* DEVLINK_CMD_PARAM_GET - do */
+struct devlink_param_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 param_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *param_name;
+};
+
+static inline struct devlink_param_get_req *devlink_param_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_param_get_req));
+}
+void devlink_param_get_req_free(struct devlink_param_get_req *req);
+
+static inline void
+devlink_param_get_req_set_bus_name(struct devlink_param_get_req *req,
+                                  const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_param_get_req_set_dev_name(struct devlink_param_get_req *req,
+                                  const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_param_get_req_set_param_name(struct devlink_param_get_req *req,
+                                    const char *param_name)
+{
+       free(req->param_name);
+       req->_present.param_name_len = strlen(param_name);
+       req->param_name = malloc(req->_present.param_name_len + 1);
+       memcpy(req->param_name, param_name, req->_present.param_name_len);
+       req->param_name[req->_present.param_name_len] = 0;
+}
+
+struct devlink_param_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 param_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *param_name;
+};
+
+void devlink_param_get_rsp_free(struct devlink_param_get_rsp *rsp);
+
+/*
+ * Get param instances.
+ */
+struct devlink_param_get_rsp *
+devlink_param_get(struct ynl_sock *ys, struct devlink_param_get_req *req);
+
+/* DEVLINK_CMD_PARAM_GET - dump */
+struct devlink_param_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_param_get_req_dump *
+devlink_param_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_param_get_req_dump));
+}
+void devlink_param_get_req_dump_free(struct devlink_param_get_req_dump *req);
+
+static inline void
+devlink_param_get_req_dump_set_bus_name(struct devlink_param_get_req_dump *req,
+                                       const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_param_get_req_dump_set_dev_name(struct devlink_param_get_req_dump *req,
+                                       const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_param_get_list {
+       struct devlink_param_get_list *next;
+       struct devlink_param_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_param_get_list_free(struct devlink_param_get_list *rsp);
+
+struct devlink_param_get_list *
+devlink_param_get_dump(struct ynl_sock *ys,
+                      struct devlink_param_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_PARAM_SET ============== */
+/* DEVLINK_CMD_PARAM_SET - do */
+struct devlink_param_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 param_name_len;
+               __u32 param_type:1;
+               __u32 param_value_cmode:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *param_name;
+       __u8 param_type;
+       enum devlink_param_cmode param_value_cmode;
+};
+
+static inline struct devlink_param_set_req *devlink_param_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_param_set_req));
+}
+void devlink_param_set_req_free(struct devlink_param_set_req *req);
+
+static inline void
+devlink_param_set_req_set_bus_name(struct devlink_param_set_req *req,
+                                  const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_param_set_req_set_dev_name(struct devlink_param_set_req *req,
+                                  const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_param_set_req_set_param_name(struct devlink_param_set_req *req,
+                                    const char *param_name)
+{
+       free(req->param_name);
+       req->_present.param_name_len = strlen(param_name);
+       req->param_name = malloc(req->_present.param_name_len + 1);
+       memcpy(req->param_name, param_name, req->_present.param_name_len);
+       req->param_name[req->_present.param_name_len] = 0;
+}
+static inline void
+devlink_param_set_req_set_param_type(struct devlink_param_set_req *req,
+                                    __u8 param_type)
+{
+       req->_present.param_type = 1;
+       req->param_type = param_type;
+}
+static inline void
+devlink_param_set_req_set_param_value_cmode(struct devlink_param_set_req *req,
+                                           enum devlink_param_cmode param_value_cmode)
+{
+       req->_present.param_value_cmode = 1;
+       req->param_value_cmode = param_value_cmode;
+}
+
+/*
+ * Set param instances.
+ */
+int devlink_param_set(struct ynl_sock *ys, struct devlink_param_set_req *req);
+
+/* ============== DEVLINK_CMD_REGION_GET ============== */
+/* DEVLINK_CMD_REGION_GET - do */
+struct devlink_region_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+};
+
+static inline struct devlink_region_get_req *devlink_region_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_region_get_req));
+}
+void devlink_region_get_req_free(struct devlink_region_get_req *req);
+
+static inline void
+devlink_region_get_req_set_bus_name(struct devlink_region_get_req *req,
+                                   const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_region_get_req_set_dev_name(struct devlink_region_get_req *req,
+                                   const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_region_get_req_set_port_index(struct devlink_region_get_req *req,
+                                     __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_region_get_req_set_region_name(struct devlink_region_get_req *req,
+                                      const char *region_name)
+{
+       free(req->region_name);
+       req->_present.region_name_len = strlen(region_name);
+       req->region_name = malloc(req->_present.region_name_len + 1);
+       memcpy(req->region_name, region_name, req->_present.region_name_len);
+       req->region_name[req->_present.region_name_len] = 0;
+}
+
+struct devlink_region_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+};
+
+void devlink_region_get_rsp_free(struct devlink_region_get_rsp *rsp);
+
+/*
+ * Get region instances.
+ */
+struct devlink_region_get_rsp *
+devlink_region_get(struct ynl_sock *ys, struct devlink_region_get_req *req);
+
+/* DEVLINK_CMD_REGION_GET - dump */
+struct devlink_region_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_region_get_req_dump *
+devlink_region_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_region_get_req_dump));
+}
+void devlink_region_get_req_dump_free(struct devlink_region_get_req_dump *req);
+
+static inline void
+devlink_region_get_req_dump_set_bus_name(struct devlink_region_get_req_dump *req,
+                                        const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_region_get_req_dump_set_dev_name(struct devlink_region_get_req_dump *req,
+                                        const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_region_get_list {
+       struct devlink_region_get_list *next;
+       struct devlink_region_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_region_get_list_free(struct devlink_region_get_list *rsp);
+
+struct devlink_region_get_list *
+devlink_region_get_dump(struct ynl_sock *ys,
+                       struct devlink_region_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_REGION_NEW ============== */
+/* DEVLINK_CMD_REGION_NEW - do */
+struct devlink_region_new_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+               __u32 region_snapshot_id:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+       __u32 region_snapshot_id;
+};
+
+static inline struct devlink_region_new_req *devlink_region_new_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_region_new_req));
+}
+void devlink_region_new_req_free(struct devlink_region_new_req *req);
+
+static inline void
+devlink_region_new_req_set_bus_name(struct devlink_region_new_req *req,
+                                   const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_region_new_req_set_dev_name(struct devlink_region_new_req *req,
+                                   const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_region_new_req_set_port_index(struct devlink_region_new_req *req,
+                                     __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_region_new_req_set_region_name(struct devlink_region_new_req *req,
+                                      const char *region_name)
+{
+       free(req->region_name);
+       req->_present.region_name_len = strlen(region_name);
+       req->region_name = malloc(req->_present.region_name_len + 1);
+       memcpy(req->region_name, region_name, req->_present.region_name_len);
+       req->region_name[req->_present.region_name_len] = 0;
+}
+static inline void
+devlink_region_new_req_set_region_snapshot_id(struct devlink_region_new_req *req,
+                                             __u32 region_snapshot_id)
+{
+       req->_present.region_snapshot_id = 1;
+       req->region_snapshot_id = region_snapshot_id;
+}
+
+struct devlink_region_new_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+               __u32 region_snapshot_id:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+       __u32 region_snapshot_id;
+};
+
+void devlink_region_new_rsp_free(struct devlink_region_new_rsp *rsp);
+
+/*
+ * Create region snapshot.
+ */
+struct devlink_region_new_rsp *
+devlink_region_new(struct ynl_sock *ys, struct devlink_region_new_req *req);
+
+/* ============== DEVLINK_CMD_REGION_DEL ============== */
+/* DEVLINK_CMD_REGION_DEL - do */
+struct devlink_region_del_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+               __u32 region_snapshot_id:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+       __u32 region_snapshot_id;
+};
+
+static inline struct devlink_region_del_req *devlink_region_del_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_region_del_req));
+}
+void devlink_region_del_req_free(struct devlink_region_del_req *req);
+
+static inline void
+devlink_region_del_req_set_bus_name(struct devlink_region_del_req *req,
+                                   const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_region_del_req_set_dev_name(struct devlink_region_del_req *req,
+                                   const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_region_del_req_set_port_index(struct devlink_region_del_req *req,
+                                     __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_region_del_req_set_region_name(struct devlink_region_del_req *req,
+                                      const char *region_name)
+{
+       free(req->region_name);
+       req->_present.region_name_len = strlen(region_name);
+       req->region_name = malloc(req->_present.region_name_len + 1);
+       memcpy(req->region_name, region_name, req->_present.region_name_len);
+       req->region_name[req->_present.region_name_len] = 0;
+}
+static inline void
+devlink_region_del_req_set_region_snapshot_id(struct devlink_region_del_req *req,
+                                             __u32 region_snapshot_id)
+{
+       req->_present.region_snapshot_id = 1;
+       req->region_snapshot_id = region_snapshot_id;
+}
+
+/*
+ * Delete region snapshot.
+ */
+int devlink_region_del(struct ynl_sock *ys, struct devlink_region_del_req *req);
+
+/* ============== DEVLINK_CMD_REGION_READ ============== */
+/* DEVLINK_CMD_REGION_READ - dump */
+struct devlink_region_read_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+               __u32 region_snapshot_id:1;
+               __u32 region_direct:1;
+               __u32 region_chunk_addr:1;
+               __u32 region_chunk_len:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+       __u32 region_snapshot_id;
+       __u64 region_chunk_addr;
+       __u64 region_chunk_len;
+};
+
+static inline struct devlink_region_read_req_dump *
+devlink_region_read_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_region_read_req_dump));
+}
+void
+devlink_region_read_req_dump_free(struct devlink_region_read_req_dump *req);
+
+static inline void
+devlink_region_read_req_dump_set_bus_name(struct devlink_region_read_req_dump *req,
+                                         const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_region_read_req_dump_set_dev_name(struct devlink_region_read_req_dump *req,
+                                         const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_region_read_req_dump_set_port_index(struct devlink_region_read_req_dump *req,
+                                           __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_region_read_req_dump_set_region_name(struct devlink_region_read_req_dump *req,
+                                            const char *region_name)
+{
+       free(req->region_name);
+       req->_present.region_name_len = strlen(region_name);
+       req->region_name = malloc(req->_present.region_name_len + 1);
+       memcpy(req->region_name, region_name, req->_present.region_name_len);
+       req->region_name[req->_present.region_name_len] = 0;
+}
+static inline void
+devlink_region_read_req_dump_set_region_snapshot_id(struct devlink_region_read_req_dump *req,
+                                                   __u32 region_snapshot_id)
+{
+       req->_present.region_snapshot_id = 1;
+       req->region_snapshot_id = region_snapshot_id;
+}
+static inline void
+devlink_region_read_req_dump_set_region_direct(struct devlink_region_read_req_dump *req)
+{
+       req->_present.region_direct = 1;
+}
+static inline void
+devlink_region_read_req_dump_set_region_chunk_addr(struct devlink_region_read_req_dump *req,
+                                                  __u64 region_chunk_addr)
+{
+       req->_present.region_chunk_addr = 1;
+       req->region_chunk_addr = region_chunk_addr;
+}
+static inline void
+devlink_region_read_req_dump_set_region_chunk_len(struct devlink_region_read_req_dump *req,
+                                                 __u64 region_chunk_len)
+{
+       req->_present.region_chunk_len = 1;
+       req->region_chunk_len = region_chunk_len;
+}
+
+struct devlink_region_read_rsp_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 region_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *region_name;
+};
+
+struct devlink_region_read_rsp_list {
+       struct devlink_region_read_rsp_list *next;
+       struct devlink_region_read_rsp_dump obj __attribute__((aligned(8)));
+};
+
+void
+devlink_region_read_rsp_list_free(struct devlink_region_read_rsp_list *rsp);
+
+struct devlink_region_read_rsp_list *
+devlink_region_read_dump(struct ynl_sock *ys,
+                        struct devlink_region_read_req_dump *req);
+
+/* ============== DEVLINK_CMD_PORT_PARAM_GET ============== */
+/* DEVLINK_CMD_PORT_PARAM_GET - do */
+struct devlink_port_param_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+};
+
+static inline struct devlink_port_param_get_req *
+devlink_port_param_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_port_param_get_req));
+}
+void devlink_port_param_get_req_free(struct devlink_port_param_get_req *req);
+
+static inline void
+devlink_port_param_get_req_set_bus_name(struct devlink_port_param_get_req *req,
+                                       const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_port_param_get_req_set_dev_name(struct devlink_port_param_get_req *req,
+                                       const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_port_param_get_req_set_port_index(struct devlink_port_param_get_req *req,
+                                         __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+
+struct devlink_port_param_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+};
+
+void devlink_port_param_get_rsp_free(struct devlink_port_param_get_rsp *rsp);
+
+/*
+ * Get port param instances.
+ */
+struct devlink_port_param_get_rsp *
+devlink_port_param_get(struct ynl_sock *ys,
+                      struct devlink_port_param_get_req *req);
+
+/* DEVLINK_CMD_PORT_PARAM_GET - dump */
+struct devlink_port_param_get_list {
+       struct devlink_port_param_get_list *next;
+       struct devlink_port_param_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_port_param_get_list_free(struct devlink_port_param_get_list *rsp);
+
+struct devlink_port_param_get_list *
+devlink_port_param_get_dump(struct ynl_sock *ys);
+
+/* ============== DEVLINK_CMD_PORT_PARAM_SET ============== */
+/* DEVLINK_CMD_PORT_PARAM_SET - do */
+struct devlink_port_param_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+};
+
+static inline struct devlink_port_param_set_req *
+devlink_port_param_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_port_param_set_req));
+}
+void devlink_port_param_set_req_free(struct devlink_port_param_set_req *req);
+
+static inline void
+devlink_port_param_set_req_set_bus_name(struct devlink_port_param_set_req *req,
+                                       const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_port_param_set_req_set_dev_name(struct devlink_port_param_set_req *req,
+                                       const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_port_param_set_req_set_port_index(struct devlink_port_param_set_req *req,
+                                         __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+
+/*
+ * Set port param instances.
+ */
+int devlink_port_param_set(struct ynl_sock *ys,
+                          struct devlink_port_param_set_req *req);
+
+/* ============== DEVLINK_CMD_INFO_GET ============== */
+/* DEVLINK_CMD_INFO_GET - do */
+struct devlink_info_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_info_get_req *devlink_info_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_info_get_req));
+}
+void devlink_info_get_req_free(struct devlink_info_get_req *req);
+
+static inline void
+devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
+                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
+                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_info_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 info_driver_name_len;
+               __u32 info_serial_number_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *info_driver_name;
+       char *info_serial_number;
+       unsigned int n_info_version_fixed;
+       struct devlink_dl_info_version *info_version_fixed;
+       unsigned int n_info_version_running;
+       struct devlink_dl_info_version *info_version_running;
+       unsigned int n_info_version_stored;
+       struct devlink_dl_info_version *info_version_stored;
+};
+
+void devlink_info_get_rsp_free(struct devlink_info_get_rsp *rsp);
+
+/*
+ * Get device information, like driver name, hardware and firmware versions etc.
+ */
+struct devlink_info_get_rsp *
+devlink_info_get(struct ynl_sock *ys, struct devlink_info_get_req *req);
+
+/* DEVLINK_CMD_INFO_GET - dump */
+struct devlink_info_get_list {
+       struct devlink_info_get_list *next;
+       struct devlink_info_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_info_get_list_free(struct devlink_info_get_list *rsp);
+
+struct devlink_info_get_list *devlink_info_get_dump(struct ynl_sock *ys);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_GET ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_GET - do */
+struct devlink_health_reporter_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+static inline struct devlink_health_reporter_get_req *
+devlink_health_reporter_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_get_req));
+}
+void
+devlink_health_reporter_get_req_free(struct devlink_health_reporter_get_req *req);
+
+static inline void
+devlink_health_reporter_get_req_set_bus_name(struct devlink_health_reporter_get_req *req,
+                                            const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_get_req_set_dev_name(struct devlink_health_reporter_get_req *req,
+                                            const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_get_req_set_port_index(struct devlink_health_reporter_get_req *req,
+                                              __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_get_req_set_health_reporter_name(struct devlink_health_reporter_get_req *req,
+                                                        const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+
+struct devlink_health_reporter_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+void
+devlink_health_reporter_get_rsp_free(struct devlink_health_reporter_get_rsp *rsp);
+
+/*
+ * Get health reporter instances.
+ */
+struct devlink_health_reporter_get_rsp *
+devlink_health_reporter_get(struct ynl_sock *ys,
+                           struct devlink_health_reporter_get_req *req);
+
+/* DEVLINK_CMD_HEALTH_REPORTER_GET - dump */
+struct devlink_health_reporter_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+};
+
+static inline struct devlink_health_reporter_get_req_dump *
+devlink_health_reporter_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_get_req_dump));
+}
+void
+devlink_health_reporter_get_req_dump_free(struct devlink_health_reporter_get_req_dump *req);
+
+static inline void
+devlink_health_reporter_get_req_dump_set_bus_name(struct devlink_health_reporter_get_req_dump *req,
+                                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_get_req_dump_set_dev_name(struct devlink_health_reporter_get_req_dump *req,
+                                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_get_req_dump_set_port_index(struct devlink_health_reporter_get_req_dump *req,
+                                                   __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+
+struct devlink_health_reporter_get_list {
+       struct devlink_health_reporter_get_list *next;
+       struct devlink_health_reporter_get_rsp obj __attribute__((aligned(8)));
+};
+
+void
+devlink_health_reporter_get_list_free(struct devlink_health_reporter_get_list *rsp);
+
+struct devlink_health_reporter_get_list *
+devlink_health_reporter_get_dump(struct ynl_sock *ys,
+                                struct devlink_health_reporter_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_SET ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_SET - do */
+struct devlink_health_reporter_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+               __u32 health_reporter_graceful_period:1;
+               __u32 health_reporter_auto_recover:1;
+               __u32 health_reporter_auto_dump:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+       __u64 health_reporter_graceful_period;
+       __u8 health_reporter_auto_recover;
+       __u8 health_reporter_auto_dump;
+};
+
+static inline struct devlink_health_reporter_set_req *
+devlink_health_reporter_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_set_req));
+}
+void
+devlink_health_reporter_set_req_free(struct devlink_health_reporter_set_req *req);
+
+static inline void
+devlink_health_reporter_set_req_set_bus_name(struct devlink_health_reporter_set_req *req,
+                                            const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_set_req_set_dev_name(struct devlink_health_reporter_set_req *req,
+                                            const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_set_req_set_port_index(struct devlink_health_reporter_set_req *req,
+                                              __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_set_req_set_health_reporter_name(struct devlink_health_reporter_set_req *req,
+                                                        const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_set_req_set_health_reporter_graceful_period(struct devlink_health_reporter_set_req *req,
+                                                                   __u64 health_reporter_graceful_period)
+{
+       req->_present.health_reporter_graceful_period = 1;
+       req->health_reporter_graceful_period = health_reporter_graceful_period;
+}
+static inline void
+devlink_health_reporter_set_req_set_health_reporter_auto_recover(struct devlink_health_reporter_set_req *req,
+                                                                __u8 health_reporter_auto_recover)
+{
+       req->_present.health_reporter_auto_recover = 1;
+       req->health_reporter_auto_recover = health_reporter_auto_recover;
+}
+static inline void
+devlink_health_reporter_set_req_set_health_reporter_auto_dump(struct devlink_health_reporter_set_req *req,
+                                                             __u8 health_reporter_auto_dump)
+{
+       req->_present.health_reporter_auto_dump = 1;
+       req->health_reporter_auto_dump = health_reporter_auto_dump;
+}
+
+/*
+ * Set health reporter instances.
+ */
+int devlink_health_reporter_set(struct ynl_sock *ys,
+                               struct devlink_health_reporter_set_req *req);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_RECOVER ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_RECOVER - do */
+struct devlink_health_reporter_recover_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+static inline struct devlink_health_reporter_recover_req *
+devlink_health_reporter_recover_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_recover_req));
+}
+void
+devlink_health_reporter_recover_req_free(struct devlink_health_reporter_recover_req *req);
+
+static inline void
+devlink_health_reporter_recover_req_set_bus_name(struct devlink_health_reporter_recover_req *req,
+                                                const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_recover_req_set_dev_name(struct devlink_health_reporter_recover_req *req,
+                                                const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_recover_req_set_port_index(struct devlink_health_reporter_recover_req *req,
+                                                  __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_recover_req_set_health_reporter_name(struct devlink_health_reporter_recover_req *req,
+                                                            const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+
+/*
+ * Recover health reporter instances.
+ */
+int devlink_health_reporter_recover(struct ynl_sock *ys,
+                                   struct devlink_health_reporter_recover_req *req);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE - do */
+struct devlink_health_reporter_diagnose_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+static inline struct devlink_health_reporter_diagnose_req *
+devlink_health_reporter_diagnose_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_diagnose_req));
+}
+void
+devlink_health_reporter_diagnose_req_free(struct devlink_health_reporter_diagnose_req *req);
+
+static inline void
+devlink_health_reporter_diagnose_req_set_bus_name(struct devlink_health_reporter_diagnose_req *req,
+                                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_diagnose_req_set_dev_name(struct devlink_health_reporter_diagnose_req *req,
+                                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_diagnose_req_set_port_index(struct devlink_health_reporter_diagnose_req *req,
+                                                   __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_diagnose_req_set_health_reporter_name(struct devlink_health_reporter_diagnose_req *req,
+                                                             const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+
+/*
+ * Diagnose health reporter instances.
+ */
+int devlink_health_reporter_diagnose(struct ynl_sock *ys,
+                                    struct devlink_health_reporter_diagnose_req *req);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET - dump */
+struct devlink_health_reporter_dump_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+static inline struct devlink_health_reporter_dump_get_req_dump *
+devlink_health_reporter_dump_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_dump_get_req_dump));
+}
+void
+devlink_health_reporter_dump_get_req_dump_free(struct devlink_health_reporter_dump_get_req_dump *req);
+
+static inline void
+devlink_health_reporter_dump_get_req_dump_set_bus_name(struct devlink_health_reporter_dump_get_req_dump *req,
+                                                      const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_dump_get_req_dump_set_dev_name(struct devlink_health_reporter_dump_get_req_dump *req,
+                                                      const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_dump_get_req_dump_set_port_index(struct devlink_health_reporter_dump_get_req_dump *req,
+                                                        __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_dump_get_req_dump_set_health_reporter_name(struct devlink_health_reporter_dump_get_req_dump *req,
+                                                                  const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+
+struct devlink_health_reporter_dump_get_rsp_dump {
+       struct {
+               __u32 fmsg:1;
+       } _present;
+
+       struct devlink_dl_fmsg fmsg;
+};
+
+struct devlink_health_reporter_dump_get_rsp_list {
+       struct devlink_health_reporter_dump_get_rsp_list *next;
+       struct devlink_health_reporter_dump_get_rsp_dump obj __attribute__((aligned(8)));
+};
+
+void
+devlink_health_reporter_dump_get_rsp_list_free(struct devlink_health_reporter_dump_get_rsp_list *rsp);
+
+struct devlink_health_reporter_dump_get_rsp_list *
+devlink_health_reporter_dump_get_dump(struct ynl_sock *ys,
+                                     struct devlink_health_reporter_dump_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR - do */
+struct devlink_health_reporter_dump_clear_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
+};
+
+static inline struct devlink_health_reporter_dump_clear_req *
+devlink_health_reporter_dump_clear_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_health_reporter_dump_clear_req));
+}
+void
+devlink_health_reporter_dump_clear_req_free(struct devlink_health_reporter_dump_clear_req *req);
+
+static inline void
+devlink_health_reporter_dump_clear_req_set_bus_name(struct devlink_health_reporter_dump_clear_req *req,
+                                                   const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_dump_clear_req_set_dev_name(struct devlink_health_reporter_dump_clear_req *req,
+                                                   const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_health_reporter_dump_clear_req_set_port_index(struct devlink_health_reporter_dump_clear_req *req,
+                                                     __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_dump_clear_req_set_health_reporter_name(struct devlink_health_reporter_dump_clear_req *req,
+                                                               const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
+
+/*
+ * Clear dump of health reporter instances.
+ */
+int devlink_health_reporter_dump_clear(struct ynl_sock *ys,
+                                      struct devlink_health_reporter_dump_clear_req *req);
+
+/* ============== DEVLINK_CMD_FLASH_UPDATE ============== */
+/* DEVLINK_CMD_FLASH_UPDATE - do */
+struct devlink_flash_update_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 flash_update_file_name_len;
+               __u32 flash_update_component_len;
+               __u32 flash_update_overwrite_mask:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *flash_update_file_name;
+       char *flash_update_component;
+       struct nla_bitfield32 flash_update_overwrite_mask;
+};
+
+static inline struct devlink_flash_update_req *
+devlink_flash_update_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_flash_update_req));
+}
+void devlink_flash_update_req_free(struct devlink_flash_update_req *req);
+
+static inline void
+devlink_flash_update_req_set_bus_name(struct devlink_flash_update_req *req,
+                                     const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_flash_update_req_set_dev_name(struct devlink_flash_update_req *req,
+                                     const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_flash_update_req_set_flash_update_file_name(struct devlink_flash_update_req *req,
+                                                   const char *flash_update_file_name)
+{
+       free(req->flash_update_file_name);
+       req->_present.flash_update_file_name_len = strlen(flash_update_file_name);
+       req->flash_update_file_name = malloc(req->_present.flash_update_file_name_len + 1);
+       memcpy(req->flash_update_file_name, flash_update_file_name, req->_present.flash_update_file_name_len);
+       req->flash_update_file_name[req->_present.flash_update_file_name_len] = 0;
+}
+static inline void
+devlink_flash_update_req_set_flash_update_component(struct devlink_flash_update_req *req,
+                                                   const char *flash_update_component)
+{
+       free(req->flash_update_component);
+       req->_present.flash_update_component_len = strlen(flash_update_component);
+       req->flash_update_component = malloc(req->_present.flash_update_component_len + 1);
+       memcpy(req->flash_update_component, flash_update_component, req->_present.flash_update_component_len);
+       req->flash_update_component[req->_present.flash_update_component_len] = 0;
+}
+static inline void
+devlink_flash_update_req_set_flash_update_overwrite_mask(struct devlink_flash_update_req *req,
+                                                        struct nla_bitfield32 *flash_update_overwrite_mask)
+{
+       req->_present.flash_update_overwrite_mask = 1;
+       memcpy(&req->flash_update_overwrite_mask, flash_update_overwrite_mask, sizeof(struct nla_bitfield32));
+}
+
+/*
+ * Flash update devlink instances.
+ */
+int devlink_flash_update(struct ynl_sock *ys,
+                        struct devlink_flash_update_req *req);
+
+/* ============== DEVLINK_CMD_TRAP_GET ============== */
+/* DEVLINK_CMD_TRAP_GET - do */
+struct devlink_trap_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_name;
+};
+
+static inline struct devlink_trap_get_req *devlink_trap_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_get_req));
+}
+void devlink_trap_get_req_free(struct devlink_trap_get_req *req);
+
+static inline void
+devlink_trap_get_req_set_bus_name(struct devlink_trap_get_req *req,
+                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_get_req_set_dev_name(struct devlink_trap_get_req *req,
+                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_trap_get_req_set_trap_name(struct devlink_trap_get_req *req,
+                                  const char *trap_name)
+{
+       free(req->trap_name);
+       req->_present.trap_name_len = strlen(trap_name);
+       req->trap_name = malloc(req->_present.trap_name_len + 1);
+       memcpy(req->trap_name, trap_name, req->_present.trap_name_len);
+       req->trap_name[req->_present.trap_name_len] = 0;
+}
+
+struct devlink_trap_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_name;
+};
+
+void devlink_trap_get_rsp_free(struct devlink_trap_get_rsp *rsp);
+
+/*
+ * Get trap instances.
+ */
+struct devlink_trap_get_rsp *
+devlink_trap_get(struct ynl_sock *ys, struct devlink_trap_get_req *req);
+
+/* DEVLINK_CMD_TRAP_GET - dump */
+struct devlink_trap_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_trap_get_req_dump *
+devlink_trap_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_get_req_dump));
+}
+void devlink_trap_get_req_dump_free(struct devlink_trap_get_req_dump *req);
+
+static inline void
+devlink_trap_get_req_dump_set_bus_name(struct devlink_trap_get_req_dump *req,
+                                      const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_get_req_dump_set_dev_name(struct devlink_trap_get_req_dump *req,
+                                      const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_trap_get_list {
+       struct devlink_trap_get_list *next;
+       struct devlink_trap_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_trap_get_list_free(struct devlink_trap_get_list *rsp);
+
+struct devlink_trap_get_list *
+devlink_trap_get_dump(struct ynl_sock *ys,
+                     struct devlink_trap_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_TRAP_SET ============== */
+/* DEVLINK_CMD_TRAP_SET - do */
+struct devlink_trap_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_name_len;
+               __u32 trap_action:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_name;
+       enum devlink_trap_action trap_action;
+};
+
+static inline struct devlink_trap_set_req *devlink_trap_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_set_req));
+}
+void devlink_trap_set_req_free(struct devlink_trap_set_req *req);
+
+static inline void
+devlink_trap_set_req_set_bus_name(struct devlink_trap_set_req *req,
+                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_set_req_set_dev_name(struct devlink_trap_set_req *req,
+                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_trap_set_req_set_trap_name(struct devlink_trap_set_req *req,
+                                  const char *trap_name)
+{
+       free(req->trap_name);
+       req->_present.trap_name_len = strlen(trap_name);
+       req->trap_name = malloc(req->_present.trap_name_len + 1);
+       memcpy(req->trap_name, trap_name, req->_present.trap_name_len);
+       req->trap_name[req->_present.trap_name_len] = 0;
+}
+static inline void
+devlink_trap_set_req_set_trap_action(struct devlink_trap_set_req *req,
+                                    enum devlink_trap_action trap_action)
+{
+       req->_present.trap_action = 1;
+       req->trap_action = trap_action;
+}
+
+/*
+ * Set trap instances.
+ */
+int devlink_trap_set(struct ynl_sock *ys, struct devlink_trap_set_req *req);
+
+/* ============== DEVLINK_CMD_TRAP_GROUP_GET ============== */
+/* DEVLINK_CMD_TRAP_GROUP_GET - do */
+struct devlink_trap_group_get_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_group_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_group_name;
+};
+
+static inline struct devlink_trap_group_get_req *
+devlink_trap_group_get_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_group_get_req));
+}
+void devlink_trap_group_get_req_free(struct devlink_trap_group_get_req *req);
+
+static inline void
+devlink_trap_group_get_req_set_bus_name(struct devlink_trap_group_get_req *req,
+                                       const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_group_get_req_set_dev_name(struct devlink_trap_group_get_req *req,
+                                       const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_trap_group_get_req_set_trap_group_name(struct devlink_trap_group_get_req *req,
+                                              const char *trap_group_name)
+{
+       free(req->trap_group_name);
+       req->_present.trap_group_name_len = strlen(trap_group_name);
+       req->trap_group_name = malloc(req->_present.trap_group_name_len + 1);
+       memcpy(req->trap_group_name, trap_group_name, req->_present.trap_group_name_len);
+       req->trap_group_name[req->_present.trap_group_name_len] = 0;
+}
+
+struct devlink_trap_group_get_rsp {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_group_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_group_name;
+};
+
+void devlink_trap_group_get_rsp_free(struct devlink_trap_group_get_rsp *rsp);
+
+/*
+ * Get trap group instances.
+ */
+struct devlink_trap_group_get_rsp *
+devlink_trap_group_get(struct ynl_sock *ys,
+                      struct devlink_trap_group_get_req *req);
+
+/* DEVLINK_CMD_TRAP_GROUP_GET - dump */
+struct devlink_trap_group_get_req_dump {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+};
+
+static inline struct devlink_trap_group_get_req_dump *
+devlink_trap_group_get_req_dump_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_group_get_req_dump));
+}
+void
+devlink_trap_group_get_req_dump_free(struct devlink_trap_group_get_req_dump *req);
+
+static inline void
+devlink_trap_group_get_req_dump_set_bus_name(struct devlink_trap_group_get_req_dump *req,
+                                            const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_group_get_req_dump_set_dev_name(struct devlink_trap_group_get_req_dump *req,
+                                            const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+
+struct devlink_trap_group_get_list {
+       struct devlink_trap_group_get_list *next;
+       struct devlink_trap_group_get_rsp obj __attribute__((aligned(8)));
+};
+
+void devlink_trap_group_get_list_free(struct devlink_trap_group_get_list *rsp);
+
+struct devlink_trap_group_get_list *
+devlink_trap_group_get_dump(struct ynl_sock *ys,
+                           struct devlink_trap_group_get_req_dump *req);
+
+/* ============== DEVLINK_CMD_TRAP_GROUP_SET ============== */
+/* DEVLINK_CMD_TRAP_GROUP_SET - do */
+struct devlink_trap_group_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 trap_group_name_len;
+               __u32 trap_action:1;
+               __u32 trap_policer_id:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       char *trap_group_name;
+       enum devlink_trap_action trap_action;
+       __u32 trap_policer_id;
+};
+
+static inline struct devlink_trap_group_set_req *
+devlink_trap_group_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_trap_group_set_req));
+}
+void devlink_trap_group_set_req_free(struct devlink_trap_group_set_req *req);
+
+static inline void
+devlink_trap_group_set_req_set_bus_name(struct devlink_trap_group_set_req *req,
+                                       const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_trap_group_set_req_set_dev_name(struct devlink_trap_group_set_req *req,
+                                       const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
 static inline void
-devlink_health_reporter_get_req_dump_set_port_index(struct devlink_health_reporter_get_req_dump *req,
-                                                   __u32 port_index)
+devlink_trap_group_set_req_set_trap_group_name(struct devlink_trap_group_set_req *req,
+                                              const char *trap_group_name)
 {
-       req->_present.port_index = 1;
-       req->port_index = port_index;
+       free(req->trap_group_name);
+       req->_present.trap_group_name_len = strlen(trap_group_name);
+       req->trap_group_name = malloc(req->_present.trap_group_name_len + 1);
+       memcpy(req->trap_group_name, trap_group_name, req->_present.trap_group_name_len);
+       req->trap_group_name[req->_present.trap_group_name_len] = 0;
+}
+static inline void
+devlink_trap_group_set_req_set_trap_action(struct devlink_trap_group_set_req *req,
+                                          enum devlink_trap_action trap_action)
+{
+       req->_present.trap_action = 1;
+       req->trap_action = trap_action;
+}
+static inline void
+devlink_trap_group_set_req_set_trap_policer_id(struct devlink_trap_group_set_req *req,
+                                              __u32 trap_policer_id)
+{
+       req->_present.trap_policer_id = 1;
+       req->trap_policer_id = trap_policer_id;
 }
 
-struct devlink_health_reporter_get_list {
-       struct devlink_health_reporter_get_list *next;
-       struct devlink_health_reporter_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void
-devlink_health_reporter_get_list_free(struct devlink_health_reporter_get_list *rsp);
-
-struct devlink_health_reporter_get_list *
-devlink_health_reporter_get_dump(struct ynl_sock *ys,
-                                struct devlink_health_reporter_get_req_dump *req);
+/*
+ * Set trap group instances.
+ */
+int devlink_trap_group_set(struct ynl_sock *ys,
+                          struct devlink_trap_group_set_req *req);
 
-/* ============== DEVLINK_CMD_TRAP_GET ============== */
-/* DEVLINK_CMD_TRAP_GET - do */
-struct devlink_trap_get_req {
+/* ============== DEVLINK_CMD_TRAP_POLICER_GET ============== */
+/* DEVLINK_CMD_TRAP_POLICER_GET - do */
+struct devlink_trap_policer_get_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 trap_name_len;
+               __u32 trap_policer_id:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       char *trap_name;
+       __u32 trap_policer_id;
 };
 
-static inline struct devlink_trap_get_req *devlink_trap_get_req_alloc(void)
+static inline struct devlink_trap_policer_get_req *
+devlink_trap_policer_get_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_get_req));
+       return calloc(1, sizeof(struct devlink_trap_policer_get_req));
 }
-void devlink_trap_get_req_free(struct devlink_trap_get_req *req);
+void
+devlink_trap_policer_get_req_free(struct devlink_trap_policer_get_req *req);
 
 static inline void
-devlink_trap_get_req_set_bus_name(struct devlink_trap_get_req *req,
-                                 const char *bus_name)
+devlink_trap_policer_get_req_set_bus_name(struct devlink_trap_policer_get_req *req,
+                                         const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1329,8 +4312,8 @@ devlink_trap_get_req_set_bus_name(struct devlink_trap_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_get_req_set_dev_name(struct devlink_trap_get_req *req,
-                                 const char *dev_name)
+devlink_trap_policer_get_req_set_dev_name(struct devlink_trap_policer_get_req *req,
+                                         const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1339,38 +4322,37 @@ devlink_trap_get_req_set_dev_name(struct devlink_trap_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_trap_get_req_set_trap_name(struct devlink_trap_get_req *req,
-                                  const char *trap_name)
+devlink_trap_policer_get_req_set_trap_policer_id(struct devlink_trap_policer_get_req *req,
+                                                __u32 trap_policer_id)
 {
-       free(req->trap_name);
-       req->_present.trap_name_len = strlen(trap_name);
-       req->trap_name = malloc(req->_present.trap_name_len + 1);
-       memcpy(req->trap_name, trap_name, req->_present.trap_name_len);
-       req->trap_name[req->_present.trap_name_len] = 0;
+       req->_present.trap_policer_id = 1;
+       req->trap_policer_id = trap_policer_id;
 }
 
-struct devlink_trap_get_rsp {
+struct devlink_trap_policer_get_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 trap_name_len;
+               __u32 trap_policer_id:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       char *trap_name;
+       __u32 trap_policer_id;
 };
 
-void devlink_trap_get_rsp_free(struct devlink_trap_get_rsp *rsp);
+void
+devlink_trap_policer_get_rsp_free(struct devlink_trap_policer_get_rsp *rsp);
 
 /*
- * Get trap instances.
+ * Get trap policer instances.
  */
-struct devlink_trap_get_rsp *
-devlink_trap_get(struct ynl_sock *ys, struct devlink_trap_get_req *req);
+struct devlink_trap_policer_get_rsp *
+devlink_trap_policer_get(struct ynl_sock *ys,
+                        struct devlink_trap_policer_get_req *req);
 
-/* DEVLINK_CMD_TRAP_GET - dump */
-struct devlink_trap_get_req_dump {
+/* DEVLINK_CMD_TRAP_POLICER_GET - dump */
+struct devlink_trap_policer_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
@@ -1380,16 +4362,17 @@ struct devlink_trap_get_req_dump {
        char *dev_name;
 };
 
-static inline struct devlink_trap_get_req_dump *
-devlink_trap_get_req_dump_alloc(void)
+static inline struct devlink_trap_policer_get_req_dump *
+devlink_trap_policer_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_get_req_dump));
+       return calloc(1, sizeof(struct devlink_trap_policer_get_req_dump));
 }
-void devlink_trap_get_req_dump_free(struct devlink_trap_get_req_dump *req);
+void
+devlink_trap_policer_get_req_dump_free(struct devlink_trap_policer_get_req_dump *req);
 
 static inline void
-devlink_trap_get_req_dump_set_bus_name(struct devlink_trap_get_req_dump *req,
-                                      const char *bus_name)
+devlink_trap_policer_get_req_dump_set_bus_name(struct devlink_trap_policer_get_req_dump *req,
+                                              const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1398,8 +4381,8 @@ devlink_trap_get_req_dump_set_bus_name(struct devlink_trap_get_req_dump *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_get_req_dump_set_dev_name(struct devlink_trap_get_req_dump *req,
-                                      const char *dev_name)
+devlink_trap_policer_get_req_dump_set_dev_name(struct devlink_trap_policer_get_req_dump *req,
+                                              const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1408,41 +4391,47 @@ devlink_trap_get_req_dump_set_dev_name(struct devlink_trap_get_req_dump *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 
-struct devlink_trap_get_list {
-       struct devlink_trap_get_list *next;
-       struct devlink_trap_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_trap_policer_get_list {
+       struct devlink_trap_policer_get_list *next;
+       struct devlink_trap_policer_get_rsp obj __attribute__((aligned(8)));
 };
 
-void devlink_trap_get_list_free(struct devlink_trap_get_list *rsp);
+void
+devlink_trap_policer_get_list_free(struct devlink_trap_policer_get_list *rsp);
 
-struct devlink_trap_get_list *
-devlink_trap_get_dump(struct ynl_sock *ys,
-                     struct devlink_trap_get_req_dump *req);
+struct devlink_trap_policer_get_list *
+devlink_trap_policer_get_dump(struct ynl_sock *ys,
+                             struct devlink_trap_policer_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_TRAP_GROUP_GET ============== */
-/* DEVLINK_CMD_TRAP_GROUP_GET - do */
-struct devlink_trap_group_get_req {
+/* ============== DEVLINK_CMD_TRAP_POLICER_SET ============== */
+/* DEVLINK_CMD_TRAP_POLICER_SET - do */
+struct devlink_trap_policer_set_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 trap_group_name_len;
+               __u32 trap_policer_id:1;
+               __u32 trap_policer_rate:1;
+               __u32 trap_policer_burst:1;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       char *trap_group_name;
+       __u32 trap_policer_id;
+       __u64 trap_policer_rate;
+       __u64 trap_policer_burst;
 };
 
-static inline struct devlink_trap_group_get_req *
-devlink_trap_group_get_req_alloc(void)
+static inline struct devlink_trap_policer_set_req *
+devlink_trap_policer_set_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_group_get_req));
+       return calloc(1, sizeof(struct devlink_trap_policer_set_req));
 }
-void devlink_trap_group_get_req_free(struct devlink_trap_group_get_req *req);
+void
+devlink_trap_policer_set_req_free(struct devlink_trap_policer_set_req *req);
 
 static inline void
-devlink_trap_group_get_req_set_bus_name(struct devlink_trap_group_get_req *req,
-                                       const char *bus_name)
+devlink_trap_policer_set_req_set_bus_name(struct devlink_trap_policer_set_req *req,
+                                         const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1451,8 +4440,8 @@ devlink_trap_group_get_req_set_bus_name(struct devlink_trap_group_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_group_get_req_set_dev_name(struct devlink_trap_group_get_req *req,
-                                       const char *dev_name)
+devlink_trap_policer_set_req_set_dev_name(struct devlink_trap_policer_set_req *req,
+                                         const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1461,59 +4450,60 @@ devlink_trap_group_get_req_set_dev_name(struct devlink_trap_group_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_trap_group_get_req_set_trap_group_name(struct devlink_trap_group_get_req *req,
-                                              const char *trap_group_name)
+devlink_trap_policer_set_req_set_trap_policer_id(struct devlink_trap_policer_set_req *req,
+                                                __u32 trap_policer_id)
 {
-       free(req->trap_group_name);
-       req->_present.trap_group_name_len = strlen(trap_group_name);
-       req->trap_group_name = malloc(req->_present.trap_group_name_len + 1);
-       memcpy(req->trap_group_name, trap_group_name, req->_present.trap_group_name_len);
-       req->trap_group_name[req->_present.trap_group_name_len] = 0;
+       req->_present.trap_policer_id = 1;
+       req->trap_policer_id = trap_policer_id;
+}
+static inline void
+devlink_trap_policer_set_req_set_trap_policer_rate(struct devlink_trap_policer_set_req *req,
+                                                  __u64 trap_policer_rate)
+{
+       req->_present.trap_policer_rate = 1;
+       req->trap_policer_rate = trap_policer_rate;
+}
+static inline void
+devlink_trap_policer_set_req_set_trap_policer_burst(struct devlink_trap_policer_set_req *req,
+                                                   __u64 trap_policer_burst)
+{
+       req->_present.trap_policer_burst = 1;
+       req->trap_policer_burst = trap_policer_burst;
 }
-
-struct devlink_trap_group_get_rsp {
-       struct {
-               __u32 bus_name_len;
-               __u32 dev_name_len;
-               __u32 trap_group_name_len;
-       } _present;
-
-       char *bus_name;
-       char *dev_name;
-       char *trap_group_name;
-};
-
-void devlink_trap_group_get_rsp_free(struct devlink_trap_group_get_rsp *rsp);
 
 /*
- * Get trap group instances.
+ * Get trap policer instances.
  */
-struct devlink_trap_group_get_rsp *
-devlink_trap_group_get(struct ynl_sock *ys,
-                      struct devlink_trap_group_get_req *req);
+int devlink_trap_policer_set(struct ynl_sock *ys,
+                            struct devlink_trap_policer_set_req *req);
 
-/* DEVLINK_CMD_TRAP_GROUP_GET - dump */
-struct devlink_trap_group_get_req_dump {
+/* ============== DEVLINK_CMD_HEALTH_REPORTER_TEST ============== */
+/* DEVLINK_CMD_HEALTH_REPORTER_TEST - do */
+struct devlink_health_reporter_test_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 port_index:1;
+               __u32 health_reporter_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       __u32 port_index;
+       char *health_reporter_name;
 };
 
-static inline struct devlink_trap_group_get_req_dump *
-devlink_trap_group_get_req_dump_alloc(void)
+static inline struct devlink_health_reporter_test_req *
+devlink_health_reporter_test_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_group_get_req_dump));
+       return calloc(1, sizeof(struct devlink_health_reporter_test_req));
 }
 void
-devlink_trap_group_get_req_dump_free(struct devlink_trap_group_get_req_dump *req);
+devlink_health_reporter_test_req_free(struct devlink_health_reporter_test_req *req);
 
 static inline void
-devlink_trap_group_get_req_dump_set_bus_name(struct devlink_trap_group_get_req_dump *req,
-                                            const char *bus_name)
+devlink_health_reporter_test_req_set_bus_name(struct devlink_health_reporter_test_req *req,
+                                             const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1522,8 +4512,8 @@ devlink_trap_group_get_req_dump_set_bus_name(struct devlink_trap_group_get_req_d
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_group_get_req_dump_set_dev_name(struct devlink_trap_group_get_req_dump *req,
-                                            const char *dev_name)
+devlink_health_reporter_test_req_set_dev_name(struct devlink_health_reporter_test_req *req,
+                                             const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1531,43 +4521,55 @@ devlink_trap_group_get_req_dump_set_dev_name(struct devlink_trap_group_get_req_d
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_health_reporter_test_req_set_port_index(struct devlink_health_reporter_test_req *req,
+                                               __u32 port_index)
+{
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_health_reporter_test_req_set_health_reporter_name(struct devlink_health_reporter_test_req *req,
+                                                         const char *health_reporter_name)
+{
+       free(req->health_reporter_name);
+       req->_present.health_reporter_name_len = strlen(health_reporter_name);
+       req->health_reporter_name = malloc(req->_present.health_reporter_name_len + 1);
+       memcpy(req->health_reporter_name, health_reporter_name, req->_present.health_reporter_name_len);
+       req->health_reporter_name[req->_present.health_reporter_name_len] = 0;
+}
 
-struct devlink_trap_group_get_list {
-       struct devlink_trap_group_get_list *next;
-       struct devlink_trap_group_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void devlink_trap_group_get_list_free(struct devlink_trap_group_get_list *rsp);
-
-struct devlink_trap_group_get_list *
-devlink_trap_group_get_dump(struct ynl_sock *ys,
-                           struct devlink_trap_group_get_req_dump *req);
+/*
+ * Test health reporter instances.
+ */
+int devlink_health_reporter_test(struct ynl_sock *ys,
+                                struct devlink_health_reporter_test_req *req);
 
-/* ============== DEVLINK_CMD_TRAP_POLICER_GET ============== */
-/* DEVLINK_CMD_TRAP_POLICER_GET - do */
-struct devlink_trap_policer_get_req {
+/* ============== DEVLINK_CMD_RATE_GET ============== */
+/* DEVLINK_CMD_RATE_GET - do */
+struct devlink_rate_get_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 trap_policer_id:1;
+               __u32 port_index:1;
+               __u32 rate_node_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 trap_policer_id;
+       __u32 port_index;
+       char *rate_node_name;
 };
 
-static inline struct devlink_trap_policer_get_req *
-devlink_trap_policer_get_req_alloc(void)
+static inline struct devlink_rate_get_req *devlink_rate_get_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_policer_get_req));
+       return calloc(1, sizeof(struct devlink_rate_get_req));
 }
-void
-devlink_trap_policer_get_req_free(struct devlink_trap_policer_get_req *req);
+void devlink_rate_get_req_free(struct devlink_rate_get_req *req);
 
 static inline void
-devlink_trap_policer_get_req_set_bus_name(struct devlink_trap_policer_get_req *req,
-                                         const char *bus_name)
+devlink_rate_get_req_set_bus_name(struct devlink_rate_get_req *req,
+                                 const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1576,8 +4578,8 @@ devlink_trap_policer_get_req_set_bus_name(struct devlink_trap_policer_get_req *r
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_policer_get_req_set_dev_name(struct devlink_trap_policer_get_req *req,
-                                         const char *dev_name)
+devlink_rate_get_req_set_dev_name(struct devlink_rate_get_req *req,
+                                 const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1586,37 +4588,47 @@ devlink_trap_policer_get_req_set_dev_name(struct devlink_trap_policer_get_req *r
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_trap_policer_get_req_set_trap_policer_id(struct devlink_trap_policer_get_req *req,
-                                                __u32 trap_policer_id)
+devlink_rate_get_req_set_port_index(struct devlink_rate_get_req *req,
+                                   __u32 port_index)
 {
-       req->_present.trap_policer_id = 1;
-       req->trap_policer_id = trap_policer_id;
+       req->_present.port_index = 1;
+       req->port_index = port_index;
+}
+static inline void
+devlink_rate_get_req_set_rate_node_name(struct devlink_rate_get_req *req,
+                                       const char *rate_node_name)
+{
+       free(req->rate_node_name);
+       req->_present.rate_node_name_len = strlen(rate_node_name);
+       req->rate_node_name = malloc(req->_present.rate_node_name_len + 1);
+       memcpy(req->rate_node_name, rate_node_name, req->_present.rate_node_name_len);
+       req->rate_node_name[req->_present.rate_node_name_len] = 0;
 }
 
-struct devlink_trap_policer_get_rsp {
+struct devlink_rate_get_rsp {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 trap_policer_id:1;
+               __u32 port_index:1;
+               __u32 rate_node_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 trap_policer_id;
+       __u32 port_index;
+       char *rate_node_name;
 };
 
-void
-devlink_trap_policer_get_rsp_free(struct devlink_trap_policer_get_rsp *rsp);
+void devlink_rate_get_rsp_free(struct devlink_rate_get_rsp *rsp);
 
 /*
- * Get trap policer instances.
+ * Get rate instances.
  */
-struct devlink_trap_policer_get_rsp *
-devlink_trap_policer_get(struct ynl_sock *ys,
-                        struct devlink_trap_policer_get_req *req);
+struct devlink_rate_get_rsp *
+devlink_rate_get(struct ynl_sock *ys, struct devlink_rate_get_req *req);
 
-/* DEVLINK_CMD_TRAP_POLICER_GET - dump */
-struct devlink_trap_policer_get_req_dump {
+/* DEVLINK_CMD_RATE_GET - dump */
+struct devlink_rate_get_req_dump {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
@@ -1626,17 +4638,16 @@ struct devlink_trap_policer_get_req_dump {
        char *dev_name;
 };
 
-static inline struct devlink_trap_policer_get_req_dump *
-devlink_trap_policer_get_req_dump_alloc(void)
+static inline struct devlink_rate_get_req_dump *
+devlink_rate_get_req_dump_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_trap_policer_get_req_dump));
+       return calloc(1, sizeof(struct devlink_rate_get_req_dump));
 }
-void
-devlink_trap_policer_get_req_dump_free(struct devlink_trap_policer_get_req_dump *req);
+void devlink_rate_get_req_dump_free(struct devlink_rate_get_req_dump *req);
 
 static inline void
-devlink_trap_policer_get_req_dump_set_bus_name(struct devlink_trap_policer_get_req_dump *req,
-                                              const char *bus_name)
+devlink_rate_get_req_dump_set_bus_name(struct devlink_rate_get_req_dump *req,
+                                      const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1645,8 +4656,8 @@ devlink_trap_policer_get_req_dump_set_bus_name(struct devlink_trap_policer_get_r
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_trap_policer_get_req_dump_set_dev_name(struct devlink_trap_policer_get_req_dump *req,
-                                              const char *dev_name)
+devlink_rate_get_req_dump_set_dev_name(struct devlink_rate_get_req_dump *req,
+                                      const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1655,42 +4666,49 @@ devlink_trap_policer_get_req_dump_set_dev_name(struct devlink_trap_policer_get_r
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 
-struct devlink_trap_policer_get_list {
-       struct devlink_trap_policer_get_list *next;
-       struct devlink_trap_policer_get_rsp obj __attribute__ ((aligned (8)));
+struct devlink_rate_get_list {
+       struct devlink_rate_get_list *next;
+       struct devlink_rate_get_rsp obj __attribute__((aligned(8)));
 };
 
-void
-devlink_trap_policer_get_list_free(struct devlink_trap_policer_get_list *rsp);
+void devlink_rate_get_list_free(struct devlink_rate_get_list *rsp);
 
-struct devlink_trap_policer_get_list *
-devlink_trap_policer_get_dump(struct ynl_sock *ys,
-                             struct devlink_trap_policer_get_req_dump *req);
+struct devlink_rate_get_list *
+devlink_rate_get_dump(struct ynl_sock *ys,
+                     struct devlink_rate_get_req_dump *req);
 
-/* ============== DEVLINK_CMD_RATE_GET ============== */
-/* DEVLINK_CMD_RATE_GET - do */
-struct devlink_rate_get_req {
+/* ============== DEVLINK_CMD_RATE_SET ============== */
+/* DEVLINK_CMD_RATE_SET - do */
+struct devlink_rate_set_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 port_index:1;
                __u32 rate_node_name_len;
+               __u32 rate_tx_share:1;
+               __u32 rate_tx_max:1;
+               __u32 rate_tx_priority:1;
+               __u32 rate_tx_weight:1;
+               __u32 rate_parent_node_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 port_index;
        char *rate_node_name;
+       __u64 rate_tx_share;
+       __u64 rate_tx_max;
+       __u32 rate_tx_priority;
+       __u32 rate_tx_weight;
+       char *rate_parent_node_name;
 };
 
-static inline struct devlink_rate_get_req *devlink_rate_get_req_alloc(void)
+static inline struct devlink_rate_set_req *devlink_rate_set_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_rate_get_req));
+       return calloc(1, sizeof(struct devlink_rate_set_req));
 }
-void devlink_rate_get_req_free(struct devlink_rate_get_req *req);
+void devlink_rate_set_req_free(struct devlink_rate_set_req *req);
 
 static inline void
-devlink_rate_get_req_set_bus_name(struct devlink_rate_get_req *req,
+devlink_rate_set_req_set_bus_name(struct devlink_rate_set_req *req,
                                  const char *bus_name)
 {
        free(req->bus_name);
@@ -1700,7 +4718,7 @@ devlink_rate_get_req_set_bus_name(struct devlink_rate_get_req *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_rate_get_req_set_dev_name(struct devlink_rate_get_req *req,
+devlink_rate_set_req_set_dev_name(struct devlink_rate_set_req *req,
                                  const char *dev_name)
 {
        free(req->dev_name);
@@ -1710,14 +4728,7 @@ devlink_rate_get_req_set_dev_name(struct devlink_rate_get_req *req,
        req->dev_name[req->_present.dev_name_len] = 0;
 }
 static inline void
-devlink_rate_get_req_set_port_index(struct devlink_rate_get_req *req,
-                                   __u32 port_index)
-{
-       req->_present.port_index = 1;
-       req->port_index = port_index;
-}
-static inline void
-devlink_rate_get_req_set_rate_node_name(struct devlink_rate_get_req *req,
+devlink_rate_set_req_set_rate_node_name(struct devlink_rate_set_req *req,
                                        const char *rate_node_name)
 {
        free(req->rate_node_name);
@@ -1726,50 +4737,177 @@ devlink_rate_get_req_set_rate_node_name(struct devlink_rate_get_req *req,
        memcpy(req->rate_node_name, rate_node_name, req->_present.rate_node_name_len);
        req->rate_node_name[req->_present.rate_node_name_len] = 0;
 }
+static inline void
+devlink_rate_set_req_set_rate_tx_share(struct devlink_rate_set_req *req,
+                                      __u64 rate_tx_share)
+{
+       req->_present.rate_tx_share = 1;
+       req->rate_tx_share = rate_tx_share;
+}
+static inline void
+devlink_rate_set_req_set_rate_tx_max(struct devlink_rate_set_req *req,
+                                    __u64 rate_tx_max)
+{
+       req->_present.rate_tx_max = 1;
+       req->rate_tx_max = rate_tx_max;
+}
+static inline void
+devlink_rate_set_req_set_rate_tx_priority(struct devlink_rate_set_req *req,
+                                         __u32 rate_tx_priority)
+{
+       req->_present.rate_tx_priority = 1;
+       req->rate_tx_priority = rate_tx_priority;
+}
+static inline void
+devlink_rate_set_req_set_rate_tx_weight(struct devlink_rate_set_req *req,
+                                       __u32 rate_tx_weight)
+{
+       req->_present.rate_tx_weight = 1;
+       req->rate_tx_weight = rate_tx_weight;
+}
+static inline void
+devlink_rate_set_req_set_rate_parent_node_name(struct devlink_rate_set_req *req,
+                                              const char *rate_parent_node_name)
+{
+       free(req->rate_parent_node_name);
+       req->_present.rate_parent_node_name_len = strlen(rate_parent_node_name);
+       req->rate_parent_node_name = malloc(req->_present.rate_parent_node_name_len + 1);
+       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;
+}
 
-struct devlink_rate_get_rsp {
+/*
+ * Set rate instances.
+ */
+int devlink_rate_set(struct ynl_sock *ys, struct devlink_rate_set_req *req);
+
+/* ============== DEVLINK_CMD_RATE_NEW ============== */
+/* DEVLINK_CMD_RATE_NEW - do */
+struct devlink_rate_new_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
-               __u32 port_index:1;
                __u32 rate_node_name_len;
+               __u32 rate_tx_share:1;
+               __u32 rate_tx_max:1;
+               __u32 rate_tx_priority:1;
+               __u32 rate_tx_weight:1;
+               __u32 rate_parent_node_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
-       __u32 port_index;
        char *rate_node_name;
+       __u64 rate_tx_share;
+       __u64 rate_tx_max;
+       __u32 rate_tx_priority;
+       __u32 rate_tx_weight;
+       char *rate_parent_node_name;
 };
 
-void devlink_rate_get_rsp_free(struct devlink_rate_get_rsp *rsp);
+static inline struct devlink_rate_new_req *devlink_rate_new_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_rate_new_req));
+}
+void devlink_rate_new_req_free(struct devlink_rate_new_req *req);
+
+static inline void
+devlink_rate_new_req_set_bus_name(struct devlink_rate_new_req *req,
+                                 const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_rate_new_req_set_dev_name(struct devlink_rate_new_req *req,
+                                 const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_rate_new_req_set_rate_node_name(struct devlink_rate_new_req *req,
+                                       const char *rate_node_name)
+{
+       free(req->rate_node_name);
+       req->_present.rate_node_name_len = strlen(rate_node_name);
+       req->rate_node_name = malloc(req->_present.rate_node_name_len + 1);
+       memcpy(req->rate_node_name, rate_node_name, req->_present.rate_node_name_len);
+       req->rate_node_name[req->_present.rate_node_name_len] = 0;
+}
+static inline void
+devlink_rate_new_req_set_rate_tx_share(struct devlink_rate_new_req *req,
+                                      __u64 rate_tx_share)
+{
+       req->_present.rate_tx_share = 1;
+       req->rate_tx_share = rate_tx_share;
+}
+static inline void
+devlink_rate_new_req_set_rate_tx_max(struct devlink_rate_new_req *req,
+                                    __u64 rate_tx_max)
+{
+       req->_present.rate_tx_max = 1;
+       req->rate_tx_max = rate_tx_max;
+}
+static inline void
+devlink_rate_new_req_set_rate_tx_priority(struct devlink_rate_new_req *req,
+                                         __u32 rate_tx_priority)
+{
+       req->_present.rate_tx_priority = 1;
+       req->rate_tx_priority = rate_tx_priority;
+}
+static inline void
+devlink_rate_new_req_set_rate_tx_weight(struct devlink_rate_new_req *req,
+                                       __u32 rate_tx_weight)
+{
+       req->_present.rate_tx_weight = 1;
+       req->rate_tx_weight = rate_tx_weight;
+}
+static inline void
+devlink_rate_new_req_set_rate_parent_node_name(struct devlink_rate_new_req *req,
+                                              const char *rate_parent_node_name)
+{
+       free(req->rate_parent_node_name);
+       req->_present.rate_parent_node_name_len = strlen(rate_parent_node_name);
+       req->rate_parent_node_name = malloc(req->_present.rate_parent_node_name_len + 1);
+       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;
+}
 
 /*
- * Get rate instances.
+ * Create rate instances.
  */
-struct devlink_rate_get_rsp *
-devlink_rate_get(struct ynl_sock *ys, struct devlink_rate_get_req *req);
+int devlink_rate_new(struct ynl_sock *ys, struct devlink_rate_new_req *req);
 
-/* DEVLINK_CMD_RATE_GET - dump */
-struct devlink_rate_get_req_dump {
+/* ============== DEVLINK_CMD_RATE_DEL ============== */
+/* DEVLINK_CMD_RATE_DEL - do */
+struct devlink_rate_del_req {
        struct {
                __u32 bus_name_len;
                __u32 dev_name_len;
+               __u32 rate_node_name_len;
        } _present;
 
        char *bus_name;
        char *dev_name;
+       char *rate_node_name;
 };
 
-static inline struct devlink_rate_get_req_dump *
-devlink_rate_get_req_dump_alloc(void)
+static inline struct devlink_rate_del_req *devlink_rate_del_req_alloc(void)
 {
-       return calloc(1, sizeof(struct devlink_rate_get_req_dump));
+       return calloc(1, sizeof(struct devlink_rate_del_req));
 }
-void devlink_rate_get_req_dump_free(struct devlink_rate_get_req_dump *req);
+void devlink_rate_del_req_free(struct devlink_rate_del_req *req);
 
 static inline void
-devlink_rate_get_req_dump_set_bus_name(struct devlink_rate_get_req_dump *req,
-                                      const char *bus_name)
+devlink_rate_del_req_set_bus_name(struct devlink_rate_del_req *req,
+                                 const char *bus_name)
 {
        free(req->bus_name);
        req->_present.bus_name_len = strlen(bus_name);
@@ -1778,8 +4916,8 @@ devlink_rate_get_req_dump_set_bus_name(struct devlink_rate_get_req_dump *req,
        req->bus_name[req->_present.bus_name_len] = 0;
 }
 static inline void
-devlink_rate_get_req_dump_set_dev_name(struct devlink_rate_get_req_dump *req,
-                                      const char *dev_name)
+devlink_rate_del_req_set_dev_name(struct devlink_rate_del_req *req,
+                                 const char *dev_name)
 {
        free(req->dev_name);
        req->_present.dev_name_len = strlen(dev_name);
@@ -1787,17 +4925,21 @@ devlink_rate_get_req_dump_set_dev_name(struct devlink_rate_get_req_dump *req,
        memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
        req->dev_name[req->_present.dev_name_len] = 0;
 }
+static inline void
+devlink_rate_del_req_set_rate_node_name(struct devlink_rate_del_req *req,
+                                       const char *rate_node_name)
+{
+       free(req->rate_node_name);
+       req->_present.rate_node_name_len = strlen(rate_node_name);
+       req->rate_node_name = malloc(req->_present.rate_node_name_len + 1);
+       memcpy(req->rate_node_name, rate_node_name, req->_present.rate_node_name_len);
+       req->rate_node_name[req->_present.rate_node_name_len] = 0;
+}
 
-struct devlink_rate_get_list {
-       struct devlink_rate_get_list *next;
-       struct devlink_rate_get_rsp obj __attribute__ ((aligned (8)));
-};
-
-void devlink_rate_get_list_free(struct devlink_rate_get_list *rsp);
-
-struct devlink_rate_get_list *
-devlink_rate_get_dump(struct ynl_sock *ys,
-                     struct devlink_rate_get_req_dump *req);
+/*
+ * Delete rate instances.
+ */
+int devlink_rate_del(struct ynl_sock *ys, struct devlink_rate_del_req *req);
 
 /* ============== DEVLINK_CMD_LINECARD_GET ============== */
 /* DEVLINK_CMD_LINECARD_GET - do */
@@ -1910,7 +5052,7 @@ devlink_linecard_get_req_dump_set_dev_name(struct devlink_linecard_get_req_dump
 
 struct devlink_linecard_get_list {
        struct devlink_linecard_get_list *next;
-       struct devlink_linecard_get_rsp obj __attribute__ ((aligned (8)));
+       struct devlink_linecard_get_rsp obj __attribute__((aligned(8)));
 };
 
 void devlink_linecard_get_list_free(struct devlink_linecard_get_list *rsp);
@@ -1919,6 +5061,73 @@ struct devlink_linecard_get_list *
 devlink_linecard_get_dump(struct ynl_sock *ys,
                          struct devlink_linecard_get_req_dump *req);
 
+/* ============== DEVLINK_CMD_LINECARD_SET ============== */
+/* DEVLINK_CMD_LINECARD_SET - do */
+struct devlink_linecard_set_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 linecard_index:1;
+               __u32 linecard_type_len;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       __u32 linecard_index;
+       char *linecard_type;
+};
+
+static inline struct devlink_linecard_set_req *
+devlink_linecard_set_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_linecard_set_req));
+}
+void devlink_linecard_set_req_free(struct devlink_linecard_set_req *req);
+
+static inline void
+devlink_linecard_set_req_set_bus_name(struct devlink_linecard_set_req *req,
+                                     const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_linecard_set_req_set_dev_name(struct devlink_linecard_set_req *req,
+                                     const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_linecard_set_req_set_linecard_index(struct devlink_linecard_set_req *req,
+                                           __u32 linecard_index)
+{
+       req->_present.linecard_index = 1;
+       req->linecard_index = linecard_index;
+}
+static inline void
+devlink_linecard_set_req_set_linecard_type(struct devlink_linecard_set_req *req,
+                                          const char *linecard_type)
+{
+       free(req->linecard_type);
+       req->_present.linecard_type_len = strlen(linecard_type);
+       req->linecard_type = malloc(req->_present.linecard_type_len + 1);
+       memcpy(req->linecard_type, linecard_type, req->_present.linecard_type_len);
+       req->linecard_type[req->_present.linecard_type_len] = 0;
+}
+
+/*
+ * Set line card instances.
+ */
+int devlink_linecard_set(struct ynl_sock *ys,
+                        struct devlink_linecard_set_req *req);
+
 /* ============== DEVLINK_CMD_SELFTESTS_GET ============== */
 /* DEVLINK_CMD_SELFTESTS_GET - do */
 struct devlink_selftests_get_req {
@@ -1981,7 +5190,7 @@ devlink_selftests_get(struct ynl_sock *ys,
 /* DEVLINK_CMD_SELFTESTS_GET - dump */
 struct devlink_selftests_get_list {
        struct devlink_selftests_get_list *next;
-       struct devlink_selftests_get_rsp obj __attribute__ ((aligned (8)));
+       struct devlink_selftests_get_rsp obj __attribute__((aligned(8)));
 };
 
 void devlink_selftests_get_list_free(struct devlink_selftests_get_list *rsp);
@@ -1989,4 +5198,58 @@ void devlink_selftests_get_list_free(struct devlink_selftests_get_list *rsp);
 struct devlink_selftests_get_list *
 devlink_selftests_get_dump(struct ynl_sock *ys);
 
+/* ============== DEVLINK_CMD_SELFTESTS_RUN ============== */
+/* DEVLINK_CMD_SELFTESTS_RUN - do */
+struct devlink_selftests_run_req {
+       struct {
+               __u32 bus_name_len;
+               __u32 dev_name_len;
+               __u32 selftests:1;
+       } _present;
+
+       char *bus_name;
+       char *dev_name;
+       struct devlink_dl_selftest_id selftests;
+};
+
+static inline struct devlink_selftests_run_req *
+devlink_selftests_run_req_alloc(void)
+{
+       return calloc(1, sizeof(struct devlink_selftests_run_req));
+}
+void devlink_selftests_run_req_free(struct devlink_selftests_run_req *req);
+
+static inline void
+devlink_selftests_run_req_set_bus_name(struct devlink_selftests_run_req *req,
+                                      const char *bus_name)
+{
+       free(req->bus_name);
+       req->_present.bus_name_len = strlen(bus_name);
+       req->bus_name = malloc(req->_present.bus_name_len + 1);
+       memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
+       req->bus_name[req->_present.bus_name_len] = 0;
+}
+static inline void
+devlink_selftests_run_req_set_dev_name(struct devlink_selftests_run_req *req,
+                                      const char *dev_name)
+{
+       free(req->dev_name);
+       req->_present.dev_name_len = strlen(dev_name);
+       req->dev_name = malloc(req->_present.dev_name_len + 1);
+       memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
+       req->dev_name[req->_present.dev_name_len] = 0;
+}
+static inline void
+devlink_selftests_run_req_set_selftests_flash(struct devlink_selftests_run_req *req)
+{
+       req->_present.selftests = 1;
+       req->selftests._present.flash = 1;
+}
+
+/*
+ * Run device selftest instances.
+ */
+int devlink_selftests_run(struct ynl_sock *ys,
+                         struct devlink_selftests_run_req *req);
+
 #endif /* _LINUX_DEVLINK_GEN_H */