1 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2 /* Do not edit directly, auto-generated from: */
3 /* Documentation/netlink/specs/devlink.yaml */
4 /* YNL-GEN user header */
6 #ifndef _LINUX_DEVLINK_GEN_H
7 #define _LINUX_DEVLINK_GEN_H
11 #include <linux/types.h>
12 #include <linux/devlink.h>
16 extern const struct ynl_family ynl_devlink_family;
19 const char *devlink_op_str(int op);
21 /* Common nested types */
22 struct devlink_dl_info_version {
24 __u32 info_version_name_len;
25 __u32 info_version_value_len;
28 char *info_version_name;
29 char *info_version_value;
32 struct devlink_dl_reload_stats_entry {
34 __u32 reload_stats_limit:1;
35 __u32 reload_stats_value:1;
38 __u8 reload_stats_limit;
39 __u32 reload_stats_value;
42 struct devlink_dl_reload_act_stats {
43 unsigned int n_reload_stats_entry;
44 struct devlink_dl_reload_stats_entry *reload_stats_entry;
47 struct devlink_dl_reload_act_info {
49 __u32 reload_action:1;
53 unsigned int n_reload_action_stats;
54 struct devlink_dl_reload_act_stats *reload_action_stats;
57 struct devlink_dl_reload_stats {
58 unsigned int n_reload_action_info;
59 struct devlink_dl_reload_act_info *reload_action_info;
62 struct devlink_dl_dev_stats {
65 __u32 remote_reload_stats:1;
68 struct devlink_dl_reload_stats reload_stats;
69 struct devlink_dl_reload_stats remote_reload_stats;
72 /* ============== DEVLINK_CMD_GET ============== */
73 /* DEVLINK_CMD_GET - do */
74 struct devlink_get_req {
84 static inline struct devlink_get_req *devlink_get_req_alloc(void)
86 return calloc(1, sizeof(struct devlink_get_req));
88 void devlink_get_req_free(struct devlink_get_req *req);
91 devlink_get_req_set_bus_name(struct devlink_get_req *req, const char *bus_name)
94 req->_present.bus_name_len = strlen(bus_name);
95 req->bus_name = malloc(req->_present.bus_name_len + 1);
96 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
97 req->bus_name[req->_present.bus_name_len] = 0;
100 devlink_get_req_set_dev_name(struct devlink_get_req *req, const char *dev_name)
103 req->_present.dev_name_len = strlen(dev_name);
104 req->dev_name = malloc(req->_present.dev_name_len + 1);
105 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
106 req->dev_name[req->_present.dev_name_len] = 0;
109 struct devlink_get_rsp {
113 __u32 reload_failed:1;
114 __u32 reload_action:1;
122 struct devlink_dl_dev_stats dev_stats;
125 void devlink_get_rsp_free(struct devlink_get_rsp *rsp);
128 * Get devlink instances.
130 struct devlink_get_rsp *
131 devlink_get(struct ynl_sock *ys, struct devlink_get_req *req);
133 /* DEVLINK_CMD_GET - dump */
134 struct devlink_get_list {
135 struct devlink_get_list *next;
136 struct devlink_get_rsp obj __attribute__ ((aligned (8)));
139 void devlink_get_list_free(struct devlink_get_list *rsp);
141 struct devlink_get_list *devlink_get_dump(struct ynl_sock *ys);
143 /* ============== DEVLINK_CMD_INFO_GET ============== */
144 /* DEVLINK_CMD_INFO_GET - do */
145 struct devlink_info_get_req {
155 static inline struct devlink_info_get_req *devlink_info_get_req_alloc(void)
157 return calloc(1, sizeof(struct devlink_info_get_req));
159 void devlink_info_get_req_free(struct devlink_info_get_req *req);
162 devlink_info_get_req_set_bus_name(struct devlink_info_get_req *req,
163 const char *bus_name)
166 req->_present.bus_name_len = strlen(bus_name);
167 req->bus_name = malloc(req->_present.bus_name_len + 1);
168 memcpy(req->bus_name, bus_name, req->_present.bus_name_len);
169 req->bus_name[req->_present.bus_name_len] = 0;
172 devlink_info_get_req_set_dev_name(struct devlink_info_get_req *req,
173 const char *dev_name)
176 req->_present.dev_name_len = strlen(dev_name);
177 req->dev_name = malloc(req->_present.dev_name_len + 1);
178 memcpy(req->dev_name, dev_name, req->_present.dev_name_len);
179 req->dev_name[req->_present.dev_name_len] = 0;
182 struct devlink_info_get_rsp {
186 __u32 info_driver_name_len;
187 __u32 info_serial_number_len;
192 char *info_driver_name;
193 char *info_serial_number;
194 unsigned int n_info_version_fixed;
195 struct devlink_dl_info_version *info_version_fixed;
196 unsigned int n_info_version_running;
197 struct devlink_dl_info_version *info_version_running;
198 unsigned int n_info_version_stored;
199 struct devlink_dl_info_version *info_version_stored;
202 void devlink_info_get_rsp_free(struct devlink_info_get_rsp *rsp);
205 * Get device information, like driver name, hardware and firmware versions etc.
207 struct devlink_info_get_rsp *
208 devlink_info_get(struct ynl_sock *ys, struct devlink_info_get_req *req);
210 /* DEVLINK_CMD_INFO_GET - dump */
211 struct devlink_info_get_list {
212 struct devlink_info_get_list *next;
213 struct devlink_info_get_rsp obj __attribute__ ((aligned (8)));
216 void devlink_info_get_list_free(struct devlink_info_get_list *rsp);
218 struct devlink_info_get_list *devlink_info_get_dump(struct ynl_sock *ys);
220 #endif /* _LINUX_DEVLINK_GEN_H */