Lines Matching refs:fmsg
5250 struct devlink_fmsg *fmsg; in devlink_fmsg_alloc() local
5252 fmsg = kzalloc(sizeof(*fmsg), GFP_KERNEL); in devlink_fmsg_alloc()
5253 if (!fmsg) in devlink_fmsg_alloc()
5256 INIT_LIST_HEAD(&fmsg->item_list); in devlink_fmsg_alloc()
5258 return fmsg; in devlink_fmsg_alloc()
5261 static void devlink_fmsg_free(struct devlink_fmsg *fmsg) in devlink_fmsg_free() argument
5265 list_for_each_entry_safe(item, tmp, &fmsg->item_list, list) { in devlink_fmsg_free()
5269 kfree(fmsg); in devlink_fmsg_free()
5272 static int devlink_fmsg_nest_common(struct devlink_fmsg *fmsg, in devlink_fmsg_nest_common() argument
5282 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_nest_common()
5287 int devlink_fmsg_obj_nest_start(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_start() argument
5289 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_start()
5292 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_OBJ_NEST_START); in devlink_fmsg_obj_nest_start()
5296 static int devlink_fmsg_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_nest_end() argument
5298 if (fmsg->putting_binary) in devlink_fmsg_nest_end()
5301 return devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_NEST_END); in devlink_fmsg_nest_end()
5304 int devlink_fmsg_obj_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_obj_nest_end() argument
5306 if (fmsg->putting_binary) in devlink_fmsg_obj_nest_end()
5309 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_obj_nest_end()
5315 static int devlink_fmsg_put_name(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_put_name() argument
5319 if (fmsg->putting_binary) in devlink_fmsg_put_name()
5333 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_name()
5338 int devlink_fmsg_pair_nest_start(struct devlink_fmsg *fmsg, const char *name) in devlink_fmsg_pair_nest_start() argument
5342 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_start()
5345 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_PAIR_NEST_START); in devlink_fmsg_pair_nest_start()
5349 err = devlink_fmsg_put_name(fmsg, name); in devlink_fmsg_pair_nest_start()
5357 int devlink_fmsg_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_pair_nest_end() argument
5359 if (fmsg->putting_binary) in devlink_fmsg_pair_nest_end()
5362 return devlink_fmsg_nest_end(fmsg); in devlink_fmsg_pair_nest_end()
5366 int devlink_fmsg_arr_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_arr_pair_nest_start() argument
5371 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_start()
5374 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_arr_pair_nest_start()
5378 err = devlink_fmsg_nest_common(fmsg, DEVLINK_ATTR_FMSG_ARR_NEST_START); in devlink_fmsg_arr_pair_nest_start()
5386 int devlink_fmsg_arr_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_arr_pair_nest_end() argument
5390 if (fmsg->putting_binary) in devlink_fmsg_arr_pair_nest_end()
5393 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
5397 err = devlink_fmsg_nest_end(fmsg); in devlink_fmsg_arr_pair_nest_end()
5405 int devlink_fmsg_binary_pair_nest_start(struct devlink_fmsg *fmsg, in devlink_fmsg_binary_pair_nest_start() argument
5410 err = devlink_fmsg_arr_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_nest_start()
5414 fmsg->putting_binary = true; in devlink_fmsg_binary_pair_nest_start()
5419 int devlink_fmsg_binary_pair_nest_end(struct devlink_fmsg *fmsg) in devlink_fmsg_binary_pair_nest_end() argument
5421 if (!fmsg->putting_binary) in devlink_fmsg_binary_pair_nest_end()
5424 fmsg->putting_binary = false; in devlink_fmsg_binary_pair_nest_end()
5425 return devlink_fmsg_arr_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_nest_end()
5429 static int devlink_fmsg_put_value(struct devlink_fmsg *fmsg, in devlink_fmsg_put_value() argument
5446 list_add_tail(&item->list, &fmsg->item_list); in devlink_fmsg_put_value()
5451 int devlink_fmsg_bool_put(struct devlink_fmsg *fmsg, bool value) in devlink_fmsg_bool_put() argument
5453 if (fmsg->putting_binary) in devlink_fmsg_bool_put()
5456 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_FLAG); in devlink_fmsg_bool_put()
5460 int devlink_fmsg_u8_put(struct devlink_fmsg *fmsg, u8 value) in devlink_fmsg_u8_put() argument
5462 if (fmsg->putting_binary) in devlink_fmsg_u8_put()
5465 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U8); in devlink_fmsg_u8_put()
5469 int devlink_fmsg_u32_put(struct devlink_fmsg *fmsg, u32 value) in devlink_fmsg_u32_put() argument
5471 if (fmsg->putting_binary) in devlink_fmsg_u32_put()
5474 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U32); in devlink_fmsg_u32_put()
5478 int devlink_fmsg_u64_put(struct devlink_fmsg *fmsg, u64 value) in devlink_fmsg_u64_put() argument
5480 if (fmsg->putting_binary) in devlink_fmsg_u64_put()
5483 return devlink_fmsg_put_value(fmsg, &value, sizeof(value), NLA_U64); in devlink_fmsg_u64_put()
5487 int devlink_fmsg_string_put(struct devlink_fmsg *fmsg, const char *value) in devlink_fmsg_string_put() argument
5489 if (fmsg->putting_binary) in devlink_fmsg_string_put()
5492 return devlink_fmsg_put_value(fmsg, value, strlen(value) + 1, in devlink_fmsg_string_put()
5497 int devlink_fmsg_binary_put(struct devlink_fmsg *fmsg, const void *value, in devlink_fmsg_binary_put() argument
5500 if (!fmsg->putting_binary) in devlink_fmsg_binary_put()
5503 return devlink_fmsg_put_value(fmsg, value, value_len, NLA_BINARY); in devlink_fmsg_binary_put()
5507 int devlink_fmsg_bool_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_bool_pair_put() argument
5512 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_bool_pair_put()
5516 err = devlink_fmsg_bool_put(fmsg, value); in devlink_fmsg_bool_pair_put()
5520 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_bool_pair_put()
5528 int devlink_fmsg_u8_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u8_pair_put() argument
5533 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u8_pair_put()
5537 err = devlink_fmsg_u8_put(fmsg, value); in devlink_fmsg_u8_pair_put()
5541 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u8_pair_put()
5549 int devlink_fmsg_u32_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u32_pair_put() argument
5554 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u32_pair_put()
5558 err = devlink_fmsg_u32_put(fmsg, value); in devlink_fmsg_u32_pair_put()
5562 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u32_pair_put()
5570 int devlink_fmsg_u64_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_u64_pair_put() argument
5575 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_u64_pair_put()
5579 err = devlink_fmsg_u64_put(fmsg, value); in devlink_fmsg_u64_pair_put()
5583 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_u64_pair_put()
5591 int devlink_fmsg_string_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_string_pair_put() argument
5596 err = devlink_fmsg_pair_nest_start(fmsg, name); in devlink_fmsg_string_pair_put()
5600 err = devlink_fmsg_string_put(fmsg, value); in devlink_fmsg_string_pair_put()
5604 err = devlink_fmsg_pair_nest_end(fmsg); in devlink_fmsg_string_pair_put()
5612 int devlink_fmsg_binary_pair_put(struct devlink_fmsg *fmsg, const char *name, in devlink_fmsg_binary_pair_put() argument
5620 err = devlink_fmsg_binary_pair_nest_start(fmsg, name); in devlink_fmsg_binary_pair_put()
5628 err = devlink_fmsg_binary_put(fmsg, value + offset, data_size); in devlink_fmsg_binary_pair_put()
5637 end_err = devlink_fmsg_binary_pair_nest_end(fmsg); in devlink_fmsg_binary_pair_put()
5691 devlink_fmsg_prepare_skb(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_prepare_skb() argument
5703 list_for_each_entry(item, &fmsg->item_list, list) { in devlink_fmsg_prepare_skb()
5740 static int devlink_fmsg_snd(struct devlink_fmsg *fmsg, in devlink_fmsg_snd() argument
5765 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_snd()
5794 static int devlink_fmsg_dumpit(struct devlink_fmsg *fmsg, struct sk_buff *skb, in devlink_fmsg_dumpit() argument
5810 err = devlink_fmsg_prepare_skb(fmsg, skb, &index); in devlink_fmsg_dumpit()
6499 struct devlink_fmsg *fmsg; in devlink_nl_cmd_health_reporter_diagnose_doit() local
6511 fmsg = devlink_fmsg_alloc(); in devlink_nl_cmd_health_reporter_diagnose_doit()
6512 if (!fmsg) { in devlink_nl_cmd_health_reporter_diagnose_doit()
6517 err = devlink_fmsg_obj_nest_start(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
6521 err = reporter->ops->diagnose(reporter, fmsg, info->extack); in devlink_nl_cmd_health_reporter_diagnose_doit()
6525 err = devlink_fmsg_obj_nest_end(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()
6529 err = devlink_fmsg_snd(fmsg, info, in devlink_nl_cmd_health_reporter_diagnose_doit()
6533 devlink_fmsg_free(fmsg); in devlink_nl_cmd_health_reporter_diagnose_doit()