Lines Matching refs:fmsg

6071 	struct devlink_fmsg *fmsg;  in devlink_fmsg_alloc()  local
6073 fmsg = kzalloc(sizeof(*fmsg), GFP_KERNEL); in devlink_fmsg_alloc()
6074 if (!fmsg) in devlink_fmsg_alloc()
6077 INIT_LIST_HEAD(&fmsg->item_list); in devlink_fmsg_alloc()
6079 return fmsg; in devlink_fmsg_alloc()
6082 static void devlink_fmsg_free(struct devlink_fmsg *fmsg) in devlink_fmsg_free() argument
6086 list_for_each_entry_safe(item, tmp, &fmsg->item_list, list) { in devlink_fmsg_free()
6090 kfree(fmsg); in devlink_fmsg_free()
6093 static int devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, in devlink_fmsg_nest_common() argument
6103 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_nest_common()
6108 int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_start() argument
6110 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_start()
6113 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START); in devlink_fmsg_obj_nest_start()
6117 static int devlink_fmsg_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_nest_end() argument
6119 if (fmsg->putting_binary) in devlink_fmsg_nest_end()
6122 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END); in devlink_fmsg_nest_end()
6125 int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_end() argument
6127 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_end()
6130 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_obj_nest_end()
6136 static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_put_name() argument
6140 if (fmsg->putting_binary) in devlink_fmsg_put_name()
6154 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_name()
6159 int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_pair_nest_start() argument
6163 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_start()
6166 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_PAIR_NEST_START); in devlink_fmsg_pair_nest_start()
6170 err = devlink_fmsg_put_name(fmsg, name); in devlink_fmsg_pair_nest_start()
6178 int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_pair_nest_end() argument
6180 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_end()
6183 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_pair_nest_end()
6187 int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_arr_pair_nest_start() argument
6192 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_start()
6195 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_arr_pair_nest_start()
6199 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START); in devlink_fmsg_arr_pair_nest_start()
6207 int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_arr_pair_nest_end() argument
6211 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_end()
6214 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
6218 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
6226 int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_binary_pair_nest_start() argument
6231 err = devlink_fmsg_arr_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_nest_start()
6235 fmsg->putting_binary = true; in devlink_fmsg_binary_pair_nest_start()
6240 int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_binary_pair_nest_end() argument
6242 if (!fmsg->putting_binary) in devlink_fmsg_binary_pair_nest_end()
6245 fmsg->putting_binary = false; in devlink_fmsg_binary_pair_nest_end()
6246 return devlink_fmsg_arr_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_nest_end()
6250 static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg, in devlink_fmsg_put_value() argument
6267 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_value()
6272 int devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value) in devlink_fmsg_bool_put() argument
6274 if (fmsg->putting_binary) in devlink_fmsg_bool_put()
6277 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG); in devlink_fmsg_bool_put()
6281 int devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value) in devlink_fmsg_u8_put() argument
6283 if (fmsg->putting_binary) in devlink_fmsg_u8_put()
6286 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8); in devlink_fmsg_u8_put()
6290 int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value) in devlink_fmsg_u32_put() argument
6292 if (fmsg->putting_binary) in devlink_fmsg_u32_put()
6295 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32); in devlink_fmsg_u32_put()
6299 int devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value) in devlink_fmsg_u64_put() argument
6301 if (fmsg->putting_binary) in devlink_fmsg_u64_put()
6304 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64); in devlink_fmsg_u64_put()
6308 int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value) in devlink_fmsg_string_put() argument
6310 if (fmsg->putting_binary) in devlink_fmsg_string_put()
6313 return devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, in devlink_fmsg_string_put()
6318 int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, in devlink_fmsg_binary_put() argument
6321 if (!fmsg->putting_binary) in devlink_fmsg_binary_put()
6324 return devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY); in devlink_fmsg_binary_put()
6328 int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_bool_pair_put() argument
6333 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_bool_pair_put()
6337 err = devlink_fmsg_bool_put(fmsg, value); in devlink_fmsg_bool_pair_put()
6341 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_bool_pair_put()
6349 int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u8_pair_put() argument
6354 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u8_pair_put()
6358 err = devlink_fmsg_u8_put(fmsg, value); in devlink_fmsg_u8_pair_put()
6362 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u8_pair_put()
6370 int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u32_pair_put() argument
6375 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u32_pair_put()
6379 err = devlink_fmsg_u32_put(fmsg, value); in devlink_fmsg_u32_pair_put()
6383 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u32_pair_put()
6391 int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u64_pair_put() argument
6396 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u64_pair_put()
6400 err = devlink_fmsg_u64_put(fmsg, value); in devlink_fmsg_u64_pair_put()
6404 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u64_pair_put()
6412 int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_string_pair_put() argument
6417 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_string_pair_put()
6421 err = devlink_fmsg_string_put(fmsg, value); in devlink_fmsg_string_pair_put()
6425 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_string_pair_put()
6433 int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_binary_pair_put() argument
6441 err = devlink_fmsg_binary_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_put()
6449 err = devlink_fmsg_binary_put(fmsg, value + offset, data_size); in devlink_fmsg_binary_pair_put()
6458 end_err = devlink_fmsg_binary_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_put()
6512 devlink_fmsg_prepare_skb(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_prepare_skb() argument
6524 list_for_each_entry(item, &fmsg->item_list, list) { in devlink_fmsg_prepare_skb()
6561 static int devlink_fmsg_snd(struct devlink_fmsg *fmsg, in devlink_fmsg_snd() argument
6586 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_snd()
6615 static int devlink_fmsg_dumpit(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_dumpit() argument
6631 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_dumpit()
7333 struct devlink_fmsg *fmsg; in devlink_nl_cmd_health_reporter_diagnose_doit() local
7345 fmsg = devlink_fmsg_alloc(); in devlink_nl_cmd_health_reporter_diagnose_doit()
7346 if (!fmsg) { in devlink_nl_cmd_health_reporter_diagnose_doit()
7351 err = devlink_fmsg_obj_nest_start(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
7355 err = reporter->ops->diagnose(reporter, fmsg, info->extack); in devlink_nl_cmd_health_reporter_diagnose_doit()
7359 err = devlink_fmsg_obj_nest_end(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
7363 err = devlink_fmsg_snd(fmsg, info, in devlink_nl_cmd_health_reporter_diagnose_doit()
7367 devlink_fmsg_free(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()