| /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ |
| /* Do not edit directly, auto-generated from: */ |
| /* Documentation/netlink/specs/devlink.yaml */ |
| /* YNL-GEN user header */ |
| |
| #ifndef _LINUX_DEVLINK_GEN_H |
| #define _LINUX_DEVLINK_GEN_H |
| |
| #include <stdlib.h> |
| #include <string.h> |
| #include <linux/types.h> |
| #include <linux/netlink.h> |
| #include <linux/devlink.h> |
| |
| struct ynl_sock; |
| |
| 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; |
| __u32 info_version_value_len; |
| } _present; |
| |
| char *info_version_name; |
| 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; |
| __u32 reload_stats_value:1; |
| } _present; |
| |
| __u8 reload_stats_limit; |
| __u32 reload_stats_value; |
| }; |
| |
| struct devlink_dl_reload_act_stats { |
| unsigned int n_reload_stats_entry; |
| 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; |
| |
| 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; |
| __u32 remote_reload_stats:1; |
| } _present; |
| |
| struct devlink_dl_reload_stats reload_stats; |
| struct devlink_dl_reload_stats remote_reload_stats; |
| }; |
| |
| /* ============== DEVLINK_CMD_GET ============== */ |
| /* DEVLINK_CMD_GET - do */ |
| struct devlink_get_req { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_get_req *devlink_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_get_req)); |
| } |
| void devlink_get_req_free(struct devlink_get_req *req); |
| |
| static inline void |
| devlink_get_req_set_bus_name(struct devlink_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_get_req_set_dev_name(struct devlink_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_get_rsp { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 reload_failed:1; |
| __u32 dev_stats:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u8 reload_failed; |
| struct devlink_dl_dev_stats dev_stats; |
| }; |
| |
| void devlink_get_rsp_free(struct devlink_get_rsp *rsp); |
| |
| /* |
| * Get devlink instances. |
| */ |
| struct devlink_get_rsp * |
| 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))); |
| }; |
| |
| void devlink_get_list_free(struct devlink_get_list *rsp); |
| |
| struct devlink_get_list *devlink_get_dump(struct ynl_sock *ys); |
| |
| /* ============== DEVLINK_CMD_PORT_GET ============== */ |
| /* DEVLINK_CMD_PORT_GET - do */ |
| struct devlink_port_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_get_req *devlink_port_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_get_req)); |
| } |
| void devlink_port_get_req_free(struct devlink_port_get_req *req); |
| |
| static inline void |
| devlink_port_get_req_set_bus_name(struct devlink_port_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_get_req_set_dev_name(struct devlink_port_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_get_req_set_port_index(struct devlink_port_get_req *req, |
| __u32 port_index) |
| { |
| req->_present.port_index = 1; |
| req->port_index = port_index; |
| } |
| |
| struct devlink_port_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_get_rsp_free(struct devlink_port_get_rsp *rsp); |
| |
| /* |
| * Get devlink port instances. |
| */ |
| struct devlink_port_get_rsp * |
| devlink_port_get(struct ynl_sock *ys, struct devlink_port_get_req *req); |
| |
| /* DEVLINK_CMD_PORT_GET - dump */ |
| struct devlink_port_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_port_get_req_dump * |
| devlink_port_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_get_req_dump)); |
| } |
| void devlink_port_get_req_dump_free(struct devlink_port_get_req_dump *req); |
| |
| static inline void |
| devlink_port_get_req_dump_set_bus_name(struct devlink_port_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_port_get_req_dump_set_dev_name(struct devlink_port_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_port_get_rsp_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 port_index:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| }; |
| |
| struct devlink_port_get_rsp_list { |
| struct devlink_port_get_rsp_list *next; |
| struct devlink_port_get_rsp_dump obj __attribute__((aligned(8))); |
| }; |
| |
| void devlink_port_get_rsp_list_free(struct devlink_port_get_rsp_list *rsp); |
| |
| struct devlink_port_get_rsp_list * |
| devlink_port_get_dump(struct ynl_sock *ys, |
| struct devlink_port_get_req_dump *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 port_index:1; |
| __u32 port_type:1; |
| __u32 port_function:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| enum devlink_port_type port_type; |
| struct devlink_dl_port_function port_function; |
| }; |
| |
| static inline struct devlink_port_set_req *devlink_port_set_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_set_req)); |
| } |
| void devlink_port_set_req_free(struct devlink_port_set_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_set_req_set_port_index(struct devlink_port_set_req *req, |
| __u32 port_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)); |
| } |
| |
| /* |
| * Set devlink port instances. |
| */ |
| int devlink_port_set(struct ynl_sock *ys, struct devlink_port_set_req *req); |
| |
| /* ============== 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_port_new_req *devlink_port_new_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_new_req)); |
| } |
| void devlink_port_new_req_free(struct devlink_port_new_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_new_req_set_port_index(struct devlink_port_new_req *req, |
| __u32 port_index) |
| { |
| req->_present.port_index = 1; |
| req->port_index = port_index; |
| } |
| static inline void |
| devlink_port_new_req_set_port_flavour(struct devlink_port_new_req *req, |
| enum devlink_port_flavour port_flavour) |
| { |
| req->_present.port_flavour = 1; |
| req->port_flavour = port_flavour; |
| } |
| static inline void |
| devlink_port_new_req_set_port_pci_pf_number(struct devlink_port_new_req *req, |
| __u16 port_pci_pf_number) |
| { |
| req->_present.port_pci_pf_number = 1; |
| req->port_pci_pf_number = port_pci_pf_number; |
| } |
| static inline void |
| devlink_port_new_req_set_port_pci_sf_number(struct devlink_port_new_req *req, |
| __u32 port_pci_sf_number) |
| { |
| req->_present.port_pci_sf_number = 1; |
| req->port_pci_sf_number = port_pci_sf_number; |
| } |
| static inline void |
| devlink_port_new_req_set_port_controller_number(struct devlink_port_new_req *req, |
| __u32 port_controller_number) |
| { |
| req->_present.port_controller_number = 1; |
| req->port_controller_number = port_controller_number; |
| } |
| |
| struct devlink_port_new_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_new_rsp_free(struct devlink_port_new_rsp *rsp); |
| |
| /* |
| * Create devlink port instances. |
| */ |
| struct devlink_port_new_rsp * |
| devlink_port_new(struct ynl_sock *ys, struct devlink_port_new_req *req); |
| |
| /* ============== 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_port_del_req *devlink_port_del_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_del_req)); |
| } |
| void devlink_port_del_req_free(struct devlink_port_del_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_del_req_set_port_index(struct devlink_port_del_req *req, |
| __u32 port_index) |
| { |
| req->_present.port_index = 1; |
| req->port_index = port_index; |
| } |
| |
| /* |
| * Delete devlink port instances. |
| */ |
| int devlink_port_del(struct ynl_sock *ys, struct devlink_port_del_req *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 port_split_count:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| __u32 port_split_count; |
| }; |
| |
| static inline struct devlink_port_split_req *devlink_port_split_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_split_req)); |
| } |
| void devlink_port_split_req_free(struct devlink_port_split_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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_port_split_req_set_port_split_count(struct devlink_port_split_req *req, |
| __u32 port_split_count) |
| { |
| req->_present.port_split_count = 1; |
| req->port_split_count = port_split_count; |
| } |
| |
| /* |
| * Split devlink port instances. |
| */ |
| int devlink_port_split(struct ynl_sock *ys, struct devlink_port_split_req *req); |
| |
| /* ============== 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_port_unsplit_req * |
| devlink_port_unsplit_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_port_unsplit_req)); |
| } |
| void devlink_port_unsplit_req_free(struct devlink_port_unsplit_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_unsplit_req_set_port_index(struct devlink_port_unsplit_req *req, |
| __u32 port_index) |
| { |
| req->_present.port_index = 1; |
| req->port_index = port_index; |
| } |
| |
| /* |
| * Unplit devlink port instances. |
| */ |
| int devlink_port_unsplit(struct ynl_sock *ys, |
| struct devlink_port_unsplit_req *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 sb_index:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 sb_index; |
| }; |
| |
| static inline struct devlink_sb_get_req *devlink_sb_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_get_req)); |
| } |
| void devlink_sb_get_req_free(struct devlink_sb_get_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_get_req_set_sb_index(struct devlink_sb_get_req *req, __u32 sb_index) |
| { |
| req->_present.sb_index = 1; |
| req->sb_index = sb_index; |
| } |
| |
| 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. |
| */ |
| struct devlink_sb_get_rsp * |
| devlink_sb_get(struct ynl_sock *ys, struct devlink_sb_get_req *req); |
| |
| /* DEVLINK_CMD_SB_GET - dump */ |
| struct devlink_sb_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_sb_get_req_dump * |
| devlink_sb_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_get_req_dump)); |
| } |
| void devlink_sb_get_req_dump_free(struct devlink_sb_get_req_dump *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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) |
| { |
| return calloc(1, sizeof(struct devlink_sb_pool_get_req)); |
| } |
| 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) |
| { |
| 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_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); |
| 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_pool_get_req_set_sb_index(struct devlink_sb_pool_get_req *req, |
| __u32 sb_index) |
| { |
| 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_sb_pool_get_rsp { |
| 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; |
| }; |
| |
| void devlink_sb_pool_get_rsp_free(struct devlink_sb_pool_get_rsp *rsp); |
| |
| /* |
| * Get shared buffer pool instances. |
| */ |
| struct devlink_sb_pool_get_rsp * |
| devlink_sb_pool_get(struct ynl_sock *ys, struct devlink_sb_pool_get_req *req); |
| |
| /* DEVLINK_CMD_SB_POOL_GET - dump */ |
| struct devlink_sb_pool_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_sb_pool_get_req_dump * |
| devlink_sb_pool_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_pool_get_req_dump)); |
| } |
| void |
| devlink_sb_pool_get_req_dump_free(struct devlink_sb_pool_get_req_dump *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) |
| { |
| 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_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); |
| 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_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); |
| |
| /* ============== 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 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 sb_index; |
| __u16 sb_pool_index; |
| enum devlink_sb_threshold_type sb_pool_threshold_type; |
| __u32 sb_pool_size; |
| }; |
| |
| static inline struct devlink_sb_pool_set_req * |
| devlink_sb_pool_set_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_pool_set_req)); |
| } |
| void devlink_sb_pool_set_req_free(struct devlink_sb_pool_set_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_pool_set_req_set_sb_index(struct devlink_sb_pool_set_req *req, |
| __u32 sb_index) |
| { |
| req->_present.sb_index = 1; |
| req->sb_index = sb_index; |
| } |
| static inline void |
| devlink_sb_pool_set_req_set_sb_pool_index(struct devlink_sb_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_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; |
| } |
| |
| /* |
| * Set shared buffer pool instances. |
| */ |
| int devlink_sb_pool_set(struct ynl_sock *ys, |
| struct devlink_sb_pool_set_req *req); |
| |
| /* ============== 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_sb_port_pool_get_req * |
| devlink_sb_port_pool_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_port_pool_get_req)); |
| } |
| void |
| devlink_sb_port_pool_get_req_free(struct devlink_sb_port_pool_get_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) |
| { |
| 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_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); |
| 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_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_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. |
| */ |
| 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_SB_PORT_POOL_GET - dump */ |
| struct devlink_sb_port_pool_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| 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_sb_port_pool_get_req_dump)); |
| } |
| void |
| devlink_sb_port_pool_get_req_dump_free(struct devlink_sb_port_pool_get_req_dump *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) |
| { |
| 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_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); |
| 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_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); |
| |
| /* ============== 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 sb_index:1; |
| __u32 sb_pool_index:1; |
| __u32 sb_threshold:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| __u32 sb_index; |
| __u16 sb_pool_index; |
| __u32 sb_threshold; |
| }; |
| |
| static inline struct devlink_sb_port_pool_set_req * |
| devlink_sb_port_pool_set_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_sb_port_pool_set_req)); |
| } |
| void |
| devlink_sb_port_pool_set_req_free(struct devlink_sb_port_pool_set_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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_sb_port_pool_set_req_set_sb_index(struct devlink_sb_port_pool_set_req *req, |
| __u32 sb_index) |
| { |
| req->_present.sb_index = 1; |
| req->sb_index = sb_index; |
| } |
| 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; |
| __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_sb_tc_pool_bind_get_req_free(struct devlink_sb_tc_pool_bind_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; |
| } |
| |
| 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; |
| }; |
| |
| 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_sb_tc_pool_bind_get_req_dump)); |
| } |
| void |
| devlink_sb_tc_pool_bind_get_req_dump_free(struct devlink_sb_tc_pool_bind_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) |
| { |
| 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_dump_set_dev_name(struct devlink_sb_tc_pool_bind_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_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_trap_group_set_req_set_trap_group_name(struct devlink_trap_group_set_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; |
| } |
| 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; |
| } |
| |
| /* |
| * Set trap group instances. |
| */ |
| int devlink_trap_group_set(struct ynl_sock *ys, |
| struct devlink_trap_group_set_req *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_policer_id:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 trap_policer_id; |
| }; |
| |
| static inline struct devlink_trap_policer_get_req * |
| devlink_trap_policer_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_trap_policer_get_req)); |
| } |
| void |
| devlink_trap_policer_get_req_free(struct devlink_trap_policer_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) |
| { |
| 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_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); |
| 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_policer_get_req_set_trap_policer_id(struct devlink_trap_policer_get_req *req, |
| __u32 trap_policer_id) |
| { |
| req->_present.trap_policer_id = 1; |
| req->trap_policer_id = trap_policer_id; |
| } |
| |
| struct devlink_trap_policer_get_rsp { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 trap_policer_id:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 trap_policer_id; |
| }; |
| |
| void |
| devlink_trap_policer_get_rsp_free(struct devlink_trap_policer_get_rsp *rsp); |
| |
| /* |
| * Get trap policer instances. |
| */ |
| struct devlink_trap_policer_get_rsp * |
| devlink_trap_policer_get(struct ynl_sock *ys, |
| struct devlink_trap_policer_get_req *req); |
| |
| /* DEVLINK_CMD_TRAP_POLICER_GET - dump */ |
| struct devlink_trap_policer_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_trap_policer_get_req_dump * |
| devlink_trap_policer_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_trap_policer_get_req_dump)); |
| } |
| void |
| devlink_trap_policer_get_req_dump_free(struct devlink_trap_policer_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) |
| { |
| 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_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); |
| 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_policer_get_list { |
| struct devlink_trap_policer_get_list *next; |
| struct devlink_trap_policer_get_rsp obj __attribute__((aligned(8))); |
| }; |
| |
| void |
| devlink_trap_policer_get_list_free(struct devlink_trap_policer_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); |
| |
| /* ============== 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_policer_id:1; |
| __u32 trap_policer_rate:1; |
| __u32 trap_policer_burst:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 trap_policer_id; |
| __u64 trap_policer_rate; |
| __u64 trap_policer_burst; |
| }; |
| |
| static inline struct devlink_trap_policer_set_req * |
| devlink_trap_policer_set_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_trap_policer_set_req)); |
| } |
| void |
| devlink_trap_policer_set_req_free(struct devlink_trap_policer_set_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_policer_set_req_set_trap_policer_id(struct devlink_trap_policer_set_req *req, |
| __u32 trap_policer_id) |
| { |
| 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; |
| } |
| |
| /* |
| * Get trap policer instances. |
| */ |
| int devlink_trap_policer_set(struct ynl_sock *ys, |
| struct devlink_trap_policer_set_req *req); |
| |
| /* ============== 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_health_reporter_test_req * |
| devlink_health_reporter_test_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_health_reporter_test_req)); |
| } |
| void |
| devlink_health_reporter_test_req_free(struct devlink_health_reporter_test_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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; |
| } |
| |
| /* |
| * Test health reporter instances. |
| */ |
| int devlink_health_reporter_test(struct ynl_sock *ys, |
| struct devlink_health_reporter_test_req *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 port_index:1; |
| __u32 rate_node_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| char *rate_node_name; |
| }; |
| |
| static inline struct devlink_rate_get_req *devlink_rate_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_rate_get_req)); |
| } |
| void devlink_rate_get_req_free(struct devlink_rate_get_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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, |
| 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_rsp { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 port_index:1; |
| __u32 rate_node_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 port_index; |
| char *rate_node_name; |
| }; |
| |
| void devlink_rate_get_rsp_free(struct devlink_rate_get_rsp *rsp); |
| |
| /* |
| * Get rate instances. |
| */ |
| struct devlink_rate_get_rsp * |
| devlink_rate_get(struct ynl_sock *ys, struct devlink_rate_get_req *req); |
| |
| /* DEVLINK_CMD_RATE_GET - dump */ |
| struct devlink_rate_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_rate_get_req_dump * |
| devlink_rate_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_rate_get_req_dump)); |
| } |
| void devlink_rate_get_req_dump_free(struct devlink_rate_get_req_dump *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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); |
| |
| /* ============== DEVLINK_CMD_RATE_SET ============== */ |
| /* DEVLINK_CMD_RATE_SET - do */ |
| struct devlink_rate_set_req { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __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; |
| 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_set_req *devlink_rate_set_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_rate_set_req)); |
| } |
| void devlink_rate_set_req_free(struct devlink_rate_set_req *req); |
| |
| static inline void |
| devlink_rate_set_req_set_bus_name(struct devlink_rate_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_rate_set_req_set_dev_name(struct devlink_rate_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_rate_set_req_set_rate_node_name(struct devlink_rate_set_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_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; |
| } |
| |
| /* |
| * 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 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; |
| 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_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; |
| } |
| |
| /* |
| * Create rate instances. |
| */ |
| int devlink_rate_new(struct ynl_sock *ys, struct devlink_rate_new_req *req); |
| |
| /* ============== 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_del_req *devlink_rate_del_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_rate_del_req)); |
| } |
| void devlink_rate_del_req_free(struct devlink_rate_del_req *req); |
| |
| static inline void |
| 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); |
| 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_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); |
| 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_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; |
| } |
| |
| /* |
| * 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 */ |
| struct devlink_linecard_get_req { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 linecard_index:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 linecard_index; |
| }; |
| |
| static inline struct devlink_linecard_get_req * |
| devlink_linecard_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_linecard_get_req)); |
| } |
| void devlink_linecard_get_req_free(struct devlink_linecard_get_req *req); |
| |
| static inline void |
| devlink_linecard_get_req_set_bus_name(struct devlink_linecard_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_linecard_get_req_set_dev_name(struct devlink_linecard_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_linecard_get_req_set_linecard_index(struct devlink_linecard_get_req *req, |
| __u32 linecard_index) |
| { |
| req->_present.linecard_index = 1; |
| req->linecard_index = linecard_index; |
| } |
| |
| struct devlink_linecard_get_rsp { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| __u32 linecard_index:1; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| __u32 linecard_index; |
| }; |
| |
| void devlink_linecard_get_rsp_free(struct devlink_linecard_get_rsp *rsp); |
| |
| /* |
| * Get line card instances. |
| */ |
| struct devlink_linecard_get_rsp * |
| devlink_linecard_get(struct ynl_sock *ys, struct devlink_linecard_get_req *req); |
| |
| /* DEVLINK_CMD_LINECARD_GET - dump */ |
| struct devlink_linecard_get_req_dump { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_linecard_get_req_dump * |
| devlink_linecard_get_req_dump_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_linecard_get_req_dump)); |
| } |
| void |
| devlink_linecard_get_req_dump_free(struct devlink_linecard_get_req_dump *req); |
| |
| static inline void |
| devlink_linecard_get_req_dump_set_bus_name(struct devlink_linecard_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_linecard_get_req_dump_set_dev_name(struct devlink_linecard_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_linecard_get_list { |
| struct devlink_linecard_get_list *next; |
| struct devlink_linecard_get_rsp obj __attribute__((aligned(8))); |
| }; |
| |
| void devlink_linecard_get_list_free(struct devlink_linecard_get_list *rsp); |
| |
| 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 { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| static inline struct devlink_selftests_get_req * |
| devlink_selftests_get_req_alloc(void) |
| { |
| return calloc(1, sizeof(struct devlink_selftests_get_req)); |
| } |
| void devlink_selftests_get_req_free(struct devlink_selftests_get_req *req); |
| |
| static inline void |
| devlink_selftests_get_req_set_bus_name(struct devlink_selftests_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_selftests_get_req_set_dev_name(struct devlink_selftests_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_selftests_get_rsp { |
| struct { |
| __u32 bus_name_len; |
| __u32 dev_name_len; |
| } _present; |
| |
| char *bus_name; |
| char *dev_name; |
| }; |
| |
| void devlink_selftests_get_rsp_free(struct devlink_selftests_get_rsp *rsp); |
| |
| /* |
| * Get device selftest instances. |
| */ |
| struct devlink_selftests_get_rsp * |
| devlink_selftests_get(struct ynl_sock *ys, |
| struct devlink_selftests_get_req *req); |
| |
| /* 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))); |
| }; |
| |
| 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 */ |